mangle表
建议不要在此表作任何过滤
表中仅有的几种操作
TOS 设置或改变数据包的服务类型域
TTL 数据包的生存时间域
MARK 设置特殊的标记
nat表
转换包的源或目标地址,只有流的第一个包会匹配,其后的包会自动处理
DNAT destination network address translation
SNAT source network address translation
MASQUERADE 与SNAT作用一样,但会查找可用的IP,负载比SNAT高
filter表
包过滤工作的主要地方
状态机制
一种连接跟踪机制,有 NEW, ESTABLISHED, RELATED, INVALID,使用--state匹配操作
除本地产生的包由OUTPUT链处理外,所有连接跟踪都是在PREROUTING链处理
(NAT表)
tcp SYN是NEW,SYN/ACK就是ESTABLISHED
udp 发送数据包是NEW,收到回复数据就是ESTABLISHED
ICMP同上
TCP发送的SYN包和UDP的数据包到目标网络有问题不可达时,数据包最后经过的一个路由会返回一个ICMP信息提示网络不可达,这种数据包是RELATED
FTP连接建立 的信息在协议数据包的数据域内,而不是在可分析的协议头里,因此,防火墙不知如何处理相应的数据包,解决的方法是为连接跟踪模拟加一个特殊的helper,以便能检测到那些信息,这样连接可以被跟踪,状态是RELATED.
conntrack helper可以编入内核,也可编为模块,用下面命令加载
modprobe ip_conntrack_*
连接跟踪不处理NAT
iptables-save iptables-restore
若用脚本增减iptables规则,每一次都会将iptables的规则集从内核空间提取出来,增删或修改后再插入内核空间,会花费更多的时间.
save一次将内核空间的规则集保存,restore一次将规则集载入内核空间.可以节省时间,但缺点不够脚本灵活.
iptables-save [-c] [-t table]
-c 保存包和字节计数器的值
-t 后面加上表名,保存特定表的规则集
iptables-restore [-c] [-n]
-c 同save
-n 不覆盖己有的规则