首页/网络/网络排障速查/conntrack 表满导致随机丢包

conntrack 表满导致随机丢包

使用 NAT 或状态防火墙的主机,连接跟踪表满会静默丢弃新连接:症状是随机超时、无应用日志;dmesg 里的 nf_conntrack: table full 是确诊依据。

网络排障速查网络更新于 2026-10-12

检查与确诊

检查与确诊
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
conntrack -C            # 当前条目数
conntrack -S            # 分类统计(insert_failed/drop 等)
dmesg | grep -i conntrack | tail -5

缓解参数(评估内存后调整)

缓解参数(评估内存后调整)
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
表满的表现是丢包而不是报错,极易误判为链路问题;调大 nf_conntrack_max 会同步增加内核内存占用,需结合内存评估,必要时用 conntrack -D 清理陈旧条目应急。

易错点

  • 表满时按链路故障排查,方向完全跑偏;先看 dmesg 与 conntrack -C 计数
  • 盲目调大 max 不评估内存:连接跟踪表吃内核内存,可能引发 OOM

数据来源与参考

  • Linux 内核文档:nf_conntrack sysctl
  • man 8 conntrack(conntrack-tools)

相关工具

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