如图:4 便是iptables数据包命中规则后的执行动作,用-j选项来指定,后跟具体的动作。
常用的动作:
1.ACCEPT,DROP,REJECT
常用语filter表,用于配置黑白名单
2.SNAT,DNAT
常用于nat表,用于配置nat转换
3.当然还有其他的动作,如LOG,MASQUERADE,REDIRECT等。。。
这些不常用,自己作为开发也不搞运维,了解就好。这里主要总结
SNAT,DNAT两个动作。因为经常开发过程需要配置网络通畅,要么找其他人配置网络设备比较麻烦,要么自己配置代理转发,自己解决,多爽~~~
SNAT&DNAT的概念我不详细解释,
iptables -t nat -A POSTROUTING -p tcp --dport 10443 -j SNAT --to-source 172.29.50.12
# 将流过本机的,目标端口为10443的数据包,转换它的源IP为172.29.50.12
# 注意,根据iptables(1)数据流向,可知,改变源IP只能在数据出去的时候改变,也就是配置SNAT只能在POSTROUTING链中配置,在prerouting中配置会报错。
iptables -t nat -A PREROUTING -p tcp --dport 10443 -j DNAT --to-destination 10.29.4.71:10443
# 将流过本机的,目标端口为10443的数据包转换他的目标IP为10.29.4.71,且转换目标端口为10443.这里加了个:10443就是在转换IP的同时转换目标端口。
# 同理,改变目标IP也只能在PREROUTING ;链中,在postrouting,中配置也会报错。
注意:
想要Linux主机能够转发目标ip非本机的ip,需要配置ipforward。
打开系统的IP转发功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
不用重启,立即生效
sysctl -p
记住语法即可,