直接读取 /proc/net/nf_conntrack 是最轻量、底层的连接跟踪状态获取方式,需 root 权限,支持快速过滤与异常识别,并可配合监控指标实现自动化观察。

直接读取 /proc/net/nf_conntrack 是获取当前连接跟踪状态最轻量、最底层的方式,不依赖额外工具,适合脚本集成、低开销监控或诊断环境受限的场景。
用 cat 或 less 查看完整快照
运行 sudo cat /proc/net/nf_conntrack 即可输出全部活跃连接条目。每行代表一个连接记录,格式固定:协议、协议号、剩余超时(秒)、状态、源/目的地址端口、反向元组、标记(如 [ASSURED])、使用计数等。注意需 root 权限,否则可能无输出或权限拒绝。
按关键字段快速过滤
- 查某 IP 的所有连接:
sudo cat /proc/net/nf_conntrack | grep "192.168.1.100" - 查特定端口(如 80):
sudo cat /proc/net/nf_conntrack | grep "dport=80\|sport=80" - 筛出未响应连接(潜在异常):
sudo cat /proc/net/nf_conntrack | grep "\[UNREPLIED\]" - 统计当前总连接数:
sudo cat /proc/net/nf_conntrack | wc -l
识别状态异常的关键信号
- 大量
[UNREPLIED]条目:说明很多连接只发出请求、未收到响应,可能是后端不可达、防火墙拦截或应用无响应。 - 几乎没有
[ASSURED]条目:表示活跃双向连接极少,连接建立失败率高或流量极低。 - 某个 IP 或端口反复高频出现:可能遭遇扫描、连接风暴或客户端重试异常。
配合指标做基础监控
单纯看文件内容不够自动化。建议搭配以下方式构建简易监控:
- 每分钟执行
wc -l /proc/net/nf_conntrack并记录趋势,判断是否逼近上限(可通过sysctl net.netfilter.nf_conntrack_max查)。 - 同时检查
node_nf_conntrack_entries和node_nf_conntrack_entries_limit(来自 node-exporter),比手动读 proc 更稳定可靠。 - 若发现连接数突增且伴随
node_nf_conntrack_stat_early_drop > 0,基本可确认 conntrack 表已满,新连接被丢弃。
该方法本质是读取内核内存映射的只读视图,无副作用,但输出为原始文本,不带实时刷新和交互功能。需要动态观察请改用 conntrack -L 或 iptstate。











