Linux怎么查看网络连接追踪_Linux conntrack查看连接跟踪【高级】

千雪君_8499

千雪君_8499

2026-04-05

1050人浏览

原创

诊断linux nat失效等问题需检查conntrack状态,方法包括:一、用conntrack命令查连接条目;二、读/proc/net/nf_conntrack文件;三、按协议与状态统计分布;四、查资源使用情况;五、查unconfirmed和expectation表。

linux怎么查看网络连接追踪_linux conntrack查看连接跟踪【高级】

如果您需要诊断Linux系统中NAT失效、防火墙状态异常或新连接被拒绝等问题,则很可能是连接跟踪表(conntrack)状态异常所致。以下是查看网络连接跟踪的多种高级方法:

一、使用conntrack命令列出全部连接条目

conntrack是专用于操作连接跟踪表的用户态工具,可实时读取内核中的conntrack表内容,适用于快速定位活跃连接、协议分布及状态异常。

1、执行sudo conntrack -L查看当前所有已确认的连接条目。

2、添加--src-nat或--dst-nat参数筛选应用了源或目的NAT的连接。

3、使用-p tcp、-p udp等限定协议类型,例如:sudo conntrack -L -p tcp | head -10。

4、通过-E选项启用事件监听模式,实时捕获新建、销毁、更新等连接事件:sudo conntrack -E。

二、直接读取/proc/net/nf_conntrack文件

该文件是内核暴露的原始连接跟踪表快照,不依赖用户态工具,适合在conntrack工具不可用或需最小依赖时使用,输出格式与conntrack -L一致但无格式化修饰。

1、运行sudo cat /proc/net/nf_conntrack获取完整连接列表。

2、结合grep按IP或端口过滤,例如:sudo cat /proc/net/nf_conntrack | grep "192.168.1.100"。

3、统计当前总连接数:sudo cat /proc/net/nf_conntrack | wc -l。

4、检查是否存在大量[UNREPLIED]或[ASSURED]标记条目,[UNREPLIED]表示仅收到请求未收到响应,可能预示连接未完成或被丢弃。

三、按协议与状态分类统计连接分布

通过解析conntrack输出可识别流量热点、协议失衡或异常状态堆积,为调优提供依据。

1、统计各协议连接数量:sudo conntrack -L | awk '{print $1}' | sort | uniq -c | sort -nr。

2、统计TCP各状态连接数:sudo conntrack -L | awk '$1~/tcp/ {print $4}' | sort | uniq -c | sort -nr。

3、查看TIME_WAIT连接详情并排序:sudo conntrack -L | grep "TIME_WAIT" | head -10。

4、识别高占用源IP:sudo conntrack -L | awk '$1~/tcp/ {print $6}' | cut -d'=' -f2 | cut -d' ' -f1 | sort | uniq -c | sort -nr | head -5。

四、检查连接跟踪子系统资源使用情况

确认是否达到表容量上限或内存分配瓶颈,是判断“conntrack满”的关键步骤。

1、查看当前最大允许连接数:cat /proc/sys/net/netfilter/nf_conntrack_max。

2、查看当前已使用连接数:cat /proc/sys/net/netfilter/nf_conntrack_count。

3、计算占用率:当前使用数 ÷ 最大数 × 100%,若超过90%,需警惕丢包风险。

4、检查内核日志是否出现丢包提示:dmesg | grep "nf_conntrack: table full"。

五、查看未确认连接与期望连接表

conntrack内部维护多张辅助表,unconfirmed和expectation表可揭示连接建立失败或ALG(如FTP/SIP)触发异常的线索。

1、列出未确认连接(尚未收到响应的初始包):sudo conntrack -L unconfirmed。

2、列出期望连接(由ALG模块主动创建的预期连接):sudo conntrack -L expectation。

3、观察unconfirmed表是否持续增长且不释放,这通常表明SYN包发出后未收到ACK,或连接被中间设备拦截。

4、检查expectation表中是否存在大量过期条目:sudo conntrack -L expectation | wc -l。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

2640

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

249

24

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

2023.09.04

1138

7

堆和栈的区别
堆和栈的区别

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

2023.07.18

5287

5

堆和栈区别
堆和栈区别

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

2023.08.10

2328

6

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.25

463

5

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

2023.08.08

2631

5

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

2024.11.14

3109

8

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

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

2023.06.21

3910

4

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习