先用ping、traceroute、tcpdump三命令分层排查:ping验连通性及本地配置,traceroute定位链路中断点,tcpdump抓包分析真实通信行为,按“本机→网关→公网IP→应用端口”顺序排除故障。

遇到Linux网络不通,别急着重启或重装系统。先用几个基础命令快速定位问题:ping确认连通性,traceroute查路径,tcpdump抓包看真实流量——三者配合,80%的常见故障当场就能判断出是本地配置、中间链路还是远端服务的问题。
用ping验证基础连通性
ping是最直接的“能不能通”测试工具,但它不只是发个包那么简单:
- 加-c参数限制次数(如ping -c 4 www.baidu.com),避免误按Ctrl+C中断后残留进程
- 若ping本机IP(如127.0.0.1)通但ping网关不通,说明网卡驱动或本地路由有问题;若能ping通网关却ping不通外网域名,大概率是DNS或防火墙拦截
- 看到"Destination Host Unreachable"通常表示ARP失败或下一跳不可达;"Network is unreachable"则多为路由表缺失(可用ip route show检查)
用traceroute定位中断点
当ping失败或延迟异常高时,traceroute能逐跳显示数据包走到哪一环停住:
- 默认用UDP探测,某些防火墙会屏蔽,可改用ICMP模式:traceroute -I www.qq.com
- 看到某跳开始全是*号,且后续跳全不可达,说明该节点或其后的链路阻断(可能是运营商设备故障、ACL策略、或中间路由器禁用了TTL超时响应)
- 如果前几跳延迟正常,但从第5跳起延迟骤增或丢包,问题往往出在跨省骨干网或云服务商边界网关上,这时需联系对方提供traceroute结果协同排查
用tcpdump抓包确认真实通信行为
当ping和traceroute都“看起来正常”,但业务仍无法访问(比如网页打不开、SSH连不上),就得看实际发了什么包:
- 抓指定端口最有效:tcpdump -i eth0 port 80 -w http.pcap,然后用浏览器访问一次,再用Wireshark打开pcap分析
- 常见线索:只有SYN包发出,没收到SYN-ACK → 远端端口未监听或被防火墙DROP;有SYN-ACK但无ACK → 本地TCP栈异常;反复重传SYN → 网络丢包严重或中间设备限速
- 避免抓全量包导致性能抖动:加-c 100限制数量,或用host 192.168.1.100 and port 22精确过滤目标主机和端口
组合思路:从近到远分层排除
不要一上来就tcpdump全网卡。按顺序做这四步,效率最高:
- 检查本机IP和路由:ip addr show 和 ip route show
- ping网关 → 不通?查物理连接、网卡状态(ethtool eth0)、ARP缓存(ip neigh show)
- ping公网IP(如8.8.8.8)→ 通但域名不行?查/etc/resolv.conf和DNS可达性
- 应用层不通?用telnet target_ip port或curl -v http://...确认端口和服务响应,再决定是否tcpdump
不复杂但容易忽略。真正卡住的,往往是/etc/hosts写错了一行,或iptables一条规则挡住了回程包。把这三个命令用熟,比背一百条报错含义更管用。










