在 这个文章里,我们配置了mq而且在后面的web界面里验证了已经有消息队列生成。但是细心的朋友应该会发现一个BUG,实验机器是2核4G无外网,但是是怎么登陆web界面的呢?
因为消息队列是一个很重要的一环啊,它就好比食道一样,食物通过食道才能到达胃进行吸收,同理activemq也要好好被保护起来。所以一般来说,mq本体的服务器是不配置外网的,但是会另找一个服务器建立一个转发规则,然后我们去访问“转发规则”服务器。
于是我们选择一台服务器,这个服务器几核几G不重要,就要求带宽要大一点点。
首先我们要打开linux的ipv4转发规则,# vim /etc/sysctl.conf,确定里面net.ipv4.ip_forward = 1,如图:
然后,需要#service network restart使其生效。
完事之后才是正式的配置iptables环节。
首先我们要明白我们的目的,
1)mq的web界面端口是8161,我们需要让mq服务器的8161信息可以抵达这个“转发服务器”;
2)而我们在web界面8161的一举一动也要能进入mq服务器;
所以我们需要在linux命令行里先后输入如下内容:
#iptables -A FORWARD -d 转发服务器内网ip/32 -p tcp -m tcp --dport 8161 -j ACCEPT
#iptables -A FORWARD -s 转发服务器内网ip/32 -p tcp -m tcp --dport 8161 -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8161 -j DNAT --to-destination mq服务器内网ip:8161
#iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8161 -j SNAT --to-source 转发服务器内网ip
输入之后,#service iptables save,#service iptables restart。
如果中途手抖了,输入错误,需要清空的话,命令是#iptables -F 和#iptables -F -t nat。
这样在启动mq之后,我们就可以访问这个“转发服务器”的外网ip地址:8161/admin这个网页来查看mq的实时情况了。
这里要注意一下,如果需要抹掉整个iptables规则,不是简单的# iptables -F 那么简单,因为这个命令下去,如果服务器配置了防火墙,而且默认的转发规则都是drop,那么很有可能这台服务器与网络直接断开!
正确的做法是先#iptables -P INPUT ACCEPT,确定#iptables -L的输出是ACCEPT而不是DROP,然后再#iptables -F。
更多iptables相关教程见以下内容:
CentOS 7.0关闭默认防火墙启用iptables防火墙
Ubuntu 14.04 配置iptables防火墙
Linux防火墙iptables详细教程
Linux下iptables防火墙设置