Netfilter 如何理解数据包是相关的?

Netfilter 如何理解数据包是相关的?

conntrack匹配模块--ctstate参数支持RELATED数据包状态。例如,在活动 FTP 的情况下,Netfilter 如何知道从 FTP 服务器数据端口(TCP 端口 20)到客户端之前指定的非特权数据端口的连接是一个RELATED连接? Netfilter 是否有一些模块来描述 所支持的每个协议RELATED?最后但并非最不重要的一点是,是否有该状态支持的协议列表RELATED

答案1

各种互联网控制消息协议 (ICMP) 数据包可能与某些协议的连接(或此类连接的尝试)“相关”,但这些 ICMP 数据包与引起它们的协议不同,因此有“相关”概念。当主机或防火墙拒绝目标无法到达的 ICMP 数据包的 TCP 或 UDP 连接尝试时,可能会发生这种情况;允许RELATED让相关的 ICMP 数据包通过。 (TCP 确实有 RST,因此可能会也可能不会发出相关的 ICMP 响应,防火墙管理员可能会也可能不会允许 ICMP 回复...)

每个应用程序级协议(例如 FTP)都需要一个自定义模块,因为需要自定义代码来深入研究数据包并确定它是否以及如何与 netfilter 知道的其他任何内容相关。这些模块可以由任何人为任何应用程序编写,尽管检查哪些nf_conntrack_*文件可用可能是一个开始列表的好地方:

% print -l /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/net/netfilter/nf_conntrack_*(:t)
nf_conntrack_amanda.ko
nf_conntrack_broadcast.ko
nf_conntrack_ftp.ko
...

相关内容