0

0

conntrack 表满后新连接失败但 ss -ant 显示 ESTABLISHED 正常的隐藏原因

舞夢輝影

舞夢輝影

发布时间:2026-02-07 20:46:02

|

792人浏览过

|

来源于php中文网

原创

ss -ant 显示 ESTABLISHED 是 TCP socket 状态,而 conntrack 表满仅影响需跟踪的连接;本地回环、未启用模块或 liberal 模式下连接可能根本不进 conntrack 表。

conntrack 表满后新连接失败但 ss -ant 显示 established 正常的隐藏原因

conntrack 表满时为什么 ss -ant 还能看到大量 ESTABLISHED?

因为 ss -ant 显示的是 socket 状态,而 conntrack 跟踪的是网络连接的四元组(源IP/端口、目标IP/端口、协议、方向)状态机。ESTABLISHED socket 只说明本地 TCP 状态是 ESTABLISHED,不意味着该连接一定在 conntrack 表里——它可能压根没被跟踪,或已被提前删除。

常见触发场景:

  • 内核未启用连接跟踪(nf_conntrack_enable=0 或模块未加载),但用户误以为开启着
  • 连接是本地 loopback(127.0.0.1)且启用了 net.netfilter.nf_conntrack_tcp_be_liberal=1,部分连接跳过跟踪
  • 连接建立后很快关闭,但 conntrack 条目因 timeout 未及时回收,新连接又不断涌入,表满后新 SYN 报文被丢弃,老 ESTABLISHED socket 却还活着

如何确认 conntrack 表是否真满、以及哪些连接卡在表里?

直接查当前使用量和上限:

cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max

若前者接近后者(比如 >95%),基本可判定表满。进一步看堆积类型:

  • conntrack -L | head -20:观察是否有大量 TIME_WAITSYN_SENT 条目(说明连接无法正常完成或释放)
  • conntrack -S:查看各状态计数,重点关注 insert_failed 是否持续增长(每增 1 表示一个新连接因表满被丢弃)
  • conntrack -L -d YOUR_APP_IP:过滤特定服务 IP,确认是否集中在某几个后端连接上

为什么新连接失败却看不到 SYN 被 drop?

conntrack 表满时,内核在 nf_conntrack_invert_tuple()resolve_normal_ct() 阶段直接返回 -ENOMEM,后续 netfilter hook(如 iptables INPUT)甚至收不到该包——它在连接跟踪模块就终止了,不会进入 conntrack 日志、iptables LOG target,也不会触发 tcpdump 在 raw socket 层捕获(除非用 tcpdump -i any 并确保抓到 ingress 路径最前端)。

Shrink.media
Shrink.media

Shrink.media是当今市场上最快、最直观、最智能的图像文件缩减工具

下载

验证方式:

  • 开启 conntrack 日志:echo 1 > /proc/sys/net/netfilter/nf_conntrack_log_invalid,然后 dmesg -w 观察是否刷出 nf_conntrack: can't allocate new conntrack
  • perf trace -e 'net:*' -F 100 抓内核事件,搜索 nf_conntrack_alloc 返回 -12(-ENOMEM)

临时缓解与长期配置建议

临时救急可以清空非活跃连接(慎用!别清 ESTABLISHED):

conntrack -F -v  # 清空所有(含 ESTABLISHED,不推荐)
conntrack -D --state INVALID,UNREPLIED,ASSURED,TIME_WAIT  # 更安全

长期必须调参:

  • 增大上限:sysctl -w net.netfilter.nf_conntrack_max=131072(按内存估算:每个条目约 320 字节,128K ≈ 40MB)
  • 缩短超时:sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30(默认 120s)
  • 避免跟踪不需要的流量:用 iptables -t raw -A PREROUTING -i lo -j NOTRACK 跳过本地回环
  • 检查是否有连接泄漏:比如短连接服务未复用连接、HTTP keepalive 关闭、客户端频繁重连

真正棘手的是那些“看不见”的连接:它们没进 conntrack,也不在 ss 的监听队列里,却占着端口、消耗 fd、让新连接卡在 SYN_RCVD 后再也进不来——这时候得结合 /proc/net/{tcp,tcp6}lsof -i 交叉比对。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

403

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

583

2023.08.10

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

191

2023.11.24

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

442

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

429

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2707

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2339

2024.08.16

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1478

2023.06.21

Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

39

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 10.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 5.3万人学习

Vue 教程
Vue 教程

共42课时 | 8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号