当前位置: > Linux服务器 > iptables >

iptables 转发

时间:2014-12-10 21:36来源:linux.it.net.cn 作者:IT
早先用iptables 的转发,是在2.4时代,记得当时是在linux上装了几台windows 2003 的虚拟机,vmware的虚拟机,目标是让guest机提供web服务,并且使用host机器的ip,这样做一个冗余为目标的负载均衡测试环境,在host机器上装的是redhat el3.8. 将host机器的80端口分发到每个虚拟机的81.最前端是haproxy做调度。美好的青春年代哦。。。一去不回了。

     今天再用iptables做转发,只是个小小的应用,因为一些商业的编译工具和matlab得license实在不够用,虽然是 float license,一旦项目紧张,license的检出是非常紧张的,决定找台linux去做个转发。实在是很好的办法。
首先要用iptables 的转发,就得打开转发开关
 echo '1' >/proc/sys/net/ipv4/ip_forward
查看下当前的配置情况:
iptables -L -n
如果没做任何配置,应该是这么个结果:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DNAT转发:将对1.2.3.4的1900端口请求转发到5.6.7.8的1900端口上,
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 1900 -j DNAT --to 5.6.7.8
SNAT转发: 将5.6.7.8的相应信息反馈到1.2.3.4的1900端口上,进而使1.2.3.4提供1900端口服务响应请求者
iptables -t nat -A POSTROUTING -d 5.6.7.8 -p tcp --dport 1900 -j SNAT --to 1.2.3.4
允许出口转发:
iptables -A FORWARD -o eth0 -d 1.2.3.4 -p tcp --dport 1900 -j ACCEPT
允许入口转发:
iptables -A FORWARD -i eth0 -s 5.6.7.8 -p tcp --sport 1900 -j ACCEPT

这样转发基本就配置完成了,保存重启 iptables:
/etc/rc.d/init.d/iptables save
/etc/rc.d/init.d/iptables restart
可以看下转发的状况:
tail /proc/net/ip_conntrack
如果做压力测试可以查看下流量情况,
watch -n 1 "/sbin/ifconfig eth0 | grep bytes"

嫌弃麻烦可以直接修改/etc/sysconfig/iptables
-A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 1900 -j DNAT --to-destination 5.6.7.8
-A POSTROUTING -d 5.6.7.8 -p tcp -m tcp --dport 1900 -j SNAT --to-source 1.2.3.4
-A FORWARD -d 1.2.3.4 -o eth0 -p tcp -m tcp --dport 1900 -j ACCEPT
-A FORWARD -s 1.2.3.4 -i eth0 -p tcp -m tcp --sport 1900 -j ACCEPT


(责任编辑:IT)
------分隔线----------------------------