Iptables作为linux的一个服务,可以提供数据包过滤、网络地址转换(nat)、数据包内容修改等功能。但是其实准确的来说,这些功能并不是iptables本身实现的,而位于linux内核中的netfilter才是防火墙真正的安全框架,iptables可以理解成一个命令行工具。
本篇就来讲一讲iptables,也为了后面理解kubernetes网络做铺垫。
基础概念
首先要了解iptables的两个概念:链和表。
-
链:iptables中的规则称为链,多条规则通过链表的数据结构进行连接。
-
表:表则是相同功能规则的集合,例如数据包过滤功能的规则在filter表中,提供网络地址转换功能的规则在nat表中。除了常用的filter和nat表,iptables还提供了mangle表,提供拆解报文,修改并重新封装报文的功能。raw表,用来关闭nat表上启用的连接追踪机制。
理解了链和表的概念,那规则到底何时触发呢,下面这张图请牢牢记住
可以看到iptables提供了五个钩子函数,prerouting、input、forward、output、postrouting,数据包在不同的生命周期会匹配对应时机的钩子函数中的规则。
根据流程图可以看出各个钩子函数的执