docker,K8s的内部网络很多是基于Iptables实现的。这篇文章就Iptables进行简单的介绍。
简介
基本的Iptables由4张表和5条链组成。4张表分别是raw表、mangle表、nat表,以及filter表。5条链分别是PREROUTING、INPUT、FORWARDING、OUTPUT,以及POSTROUTIONG。docker和k8s在这五条链的基础上又增加了,诸如DOCKER-USER、KUBE-SERVICES等链。本文仅对基本的表、链进行介绍,docker、k8s后续我们在讨论。
raw表
raw表的优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能;raw 表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链 上,raw表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.
raw表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。
mangle表
mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。例如,你可以使用mangle匹配来改变包的TOS(type-