例子:負載均衡
iptables -t nat -A PREROUTING -d 10.192.0.65/32 -p tcp -m tcp --dport 8080 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 10.1.160.14:8080
iptables -t nat -A POSTROUTING -d 10.1.160.14/32 -p tcp -m tcp --dport 8080 -j SNAT --to-source 10.192.0.65 tcp
iptables -t nat -A PREROUTING -d 10.192.0.65/32 -p tcp -m tcp --dport 8080 -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination 10.1.160.15:8080
iptables -t nat -A POSTROUTING -d 10.1.160.15/32 -p tcp -m tcp --dport 8080 -j SNAT --to-source 10.192.0.65 post
實現的目的:blog
即負載均衡地訪問10.1.160.14和10.1.160.15ip
注意:須要在10.192.0.65上打開net.ipv4.ip_forward=1get
修改/etc/sysctl.conf文件 ,而後執行sysctl -p命令it
原理解釋:io
第一條使用statistic模塊,模塊的模式是nth,—every 2是每兩個數據包,—packet 0是第一個數據包,table
第二條iptables rule匹配時,第一條規則匹配上的數據已經被拿走,剩下的數據包從新計算。原理
若是有計數器的話:奇數號數據包被第一條規則匹配,偶數號數據包被第二條規則匹配。
對iptables的一些理解
tables:表是對鏈功能的概括。
如filter 表是對數據包的過濾,根據方向的不一樣有INPUT,OUTPUT,FORWARDING三條鏈
mangle表能夠改變咱們能夠改變不一樣的包及包 頭的內容,好比 TTL,TOS或MARK。數據包必然具備包頭,因此它適用於每條鏈,也就是在沒條鏈那裏均可以根據需求實現mangle的功能
nat表是進行NAT轉換的,替換source ip地址是snat,替換destination ip是dnat。
能夠進行snat轉換的是有postrouting鏈和output鏈
能夠進行dnat轉換的是隻有prerouting