首页/系统/Linux 运维命令速查/conntrack 连接跟踪表管理
网络命令82 条

conntrack 连接跟踪表管理

NAT/有状态防火墙背后都是 conntrack 表:查看活跃会话、统计错误、清理单条记录,表满时全靠它诊断。

Linux 运维命令速查系统更新于 2026-10-13

conntrack 是什么

做地址转换或运行有状态防火墙的内核里,每条活跃连接都会在连接跟踪表里留一条记录。这张表有容量上限,写满后新连接会被丢弃,内核日志里会给出提示。conntrack 命令用来查看表内条目、统计各协议与错误计数、按条件清理条目,也能订阅实时事件流。排查连接时通时不通、地址转换异常、表被写满这类问题时,它是绕不过去的工具。

基本信息

适用平台GNU/Linux(需安装命令行工具,内核需启用连接跟踪模块)
语法conntrack -L 列出、-C 计数、-S 统计、-D 删除、-E 事件
依赖组件内核连接跟踪模块与用户态工具包
条目内存占用每条约几百字节
上限查看通过内核参数查询最大条目数
命名空间每个命名空间有自己独立的表

典型使用场景

  • 排查新连接被丢弃:先确认连接跟踪表是否已经达到上限。
  • 统计各协议条目数与错误计数,判断异常来源。
  • 清理特定端口的残留条目,恢复业务连通性。
  • 地址转换异常时确认条目里记录的实际地址与端口。
  • 实时订阅新建连接事件,观察连接来源。

常用写法

常用写法
conntrack -C                                  # 当前条目数(执行很快)
sysctl net.netfilter.nf_conntrack_max         # 查看上限
conntrack -L -p tcp --dport 443 | head        # 只看某个端口的会话
conntrack -S | head                           # 每核统计与错误计数
conntrack -D -p tcp --dport 8080              # 清理某端口的全部条目
conntrack -E -e NEW | head                    # 实时事件流
dmesg | tail -20                              # 查找表满告警

选项读法

选项作用使用要点
-C统计条目总数最轻量的查询方式
-L列出条目可加协议与端口条件过滤
-S统计与错误计数排查丢包与异常时先看它
-D删除条目会立即影响活跃连接,需谨慎
-E订阅事件流观察新建连接时使用
表上限决定最大并发会话写满后新连接会被丢弃
内核日志出现连接跟踪表满并丢包的提示时,先用统计查异常来源,再评估调大上限;条目本身占用内存,上限提高意味着内存占用同步上升。
删除条目会把活跃会话从表中抹掉,有状态防火墙可能立即中断这些连接,生产环境先小范围验证再推广。
容器与多命名空间环境下,看到的只是当前命名空间的表;排查宿主机问题要在宿主机的命名空间里执行。

易错点

  • 直接把上限调得很大而不评估内存:条目数增长会消耗可观内存,资源紧张的机器上可能引发连锁问题。
  • 用删除命令清理条目时把活跃业务连接一起清掉,业务瞬间中断;应先限定端口与状态。
  • 在容器内执行却看不到宿主机的表,误判为没有异常;排查范围要覆盖正确的命名空间。
  • 只看条目总数不看错误统计,漏掉协议异常与校验失败这类根因信息。

数据来源与参考

  • man 8 conntrack(conntrack-tools 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌