54 CHEN

用iptables做两机之间的端口转发

 [文章作者:陈臻 本文版本:v1.0 最后修改:2009.2.19 转载请注明原文链接:http://www.54chen.com/c/264]

以前发过一篇利用iptables做本机的端口转发的文章,利用简单的地址转换的原理,可以将两台互相可访问的机器利用iptables转发,这样很容易实现类似透明代理的功能,当然,这个代理不会有缓存的。:)

假如我希望把对 1.2.4.5:8080的访问都转向 1.2.6.9:80:

IP包来到之后,修改目的地址,使之转向目标机器的目标端口,在.5这个机器上:

iptables -t nat -A PREROUTING -d 1.2.4.5 -p tcp –dport 8080 -j DNAT –to 1.2.6.9:80

IP包返回的时候,修改源地址(源端口),使之符合IP协议,正确返回,还是在.5这个机器上:

iptables -t nat -A POSTROUTING -d 1.2.6.9 -p tcp –dport 80 -j SNAT –to 1.2.4.5:8080

然后我们需要在.5作系统上打开IP转发:

echo ‘1’ > /proc/sys/net/ipv4/ip_forward

最后再设置.5的连接状态

iptables -A FORWARD -o eth0 -d 1.2.4.5 -p tcp –dport 8080 -j ACCEPT

iptables -A FORWARD -i eth0 -s 1.2.6.9 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT  

附全部脚本(不关.9的事,全是在.5上)

iptables -t nat -A POSTROUTING -d 1.2.4.5 -p tcp –dport 8080 -j DNAT –to 1.2.6.9:80

iptables -t nat -A PREROUTING -d 1.2.4.5 -p tcp –dport 8080 -j DNAT –to 1.2.6.9:80

iptables -t nat -A POSTROUTING -d 1.2.6.9 -p tcp –dport 80 -j SNAT –to 1.2.4.5:8080

iptables -A FORWARD -i eth0 -s 1.2.6.9 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT

iptables -A FORWARD -o eth0 -d 1.2.4.5 -p tcp –dport 8080 -j ACCEPT

原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]

Posted by 54chen linux

« tomcat,resin,oc4j,jboss大比拼 d.yang同志的无名氏的代码学习记录-flex 2d rpg游戏demo »