http://chenx1242.blog.51cto.com/10430133/1874225这个文章里,我们配置了mq而且在后面的web界面里验证了已经有消息队列生成。但是细心的朋友应该会发现一个BUG,实验机器是2核4G无外网,但是是怎么登陆web界面的呢?


因为消息队列是一个很重要的一环啊,它就好比食道一样,食物通过食道才能到达胃进行吸收,同理activemq也要好好被保护起来。所以一般来说,mq本体的服务器是不配置外网的,但是会另找一个服务器建立一个转发规则,然后我们去访问“转发规则”服务器。


于是我们选择一台服务器,这个服务器几核几G不重要,就要求带宽要大一点点。


首先我们要打开linux的ipv4转发规则,# vim /etc/sysctl.conf,确定里面net.ipv4.ip_forward = 1,如图:

wKioL1g1gwXxY7SJAABAKZwzR3w610.png


然后,需要#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

wKioL1hYm6iAZngZAABPjukYF_E366.png