使iptables网关出口IP动态变化

    Linux自带的防火墙iptables,拿来做网关非常容易(/etc/sysconfig/iptables)。

*filter 
-A INPUT -p tcp -j ACCEPT 
-A INPUT -p udp -j ACCEPT 
-A OUTPUT -p tcp -j ACCEPT 
-A OUTPUT -p udp -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -i eth1 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -i eth+ -j ACCEPT 
COMMIT 
*nat 
-A POSTROUTING -o eth0 -j MASQUERADE 
COMMIT

    另外, 要开启操作系统的包转发功能: 

sudo sysctl -w net.ipv4.ip_forward=1

    其实主要就是NAT表里的 MASQUERADE 选项,他会自动选择出口。如果要给内网指定的IP段分配特定的出口,则需要使用到SNAT

*nat 
-A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to-source 183.10.31.88      
COMMIT

    好,那如果由于压力大。则需要大量端口,那么就需要多个出口IP。这时就需要用到IP池了:

*nat 
-A POSTROUTING -o eth0 -j SNAT --to-source 183.10.31.100-183.10.31.200 
COMMIT

   内外网的端口映射(DMZ)用DNAT也轻松搞定:

*nat
-A POSTROUTING -d 192.168.10.31 -j MASQUERADE
-A PREROUTING -p tcp -d 183.10.31.122 --dport 3306 -j DNAT --to-destination 192.168.10.31:3306
COMMIT

  此时再对iptables做下优化,就大功告成了!

posted @ 2013-07-19 18:23  higkoo  阅读(1652)  评论(0编辑  收藏  举报