例子:负载均衡
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