利用iptables端口映射实现跨多机房内网访问

Posted: 2009年10月9日星期五
公司在外地的移动机房,由于公司采用的电信通网络,公司的机房跟外地的移动机房连接及其不稳定,丢包以及连接中断是家常便饭,由于需要程序需要数据交换,这种网络状况基本上不可能,公司放了一个机器放在一个双线机房用iptables端口转发实现数据交换,进行服务器维护,但是最近公司有个需求需要直接用公司的机器访问,外地移动机房内的内网DB,这台DB没有外网地址就得进行多次转发。由于放在移动机房的只有一个linux机器具有外网IP,而这台机器上也有mysql,占用了3306端口,这就需要把移动机房中的转发机器的其它端口转发到内网DB的3306上,同时为安全起见只允许机房的ip地址访问转发的端口,具体需求拓扑如下所示:

下面是实现过程
在中转机房的机器上执行

iptables -A INPUT -p tcp -s 219.x.x.x -d 220.x.x.x --dport 5300 -j ACCEPT
iptables -A PREROUTING -s 219.x.x.x -d 220.x.x.x -p tcp --dport 5300 -j DNAT --to-destination 221.x.x.x
iptables -A POSTROUTING -p tcp --dport 5300 -j SNAT --to-source 220.x.x.x


在移动机房的机器上执行下面的语句

iptables -A PREROUTING -d 221.x.x.x -p tcp --dport 5300 -j DNAT --to-destination 192.168.0.6:3306
iptables -A POSTROUTING -p tcp --dport 3306 -j SNAT --to-source 192.168.0.5


通过执行上面的语句,公司的机器可以通过直接访问中转机房的220.x.x.x的5300直接访问到移动机房内网的机器

0 评论: