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)的特定值。