菜鸟科技网

网络排查命令有哪些常用技巧?

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

网络排查命令有哪些常用技巧?-图1
(图片来源网络,侵删)

核心思想:分层排查法

当网络出现问题时,不要盲目尝试各种命令,遵循一个清晰的逻辑流程,可以大大提高排查效率。

  1. 应用层问题:先确认应用程序本身是否有问题,比如服务是否启动、配置是否正确。
  2. DNS 问题:域名无法解析是最常见的问题之一。
  3. 连通性问题:确认本地机器是否能到达目标服务器。
  4. 中间网络问题:确认数据包是否在中间的路由器或防火墙处被丢弃。
  5. 端口/服务问题:确认目标服务器上特定的服务端口是否开放且正常响应。
  6. 性能问题:如果连通正常但速度慢,则可能是线路或服务器性能问题。

第一层:应用层 & 服务状态检查

在确认网络问题前,先看看自己的服务或程序是否正常。

命令 全称 主要用途 示例
ss Socket Statistics 查看网络套接字、端口和连接状态ssnetstat 的现代替代品,速度更快,信息更全。 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

第三层:网络连通性基础检查

这是最核心的一步,用于判断本地机器与目标机器之间是否存在网络连接。

网络排查命令有哪些常用技巧?-图2
(图片来源网络,侵删)
命令 全称 主要用途 示例
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

第四层:中间网络与路由检查

pingtraceroute 显示在某个中间节点就失败了,或者延迟很高,就需要检查路由和中间网络设备。

命令 全称 主要用途 示例
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连接。

排查流程总结

遇到网络问题时,可以按照以下步骤进行:

  1. 现象确认:用户反馈什么问题?(网页打不开?游戏延迟高?)
  2. 应用检查systemctl status 检查服务是否正常。
  3. DNS检查nslookup 域名,看IP是否正确。
  4. 基础连通ping 域名或IP,看是否能通,延迟如何。
  5. 路径跟踪traceroutemtr,看问题出在哪一跳。
  6. 端口探测telnetnc 探测目标端口是否开放。
  7. 流量分析:使用 iftop, nethogs 查看带宽占用。
  8. 终极抓包:如果以上都无法定位,使用 tcpdump 抓包分析。

掌握这套命令体系,并理解其背后的逻辑,绝大多数网络问题都能迎刃而解。

分享:
扫描分享到社交APP
上一篇
下一篇