网络问题是 Linux 运维和开发中最高频的故障来源。掌握常用的网络调试命令,能快速定位连通性、DNS、端口、路由和性能问题。本文系统整理 Linux 网络调试的核心工具与实战技巧。

# 基本连通性测试ping -c 4 baidu.com# 指定源地址测试ping -I eth0 8.8.8.8# 禁止反查 DNS(加速)ping -n 10.0.0.1
ping 使用 ICMP 协议。注意:很多服务器会屏蔽 ICMP,ping 不通不代表网络不通。
# 追踪到达目标经过的路由节点traceroute baidu.com# 使用 TCP 方式(探测被防火墙过滤的中间节点)traceroute -T -p 443 baidu.com
可用 mtr 提供持续可达性统计,更适合长期诊断:
mtr -n --report baidu.com
# TCP 连接测试(最可靠,可测防火墙)nc -zv 10.0.0.1 443# 发送 HTTP 请求探测curl -v https://example.com# 测试 UDPnc -zv -u 10.0.0.1 53
# 查看所有监听端口ss -tlnp# 查看已建立的连接ss -tnp# 传统 netstat 方式netstat -tlnp
ss 是 netstat 的现代替代品,性能更好、信息更全。
# 查看端口对应的进程lsof -i :8080# 查看进程监听的端口ss -tlnp | grep nginx
# 使用系统解析器查询nslookup example.com# 指定 DNS 服务器nslookup example.com 8.8.8.8# 更强大的查询工具dig example.comdig @114.114.114.114 example.com +short# 查看本地 DNS 配置cat /etc/resolv.conf
常见 DNS 故障排查思路:
dig 指定公共 DNS(如 8.8.8.8),判断是本地 DNS 还是公共 DNS 问题ping 域名与 ping IP 对比,判断是否为域名解析失败/etc/resolv.conf 后需重启 systemd-resolved 或 NetworkManager# 抓取指定网卡所有包tcpdump -i eth0# 抓取指定端口tcpdump -i eth0 port 80# 抓取特定主机通信tcpdump -i eth0 host 10.0.0.1# 抓取并保存到文件tcpdump -i eth0 -w /tmp/capture.pcap host 10.0.0.1 and port 443# 读取抓包文件tcpdump -r /tmp/capture.pcap
# 按协议过滤tcpdump -i eth0 icmptcpdump -i eth0 tcptcpdump -i eth0 udp# 按端口组合tcpdump -i eth0 'tcp port 80 or tcp port 443'# 抓 SYN 包(排查连接建立问题)tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
# 查看路由表ip route showroute -n# 添加默认网关ip route add default via 192.168.1.1# 添加静态路由ip route add 10.10.0.0/16 via 192.168.1.1# 删除路由ip route del 10.10.0.0/16
路由排查思路:
ip route get <目标IP> 查看实际走哪条路由# 查看所有网卡信息ip addr showip link show# 查看网卡速率/状态ethtool eth0# 启用/禁用网卡ip link set eth0 upip link set eth0 down# 查看网卡错误统计ifconfig eth0ip -s link show eth0
网卡丢包排查看 ip -s link 的 RX/TX errors 与 drops 字段。
# 测试 TCP 带宽iperf3 -s # 服务端iperf3 -c 10.0.0.1 # 客户端# 测试 UDP 带宽iperf3 -u -b 100m -c 10.0.0.1# 查看系统连接统计ss -s
场景:网站无法访问
ping 域名 → 判断 DNS 是否解析dig 域名 → 确认解析结果nc -zv <IP> 443 → 判断端口连通性traceroute → 定位卡在哪个节点ss -tlnp → 确认本机服务是否监听tcpdump 抓包 → 分析具体包交互iptables -L → 检查防火墙规则ip route → 检查路由是否正确Linux 网络调试的关键是分层排查:从物理链路 → 网卡配置 → IP/路由 → 端口/服务 → DNS → 应用层,逐层缩小范围。熟练掌握 ping、ss、traceroute、dig、tcpdump、ip 这六个核心命令,就能解决绝大多数网络问题。建议将这些命令整理成自己的排查清单,遇到故障时按顺序执行,效率会极大提升。