这套命令体系遵循经典的 “分层排查法”,从用户层(应用层)到底层(物理层),逐步定位问题。

核心思想:分层排查法
当网络出现问题时,不要盲目尝试各种命令,遵循一个清晰的逻辑流程,可以大大提高排查效率。
- 应用层问题:先确认应用程序本身是否有问题,比如服务是否启动、配置是否正确。
- DNS 问题:域名无法解析是最常见的问题之一。
- 连通性问题:确认本地机器是否能到达目标服务器。
- 中间网络问题:确认数据包是否在中间的路由器或防火墙处被丢弃。
- 端口/服务问题:确认目标服务器上特定的服务端口是否开放且正常响应。
- 性能问题:如果连通正常但速度慢,则可能是线路或服务器性能问题。
第一层:应用层 & 服务状态检查
在确认网络问题前,先看看自己的服务或程序是否正常。
| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
ss |
Socket Statistics | 查看网络套接字、端口和连接状态。ss 是 netstat 的现代替代品,速度更快,信息更全。 |
ss -tulnp (查看所有监听的TCP/UDP端口及进程ID) ss -t (只看TCP) ss -u (只看UDP) |
netstat |
Network Statistics | 传统工具,功能与 ss 类似,但在一些旧系统上仍有使用。 |
netstat -tulnp (同上) netstat -an (显示所有连接,不解析域名) |
systemctl |
System Control | 管理系统服务,检查你的网络服务(如 Nginx, Apache, SSH)是否正在运行。 | systemctl status nginx systemctl restart sshd |
第二层:DNS 解析问题排查
如果域名 ping 不通,第一步就是确认域名是否能正确解析成 IP 地址。
| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
nslookup |
Name Server Lookup | 查询域名对应的 IP 地址,是排查 DNS 问题的首选工具。 | nslookup www.google.com nslookup (进入交互模式,可以切换DNS服务器 server 8.8.8.8) |
dig |
Domain Information Groper | nslookup 的增强版,提供更详细、更专业的 DNS 查询信息。 |
dig www.google.com dig @8.8.8.8 www.baidu.com (指定DNS服务器查询) |
host |
Host Name Lookup | 一个简单的 DNS 查询工具,输出比 nslookup 简洁。 |
host www.github.com |
第三层:网络连通性基础检查
这是最核心的一步,用于判断本地机器与目标机器之间是否存在网络连接。

| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
ping |
Packet Internet Groper | 发送 ICMP Echo 请求包,测试网络连通性和延迟,它是最基础、最常用的网络测试命令。 | ping www.baidu.com ping -c 4 8.8.8.8 (只发送4个包) |
traceroute/tracepath |
Trace Route | 显示数据包到达目标主机所经过的路由路径,并显示每一跳的延迟,可以定位在哪一跳网络出了问题。 | traceroute www.google.com (Linux) tracert www.google.com (Windows) |
mtr |
My TraceRoute | traceroute 的增强版,它会持续发送数据包,并将结果以动态形式展示,能更清晰地看出网络延迟和丢包发生在哪一跳。 |
mtr www.google.com |
第四层:中间网络与路由检查
ping 和 traceroute 显示在某个中间节点就失败了,或者延迟很高,就需要检查路由和中间网络设备。
| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
ip route / route |
IP Route | 查看和管理本地路由表,数据包是根据路由表来决定下一跳去哪里的。 | ip route show (查看路由表) ip route add 192.168.2.0/24 via 192.168.1.1 (添加一条静态路由) |
ip neigh / arp |
Address Resolution Protocol | 查看本地 ARP 缓存表,记录了 IP 地址与 MAC 地址的映射关系,可以判断邻居设备是否可达。 | ip neigh show (查看ARP表) arp -a (Windows/Linux通用) |
tc |
Traffic Control | 高级网络流量控制工具,可以模拟网络延迟、丢包、乱序等,用于压力测试和问题复现。 | tc qdisc add dev eth0 root netem delay 100ms (给eth0网卡增加100ms延迟) |
第五层:端口与服务可达性检查
ping 通了,但你的应用程序(如网页、数据库)还是连不上,问题很可能出在特定的端口上。
| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
telnet |
Telecommunication Network | 测试指定IP和端口的TCP连通性,非常简单直接,但本身不加密。 | telnet 8.8.8.8 53 (测试能否访问8.8.8.8的53号DNS端口) |
nc / netcat |
Net Cat | 网络工具中的“瑞士军刀”,功能极其强大,可以用于端口扫描、传输文件、作为服务器等。 | nc -zv 192.168.1.100 22 80 443 (扫描192.168.1.100的22, 80, 443端口是否开放) |
curl |
Client URL | 强大的命令行URL传输工具,不仅可以测试HTTP/HTTPS端口,还能获取响应内容、状态码等。 | curl -I http://www.baidu.com (只获取HTTP头信息,看状态码) curl -v https://www.github.com (verbose模式,显示详细连接过程) |
第六层:高级诊断与性能分析
当问题比较隐蔽,或者需要深入了解网络流量时,这些工具就派上用场了。
| 命令 | 全称 | 主要用途 | 示例 |
|---|---|---|---|
tcpdump |
TCP Dump | 强大的网络抓包工具,可以捕获和分析经过网卡的数据包,是网络协议分析的终极武器。 | tcpdump -i any -w capture.pcap (抓取所有网卡的包并保存到文件) tcpdump -i eth0 host www.baidu.com (抓取访问百度的包) |
iftop |
Interface Top | 实时显示网络带宽使用情况,可以按主机、端口排序,找出哪个进程或连接占用了大量带宽。 | iftop -i eth0 (监控eth0网卡的流量) |
nethogs |
Network Hogs | 按进程显示网络带宽使用情况,当 iftop 显示某个IP占用带宽很高时,可以用 nethogs 找到具体是哪个程序造成的。 |
nethogs |
lsof |
List Open Files | 列出系统打开的文件,在Linux中,一切皆文件,网络连接也是,可以快速找出哪个进程在使用某个端口。 | lsof -i :80 (查看哪个进程占用了80端口) lsof -i -P -n (查看所有网络连接,不解析域名和端口名) |
Windows 系统常用命令
Windows 系统下也有类似的命令,使用方法略有不同。
| 功能 | Linux/Unix 命令 | Windows 命令 | 说明 |
|---|---|---|---|
| 端口查看 | ss -tulnp / netstat -tulnp |
netstat -anob |
netstat -anob 可以显示端口、地址、PID和对应的进程名。 |
| DNS查询 | nslookup / dig |
nslookup / Resolve-DnsName (PowerShell) |
nslookup 在Windows下同样可用。 |
| 连通性测试 | ping |
ping |
用法基本一致。 |
| 路由跟踪 | traceroute |
tracert |
tracert 是Windows下的标准命令。 |
| ARP表 | ip neigh / arp -a |
arp -a |
arp -a 在Windows下查看所有接口的ARP缓存。 |
| 网络配置 | ip addr / ifconfig |
ipconfig / Get-NetIPConfiguration (PowerShell) |
ipconfig /all 查看详细的网络配置信息。 |
| TCP连接 | ss -t / netstat -t |
netstat -an |
netstat -an 查看所有TCP/UDP连接。 |
排查流程总结
遇到网络问题时,可以按照以下步骤进行:
- 现象确认:用户反馈什么问题?(网页打不开?游戏延迟高?)
- 应用检查:
systemctl status检查服务是否正常。 - DNS检查:
nslookup域名,看IP是否正确。 - 基础连通:
ping域名或IP,看是否能通,延迟如何。 - 路径跟踪:
traceroute或mtr,看问题出在哪一跳。 - 端口探测:
telnet或nc探测目标端口是否开放。 - 流量分析:使用
iftop,nethogs查看带宽占用。 - 终极抓包:如果以上都无法定位,使用
tcpdump抓包分析。
掌握这套命令体系,并理解其背后的逻辑,绝大多数网络问题都能迎刃而解。
