iptables 的状态检测机制的状态检测机制 1
什么是状态检测什么是状态检测什么是状态检测 每个网络连接包括以下信息:源地址、目的地址、源端口和目的端口,叫作套接字对(socket pairs);协议类型、连接状态(TCP 协议)和超时时间等
防火墙把这些信息叫作状态(stateful),能够检测每个连接状态的防火墙叫作状态包过滤防火墙
它除了能够完成简单包过滤防火墙的包过滤工作外,还在自己的内存中维护一个跟踪连接状态的表,比简单包过滤防火墙具有更大的安全性
iptables 中的状态检测功能是由 state 选项来实现的
对这个选项,在iptables 的手册页中有以下描述: state 这个模块能够跟踪分组的连接状态(即状态检测)
--state state 这里,state 是一个用逗号分割的列表,表示要匹配的连接状态
有效的状态选项包括:INVAILD,表示分组对应的连接是未知的; ESTABLISHED,表示分组对应的连接已经进行了双向的分组传输,也就是说连接已经建立;NEW,表示这个分组需要发起一个连接,或者说,分组对应 的连接在两个方向上都没有进行过分组传输;RELATED,表示分组要发起一个新的连接,但是这个连接和一个现有的连接有关,例如:FTP 的数据传输连接和控制连接之间就是RELATED 关系
对于本地产生分组,在 PREROUTING 或者OUTPUT 链中都可以对连接的状态进行跟踪
在进行状态检测之前,需要重组分组的分片
这就是为什么在 iptables中不 再 使 用 ipchains 的ip_always_defrag 开 关
UDP 和 TCP 连接的状态表由/proc/net/ip_conntrack 进行维护
稍 后 我 们 再介 绍 它的内容
状态表能够保 存的最 大连接数保 存在/proc/sys/net/ipv4