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