网络故障排查常用命令有哪些?

话题来源: 配置linux设置默认网关不生效的原因

遇到网络问题时的第一反应是什么?老实说,大多数人可能跟我一样,会先重启路由器试试(笑)。但作为一名IT老鸟,我更习惯先来几个命令行诊断工具,毕竟精准定位问题比盲人摸象靠谱多了。下面这些命令就像医生的听诊器,对网络健康检查特别管用。

基础网络连通性测试三板斧

ping命令绝对是网络诊断的敲门砖,简单输入ping 目标IP就能看到丢包率和延迟。有次我们机房服务器突然失联,就是用ping先发现到核心交换机的延时异常高,最后揪出了被老鼠咬坏的光纤。而traceroute(Linux)或tracert(Windows)则像个路径追踪器,能显示数据包经过的每一跳,特别适合排查跨国网络卡在哪个运营商节点的问题。

端口与连接诊断利器

当应用无法访问时,telnet IP端口号能快速测试端口开放状态。不过现在更推荐用nc -zv IP 端口,因为很多系统默认不装telnet了。netstat -tulnp这个命令我每天要用十几次,它能列出所有监听的TCP/UDP端口及对应进程,上周刚帮同事发现了个被挖矿程序占用的异常端口。新版Linux系统可以改用ss -tulnp,速度更快且输出更直观。

高级网络分析技巧

遇到诡异的数据包丢失时,mtr命令结合了ping和traceroute的功能,能持续监测路由质量。有次AWS东京到新加坡区的跨国专线断续,就是用mtr抓包发现新加坡POP节点有30%丢包。而对于DNS解析问题,dig +trace 域名可以完整显示DNS解析链条,比nslookup详细得多。记得有次CDN异常,就是用dig发现某级DNS返回了错误的CNAME记录。

容易被忽视的实用命令

arp -a查看本地ARP缓存表,排查IP冲突时特别有用;iftop实时监控带宽占用,找出哪个IP在疯狂拖慢网络;tcpdump -i eth0 port 80抓取特定端口的原始数据包,虽然输出像天书,但配合Wireshark分析能发现很多协议层问题。上个月财务系统异常,就是通过tcpdump发现有人用HTTP明文传输密码,吓得我们连夜上了HTTPS。

说实话,这些命令就像老中医的银针包,看起来朴素但用好了真能妙手回春。你们平时排查网络问题时最爱用哪个命令?欢迎在评论区分享你的独门秘技!(突然想到,要是把这些命令做成快捷键是不是能省下一半的咖啡钱?)

评论