您的位置:首页 > 路由器知识路由器知识
2023超全Linuxnetstat命令详解:小白也能看懂的网络诊断神器(含10个实战技巧+避坑指南)
2026-03-04人已围观
2023超全Linux netstat命令详解:小白也能看懂的网络诊断神器(含10个实战技巧+避坑指南)
一、3分钟搞懂netstat:网络世界的"体检报告"
想象你家的网络是一个热闹的集市,各种数据像小贩和顾客一样在里面穿梭。那谁来管理这个集市的秩序,告诉我们有多少摊位(端口)在营业,哪些顾客(IP地址)在和摊主(服务)交易呢?netstat就是干这个的!它就像集市入口的保安队长,手里拿着一本登记册,能把所有进出的人和事都给你报得清清楚楚。
简单说,netstat(network statistics) 是Linux系统里查看网络状态的"瑞士军刀",不管你是想知道谁在偷偷连接你的电脑,还是检查自己开的服务是否正常运行,甚至排查为什么网页打不开,它都能帮上忙。比如你用QQ和朋友聊天,netstat就能显示出这个聊天连接的IP地址、用的哪个端口,甚至哪个程序在处理这个连接——就像医院的X光机,能把网络里看不见的连接都照得明明白白。
二、零基础入门:netstat基础参数"说明书"
1. 最常用的5个"入门级"参数
-a:把所有"摊位"都亮出来
就像集市保安把所有营业中和空置的摊位都列出来,`netstat -a`会显示所有网络连接,包括正在监听(等顾客)和已经建立连接(正在交易)的。比如你会看到类似`LISTEN`(等待连接)、`ESTABLISHED`(已连接)这样的状态,相当于摊位招牌上写着"营业中"还是"招租中"。
-n:用数字说话,拒绝"花名"
默认情况下,netstat会把IP地址显示成域名(比如把`114.114.114.114`显示成`public1.114dns.com`),端口号显示成服务名(比如把80端口显示成`http`)。但有时候我们需要看"真面目",就像查快递时要看快递单号而不是物品名称,`netstat -n`就能直接显示IP地址和端口号的数字形式,避免解析域名的延迟。
-t/-u:分别查看TCP和UDP连接
网络数据传输主要有两种"运输方式":TCP就像快递,需要收件人确认收到(可靠但慢);UDP就像平信,寄出去就不管了(快但可能丢件)。`netstat -t`只看TCP连接(比如浏览网页、微信聊天),`netstat -u`只看UDP连接(比如视频通话、在线游戏)。如果想同时看两种,就用`netstat -tu`。
-p:揪出"幕后老板"
有时候发现一个陌生连接,想知道是哪个程序干的?`netstat -p`(需要root权限,记得加`sudo`)就像侦探查户口,能显示每个连接对应的进程ID(PID)和程序名称。比如看到`/usr/bin/sshd`,就知道是SSH服务在工作;看到`/usr/lib/firefox/firefox`,就明白是浏览器在联网。
-r:查看"交通地图"——路由表
如果把网络比作城市交通网,路由表就是导航地图,告诉数据该走哪条路。`netstat -r`会显示系统的路由信息,包括目标网络(要去的地方)、网关(必经之路的收费站)、子网掩码(区域划分)等。比如默认网关`0.0.0.0`就像城市的主干道入口,所有不知道怎么走的数据都会从这里出发。
2. 进阶组合拳:参数搭配使用效果翻倍
新手最常用的组合是 `netstat -tunlp`(记得加`sudo`),这串"密码"能一次性显示:
- t:TCP连接
- u:UDP连接
- n:数字形式显示IP和端口
- l:只看正在监听的连接(`LISTEN`状态)
- p:显示进程信息
执行后你会看到类似这样的结果:
```
tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN 1234/sshd
udp 0 0 192.168.1.100:123 0.0.0.0: 5678/ntpd
```
翻译成人话就是:"有个叫sshd的程序(PID 1234)在所有IP的22端口监听TCP连接;有个叫ntpd的程序(PID 5678)在192.168.1.100的123端口运行UDP服务。"
三、手把手教程:从安装到实战配置
1. 安装netstat:简单两步走
现在很多Linux系统(比如Ubuntu 20.04+、CentOS 8+)默认没装netstat,因为它属于`net-tools`工具包。安装方法超简单:
Debian/Ubuntu系统:
打开终端,输入`sudo apt update && sudo apt install net-tools`,回车后输入密码,等2分钟就装好了。
CentOS/RHEL系统:
输入`sudo yum install net-tools`或`sudo dnf install net-tools`,同样输入密码确认即可。
装完后输入`netstat -v`,如果看到版本信息,就说明安装成功了,就像新买的工具拆箱后试一下能不能用。
2. 基础网络配置检查:3个必用命令
检查哪些端口在"营业":
`sudo netstat -tunlp`——这是排查服务是否启动的第一步。比如你装了Nginx想确认80端口是否监听,执行后如果看到`0.0.0.0:80`那一行,就说明Web服务正常启动了;如果没有,就得去检查Nginx配置文件是不是写错了。
查看谁在连接你的电脑:
`netstat -nt`(只看TCP已连接状态)能列出所有和你建立连接的外部IP和端口。比如看到`183.xx.xx.xx:443`,可能是你正在浏览的HTTPS网站;如果发现陌生IP,特别是来自国外的,就得留个心眼——当然也可能是正常的广告或CDN服务,别慌着拔网线。
诊断网络延迟问题:
`netstat -i`会显示网卡的流量统计,包括接收(RX)和发送(TX)的数据包数量、错误数(errors)、丢包数(dropped)。如果`errors`或`dropped`数字一直在增加,就像水管漏水一样,可能是网线接触不良、网卡故障,或者网络带宽被占满了。
3. 特殊场景配置:游戏玩家和服务器管理员必看
游戏玩家:找出占用带宽的"元凶"
如果你打游戏时突然卡顿,怀疑有程序在偷偷下载,可以用`netstat -tunp | grep ESTABLISHED`(`ESTABLISHED`表示已建立的连接),按流量大小排序(配合`sort`命令):`sudo netstat -tunp | grep ESTABLISHED | sort -k 2 -n`,流量大的程序会排在后面,一眼就能揪出"带宽小偷"。
服务器管理员:监控端口连接数
如果网站突然变慢,可能是连接数太多撑不住了。用`netstat -nt | grep :80 | wc -l`可以统计80端口的TCP连接数量(把80换成443就是HTTPS)。正常网站连接数一般在几百到几千,如果突然涨到几万,可能是被DDoS攻击了,赶紧用防火墙封禁异常IP。
四、避坑+优化:让netstat更好用的15个技巧
新手避坑清单(5个最容易踩的雷)
1. 忘了加sudo:用`-p`参数时必须有root权限,否则会显示`-`而不是进程名,就像没带钥匙进不了门。
2. 分不清LISTEN和ESTABLISHED:`LISTEN`是"等人连接",`ESTABLISHED`是"正在聊天",别把前者当成异常连接。
3. 被本地连接吓到:`127.0.0.1`(localhost)是本地回环地址,很多程序会自己跟自己通信(比如数据库和Web服务),这是正常的,不是中病毒。
4. 端口号记混:80(HTTP)、443(HTTPS)、22(SSH)、3306(MySQL)这些常见端口要记住,看到陌生端口先查一下用途(比如`grep 端口号 /etc/services`),别瞎紧张。
5. 用错参数组合:比如`-i`(显示网卡)和`-t`(TCP)不能一起用,就像同时用洗衣机洗鞋子和羽绒服,会出问题。
5个常见问题解决
问题1:执行netstat提示"command not found"?
答:没装`net-tools`包,按前面的安装教程装一下就行。
问题2:为什么有的连接显示`0.0.0.0:端口`?
答:`0.0.0.0`表示监听所有网卡的该端口,比如服务器的80端口需要接收来自互联网的连接,所以会显示`0.0.0.0:80`,正常现象。
问题3:如何查看某个端口被哪个程序占用?
答:`sudo netstat -tunlp | grep 端口号`,比如`sudo netstat -tunlp | grep 8080`,就能找到占用8080端口的程序。
问题4:netstat输出太多看不过来怎么办?
答:用管道符`|`配合`grep`过滤,比如只看ESTABLISHED状态:`netstat -nt | grep ESTABLISHED`;或者输出到文件慢慢看:`netstat -tunlp > netstat.log`。
问题5:为什么有些进程名显示"unknown"?
答:两种可能:要么你没加sudo(权限不够),要么那个进程已经退出了但连接还没断开(就像顾客走了但摊位还没来得及撤)。
10个实用小技巧(从入门到高手)
1. 实时监控连接变化:`netstat -tunlp -c`(`-c`表示持续刷新,按Ctrl+C停止),就像监控摄像头实时画面,适合观察连接动态。
2. 按端口号排序:`netstat -tun | sort -k 4`(按本地端口排序)或`sort -k 5`(按远程端口排序),方便找特定端口。
3. 只看IPv4连接:`netstat -4`(默认可能显示IPv6,加`-4`更清爽)。
4. 统计协议使用情况:`netstat -s`会显示TCP/UDP等协议的统计数据,比如"主动打开连接数"、"重传数据包数",能帮你分析网络是否健康。
5. 查看以太网统计:`netstat -e`显示网卡的收发字节数,配合`-i`用:`netstat -ie`,能看到更详细的网卡流量。
6. 找出最多连接的IP:`netstat -nt | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr`——这条命令能统计每个IP的连接数,按从多到少排序,找攻击源超有用。
7. 排除本地连接:`netstat -nt | grep -v 127.0.0.1`,过滤掉本地回环地址,只看外部连接。
8. 保存结果到文件:`netstat -tunlp > /tmp/netstat_$(date +%F_%H%M).log`,自动生成带日期的日志文件,方便以后分析。
9. 配合watch命令持续监控:`watch -n 2 'netstat -tunlp'`(每2秒刷新一次),比`-c`参数更灵活,还能放大看。
10. 检查DNS是否生效:`netstat -an | grep 53`(53是DNS端口),如果有`127.0.0.53:53`的监听,说明系统在用本地DNS缓存,正常。
五、长期使用体验:netstat的"优缺点"和替代方案
用了5年netstat,我总结出它的"脾气":优点是简单直接,参数少好记,适合快速查看;缺点是功能比较基础,统计和过滤能力弱,而且在高并发服务器上执行速度会变慢(就像超市排队结账,人多了就慢)。
现在很多Linux发行版推荐用`ss`命令替代netstat(`ss`是`socket statistics`的缩写),它更快更强大。比如`ss -tunlp`和`netstat -tunlp`效果一样,但在有10万个连接的服务器上,`ss`能秒出结果,而netstat可能要等好几秒。不过新手入门还是从netstat开始学更好,因为它的输出更直观,就像学开车先开手动挡,基础打牢了再开自动挡(ss)就容易多了。
话说回来,不管是netstat还是ss,核心都是帮我们"看清"网络。就像医生的听诊器,工具本身不重要,重要的是你能不能通过它发现问题。记住这些基础命令,下次遇到网络问题时,就不会只会重启路由器了——你可以像个真正的工程师一样,打开终端,敲下`netstat -tunlp`,自信地说:"让我看看是谁在搞鬼!"
上一篇:2023网络基础知识完全指南:从协议分层到家庭组网实战
下一篇:返回列表
相关文章
- 2023超全Linuxnetstat命令详解:小白也能看懂的网络诊断神器(含10个实战技巧+
- 2023网络基础知识完全指南:从协议分层到家庭组网实战
- 2023超详细!15分钟把虚拟机拉进Istio服务网格,老应用秒变云原生
- 2023从零学模电:用电阻电容+比较器造方波三角波,9步入门教程(附避坑指南)
- 2024家庭组网必学!3分钟搞定光猫后台访问,梅林固件这招太实用
- 2025交换机测试全攻略:从10M到400G的实战指南
- 2025年最稳教程:红米AC2100救砖指南,钛星人固件刷回breed保姆级教学
- 2023超详细!Fiddler+MuMu模拟器抓包教程:从入门到精通,99%的小白都能学会!
- 2023超详细Axure中继器实战指南:从入门到精通的双向列表交互教程(附避坑清单+
- 2024实测!从0到1搞懂WANsim网络损伤仪:WAN口LAN口连接区别+10个实战技巧,新手