- 文档
- 知识库
- 教程
- 开发工具
【免费下载链接】reference
为开发人员分享快速参考备忘清单(速查表)
本指南以开源速查仓库 jaywcjlove/reference 中 docs/netstat.md 为骨架,系统梳理netstat命令的监听、连接、路由、统计等核心用法,并深入讲解端口排查、服务检测与 DoS 攻击识别的实战命令链。读完本文,你将能熟练运用netstat配合grep、awk、sort等工具,快速定位监听端口、追踪异常连接、统计远程 IP 连接数并判断服务器是否遭受攻击。
netstat 是什么
netstat(network statistics)是 Linux/Unix 系统中用于显示网络连接、路由表、网络接口统计信息的经典命令行工具。它通过读取内核中的网络子系统状态(如/proc/net/tcp、/proc/net/udp等),以文本形式输出当前系统的网络活动快照。
在本仓库中,netstat被归类于"系统/网络"速查清单,与 lsof(列出打开文件)、linux-command(常用命令综合速查,其中netstat -pnltu用于显示所有活动监听端口)、ports(常用端口对照表)等文档互为补充,是服务器日常运维与故障排查的高频起点。
快速上手:三条入门命令
查看端口 80 上的所有连接
$ netstat -anp | grep :80组合解释:-a显示所有连接与监听端口,-n以数字形式显示地址和端口(不做 DNS 反向解析,速度更快),-p显示进程 PID 与名称,再交给grep过滤出包含:80的行,即可看到所有与 80 端口相关的连接。
查看网络统计帮助
$ netstat -h输出所有可用选项的简要说明,适合在不确定某个选项含义时随时查阅。
常用选项速查
| 选项 | 含义 |
|---|---|
-a | 显示所有连接(含监听) |
-t | 仅显示 TCP 连接 |
-u | 仅显示 UDP 连接 |
-x | 仅显示 Unix 套接字 |
-n | 以数字显示 IP 与端口,不做反向 DNS 解析 |
-p | 显示进程 PID 与名称 |
-l | 仅显示监听中的套接字 |
-e | 显示扩展信息(如用户、Inode) |
-i | 显示网络接口信息 |
-r | 显示路由表 |
-s | 显示协议统计信息 |
-F | 尽可能将 IP 解析为域名 |
-M | 显示伪装的连接 |
-w | 显示原始套接字(Raw) |
监听端口:谁在提供服务
监听状态(LISTEN)表示进程正在某个端口上等待连接,是排查"端口被占用""服务未启动"等问题的核心手段。
| 命令 | 说明 |
|---|---|
netstat -ltunp | 所有监听端口(TCP+UDP,含进程信息) |
netstat -ltn | 监听 TCP 端口(数字显示) |
netstat -lun | 监听 UDP 端口 |
netstat -lx | 监听 Unix 域套接字 |
netstat -lt | 仅列出侦听 TCP 端口 |
netstat -lu | 仅列出侦听 UDP 端口 |
netstat -l | 列出所有监听条件 |
其中-ltunp是日常使用频率最高的组合:l(监听)+t(TCP)+u(UDP)+n(数字)+p(进程),一条命令即可看清本机开放了哪些端口、由哪个进程占用。
连接状态:活动连接一览
连接状态分为ESTABLISHED(已建立)、SYN_SENT(正在发起连接)、TIME_WAIT、CLOSE_WAIT等多种。查看全部连接:
| 命令 | 说明 |
|---|---|
netstat | 活动连接(默认输出) |
netstat -a | 所有连接 |
netstat -at | 所有 TCP 连接 |
netstat -au | 所有 UDP 连接 |
netstat -ant | 所有 TCP 连接,数字显示 IP(不做反向 DNS 查找) |
netstat -tnl | 监听 TCP 端口 |
netstat -unl | 监听 UDP 端口 |
显示没有域名的 TCP 连接
$ netstat --tcp --numeric--tcp等价于-t,--numeric等价于-n,两条长选项写法可读性更强,适合写入脚本或文档示例。
显示活动/已建立的连接
$ netstat -atnp | grep ESTAESTA是ESTABLISHED的前缀匹配,用于快速过滤出所有已建立的连接。若需连续观察,可配合watch:
$ watch -d -n0 "netstat -atnp | grep ESTA"-d高亮两次刷新间发生变化的部分,-n0表示尽可能快的刷新间隔,适合观察连接数的动态变化。
网络与路由信息
网络接口
| 命令 | 说明 |
|---|---|
netstat -i | 显示网络接口(含收发数据包统计) |
netstat -ie | 显示网络接口扩展信息(类似ifconfig) |
netstat -n | 仅显示 IP 地址 |
netstat -F | 尽可能显示 IP 地址对应的域名 |
路由表
| 命令 | 说明 |
|---|---|
netstat -r | 显示路由表(等价于route) |
netstat -rn | 显示路由表,且不解析主机名 |
排查"网络不通""网关错误"问题时,netstat -rn可直接查看内核路由决策结果,确认默认网关与目标网段的路由条目。
统计信息与进程定位
协议统计
| 命令 | 说明 |
|---|---|
netstat -s | 显示各协议统计信息(TCP/UDP/ICMP 等) |
netstat -st | 仅显示 TCP 统计信息 |
netstat -su | 仅显示 UDP 统计信息 |
统计信息中包含重传次数、丢包、连接重置等关键指标,是判断网络质量与丢包率的重要依据。
进程与扩展信息
| 命令 | 说明 |
|---|---|
netstat -ltpe | 使用进程信息和扩展信息显示 TCP 侦听连接 |
netstat -tp | 显示带有 PID 编号的服务名称 |
sudo netstat -nlpt | 列出进程名称/PID 和用户 ID |
netstat -nlptue | 所有带 PID 和扩展信息的监听端口 |
netstat -M | 显示伪装的连接 |
注意:-p显示进程名通常需要 root 权限,非 root 用户可能只能看到进程名而看不到 PID,因此推荐使用sudo执行。
实战:检查服务是否正在运行
$ sudo netstat -aple | grep ntp-a(所有)+-p(进程)+-l(监听)+-e(扩展信息),配合grep过滤服务关键字。将ntp替换为http、smtp等即可检查对应服务是否在监听状态:
$ sudo netstat -aple | grep http $ sudo netstat -aple | grep smtp这是比ps更精准的"服务是否对外可用"检查方式——进程存在但未监听端口,同样无法提供服务。
显示到特定端口的所有打开连接
$ netstat -anp | grep":"将冒号:替换为具体端口号即可,例如:
$ netstat -anp | grep":3306"用于查看某个端口的全部打开连接(含监听与已建立)。
安全分析:用 netstat 识别异常流量
netstat配合管道命令可以构建轻量级的安全分析工具链,用于统计连接来源、发现 DoS 攻击迹象。
显示具有大量连接的 IP
$ netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head命令链拆解:netstat -tn输出数字化的 TCP 连接 →grep :80过滤 80 端口 →awk '{print $5}'取第 5 列(远端地址)→cut -d: -f1去掉端口只留 IP →sort排序 →uniq -c按 IP 计数 →sort -nr按数量倒序 →head取前 10 名。结果即"连接数最多的 IP 排行",单个 IP 连接数异常高往往是攻击或爬虫信号。
连接到端口 80 的 IP 地址
$ netstat -tn 2>/dev/null | grep ':80 ' | awk '{print $5}' |sed -e 's/::ffff://' | cut -f1 -d: | sort | uniq -c | sort -rn | head与上一条类似,区别在于grep ':80 '精确匹配带空格结尾的 80 端口行,并通过sed -e 's/::ffff://'清理 IPv4 映射到 IPv6 时的前缀(::ffff:1.2.3.4→1.2.3.4),使统计结果更干净。
显示端口 80 上的活动连接数
$ netstat -an |grep :80 |wc -lwc -l统计行数,得到当前 80 端口相关连接(含监听)的总数量,适合作为监控脚本的指标来源。
仅显示外部 IP 地址
$ netstat -antu | grep :80 | grep -v LISTEN | awk '{print $5}'grep -v LISTEN排除本地监听行,awk '{print $5}'提取远端地址,得到所有"主动连入 80 端口的外部地址"。
识别 DoS 攻击:SYN_REC 状态统计
SYN_REC(SYN_RECEIVED)表示收到了 SYN 请求但未完成三次握手,是半开连接攻击(SYN Flood)的典型特征:
$ netstat -n -p|grep SYN_REC | wc -l该命令输出服务器上当前处于SYN_REC状态的连接数量。正常情况下该数值应该很低(小于5);如果达到两位数,则很可能正在遭受 DoS 攻击或邮件轰炸。
列出发送 SYN_REC 连接的唯一 IP 地址
$ netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'与上面的命令一样,该命令列出所有向服务器发起SYN_REC半开连接的节点唯一 IP 地址,方便进一步封禁或溯源。
每个远程 IP 的连接数
方法一(经典管道):
$ netstat -antu | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -n方法二(单条 awk 实现,性能更优):
$ netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'方法二仅在第五列匹配数字:端口格式时执行:split($5, a, ":")按冒号拆分地址与端口,ips[a[1]]++以 IP 为键计数,最终通过sort -k1 -nr按连接数降序输出。相比方法一省去了多个中间进程,在处理海量连接时更高效。
检查开放端口(IPv4 和 IPv6)
$ netstat -plntu以及仅 TCP 的版本:
$ netstat -plnt-p(进程)+-l(监听)+-n(数字)+-t(TCP)/-u(UDP),一条命令列出所有监听中的端口及其进程,是"查看本机开放了哪些端口"的标准答案,也可与 ports.md 中的端口对照表配合识别端口用途。
每个 IP 的打开连接数
$ netstat -an | grep 80 | wc -l统计所有包含80的 TCP/UDP 行数,用于快速估算 80 端口的连接总量。
活跃的互联网连接
$ netstat -pnut -w | column -t -s $'\t'-p(进程)+-n(数字)+-u(UDP)+-t(TCP)+-w(Raw 原始套接字)覆盖所有互联网协议,column -t -s $'\t'以制表符为分隔并对齐列,输出排版整洁的活跃连接清单。
小结
netstat尽管在部分新系统中被ss逐步替代,但其选项直观、输出稳定、随处可用,仍是排查端口占用、服务状态与网络连接的首选工具。本清单中的命令链体现了 Unix 管道哲学的典型用法:netstat负责采集网络快照,grep/awk/cut负责字段提取,sort/uniq负责聚合统计,组合起来即可覆盖从日常巡检到安全应急的多数场景。
进一步阅读本仓库相关清单:lsof 备忘清单(按进程/端口查打开文件)、常用端口对照表(识别端口用途)、Linux 常用命令(netstat -pnltu综合用法)以及 awk、grep(掌握管道处理能力)。
- 文档
- 知识库
- 教程
- 开发工具
【免费下载链接】reference
为开发人员分享快速参考备忘清单(速查表)
相关推荐
Reference 速查手册:netstat 命令实战指南 —— 端口监听、连接排查与网络统计
Reference 速查手册:netstat 命令实战指南 —— 端口监听、连接排查与网络统计 本篇指南以本仓库 netstat 速查文档 https://li
文档教程知识库Netstat 命令速查:Linux 网络连接、端口监听与安全排查实战指南
Netstat 命令速查:Linux 网络连接、端口监听与安全排查实战指南 本指南以本项目 docs/netstat.md https://link.gitco
文档教程Linux 命令速查表:系统、进程、网络与 Shell 技巧全指南(jaywcjlove/reference)
Linux 命令速查表:系统、进程、网络与 Shell 技巧全指南(jaywcjlove/reference) 本篇速查指南以 docs/linux comma
文档知识库教程开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考