Linux网络故障排查有哪些技巧?

话题来源: 常见的网络中断后自动切换线路的设置建议

遇到Linux服务器网络故障时,那种抓狂的感觉我太懂了!上个月我们一台重要服务器突然失联,整个运维团队急得团团转。经过那次惨痛教训,我总结出几个特别实用的排查技巧,分享给可能遇到同样困境的你。

从基础开始:这些命令你得熟记于心

千万别小看那些基础的网络命令,它们往往能最快定位问题。我习惯先用ip a查看网卡状态,这个比老旧的ifconfig显示的信息更全面。有一次就发现是网卡莫名其妙进入了DOWN状态,一个简单的ip link set eth0 up就解决了问题。

接着用ping测试连通性时,我发现个有趣的现象:能ping通网关但ping不通外网?这种情况八成是DNS或者路由出了问题。这时候traceroute命令就派上用场了,它能清晰显示数据包是在哪个节点丢失的。

那些容易被忽视的配置文件

有一次网络故障折腾了我整整半天,最后发现竟然是/etc/resolv.conf文件被某个脚本意外清空了!所以现在我排查网络问题时,一定会检查这几个关键文件:

  • /etc/network/interfaces(或/etc/sysconfig/network-scripts/目录)
  • /etc/resolv.conf
  • /etc/hosts
  • /etc/nsswitch.conf

特别是使用NetworkManager的系统,有时候手动修改的配置会被它覆盖,这种情况简直让人抓狂!

高级技巧:数据包捕获与分析

当常规手段都找不到原因时,就该祭出tcpdump这个大杀器了。记得有次我们的服务器能收到请求但就是不响应,用tcpdump -i eth0 -nn抓包后发现,原来是防火墙规则把返回的数据包给DROP了。

对于更复杂的协议分析,我推荐wireshark的终端版tshark。它的过滤语法非常强大,比如tshark -i eth0 -Y "http.request.method == GET"可以只显示HTTP GET请求。

服务日志:藏着答案的宝库

很多网络服务的问题其实都写在日志里,只是我们经常忽略。我习惯用journalctl -u NetworkManager --since "1 hour ago"来查看近期的网络管理日志。DHCP客户端的问题?看看/var/log/syslog里dhclient的报错信息。

有一次SSH连接特别慢,查看/var/log/auth.log才发现是GSSAPI认证超时导致的,在sshd_config里加上GSSAPIAuthentication no就解决了。

网络故障排查就像破案,需要耐心和系统性的思维。每次解决一个问题,你的”侦探”技能就会提升一级。记住,最复杂的问题往往有最简单的解决方法 – 我就遇到过重启网卡就搞定的大问题!

评论