34.2. 连接跟踪简介
在防火墙中,Netfilter
框架过滤来自外部网络的数据包。数据包到达后,Netfilter
分配一个连接跟踪条目。连接跟踪是逻辑网络的一个 Linux 内核网络功能,其跟踪这些连接中的连接,并识别数据包流。此功能过滤并分析每个数据包,设置连接跟踪表以存储连接状态,并根据识别的数据包更新连接状态。例如,如果是 FTP 连接,Netfilter
会分配一个连接跟踪条目,以确保 FTP 连接的所有数据包都以同样的方式工作。连接跟踪条目存储一个 Netfilter
标记,并在内存表中跟踪连接状态信息,其中新数据包元组与现有条目进行映射。如果数据包元组没有与现有条目进行映射,则数据包会添加一个新的连接跟踪条目,该条目将对同一连接的数据包进行分组。
您可以控制和分析网络接口上的流量。tc
流量控制器工具使用 qdisc
规程配置网络中的数据包调度程序。qdisc
内核配置的排队规程将数据包排队到接口。通过使用 qdisc
,内核在网络接口传输流量前捕获所有流量。另外,要限制属于同一连接的数据包的带宽率,请使用 tc qdisc
命令。
要把连接跟踪标记中的数据检索到各个字段,请使用带有 ctinfo
模块的 tc
工具以及 connmark
功能。对于存储数据包标记信息,ctinfo
模块将 Netfilter
标记和连接状态信息复制到套接字缓冲区(skb
)标记元数据字段中。
通过物理介质传输数据包会删除数据包的所有元数据。在数据包丢失其元数据之前,ctinfo
模块会将 Netfilter
标记值映射并复制到数据包 IP
字段中的 Diffserv 代码点(DSCP)的特定值。