早先用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) |