摘要:凌晨 3 点,服务器突然断连,监控告警疯狂刷屏 —— 每个 IT 运维都经历过这种绝望时刻。图形化工具此时往往掉链子,真正的排障高手都知道,命令行工具才是网络故障诊断的终极武器。本文精选 10 个最常用的网络命令,结合 Windows 和 Linux 双平台差
凌晨 3 点,服务器突然断连,监控告警疯狂刷屏 —— 每个 IT 运维都经历过这种绝望时刻。图形化工具此时往往掉链子,真正的排障高手都知道,命令行工具才是网络故障诊断的终极武器。本文精选 10 个最常用的网络命令,结合 Windows 和 Linux 双平台差异,用实战案例教你从 "网络不通" 快速定位到具体问题根源,从此告别抓瞎式排障。
ping 命令堪称网络诊断的 "听诊器",通过 ICMP 协议测试网络连通性的原理简单直接,但参数运用却暗藏玄机。Windows 和 Linux 系统下的 ping 命令参数差异较大,实战中需注意区分:
Windows 系统常用用法:# 持续监测网关连通性(默认4个包,-t参数实现持续发送)ping -t 192.168.1.1# 大包测试MTU问题(-l指定数据包大小,单位字节)ping -l 1500 www.baidu.com# 不分段测试(-f参数,若提示拆分则需调整MTU)ping -f -l 1500 www.baidu.comLinux 系统常用用法:bash
# 指定发送10个数据包(-c参数,默认持续发送)ping -c 10 www.baidu.com# 设定数据包大小(-s参数,单位字节)ping -s 1024 www.baidu.com# 不分段+指定大小测试MTUping -f -s 1472 www.baidu.com通过返回的 TTL 值可粗略判断目标系统:Windows 通常返回 100-130,Linux/Unix 则在 240-255 之间,这对定位跨系统网络问题很有帮助。
tracert(Windows)与 traceroute(Linux) 是追踪路由路径的利器,但底层协议差异可能导致结果不同:Windows 的 tracert 基于 ICMP 协议,Linux 的 traceroute 默认用 UDP 协议(端口 33434),遇到防火墙拦截时需切换协议:
Windows 系统用法:# 限制最大跳数为15(默认30跳,-h参数)tracert -h 15 www.baidu.com# 禁用域名解析加速(-d参数,避免DNS耗时)tracert -d www.baidu.comLinux 系统用法:bash
# 切换为ICMP协议(-I参数,解决UDP被拦截问题)traceroute -I www.baidu.com# 限制最大跳数为15(-m参数,对应Windows的-h)traceroute -m 15 www.baidu.com# 指定端口测试(-p参数,针对特定服务路由)traceroute -p 80 www.baidu.com分析结果时需注意:某个节点超时不代表故障,可能是该节点禁用了 ICMP 响应,只要后续节点有响应,说明路径整体通畅。
IP 配置查询是排查本地网络设置的第一步,双平台命令功能相似但写法不同:
Windows 系统用法:# 查看完整网络配置(MAC、DHCP、DNS全显示,/all参数)ipconfig /all# 释放DHCP分配的IP地址ipconfig /release# 重新获取DHCP地址ipconfig /renew# 清除DNS缓存(解决"网页打不开但QQ能上"问题)ipconfig /flushdnsLinux 系统用法:bash
# 查看IP及网卡信息(替代老式ifconfig)ip addr# 查看路由表(-n参数,显示IP而非域名)route -n# 释放DHCP地址(-r参数)dhclient -r# 重新获取DHCP地址并显示详细过程(-v参数)dhclient -v ens33当应用提示 "无法连接服务器" 时,netstat 命令是定位端口占用的核心工具,双平台参数组合略有差异,但核心功能一致:
Windows 系统用法:# 查看所有连接+进程ID(-a全连接,-n数字显示,-o进程ID)netstat -ano# 筛选80端口占用情况(结合find命令)netstat -ano | find "80"# 查看进程对应的程序(需结合任务管理器,或用tasklist)tasklist | find "1234" # 1234为netstat查到的PIDLinux 系统用法:bash
# 查看监听状态的TCP/UDP端口+进程(-t TCP,-u UDP,-l监听,-n数字,-p进程)netstat -tulnp# 筛选80端口占用(结合grep)netstat -tulnp | grep 80# 查看进程详情(替代tasklist,-p指定PID)ps -ef | grep 1234Linux 系统中,ss命令可替代 netstat,效率更高,参数用法基本兼容:ss -tulnp | grep 80。
端口连通性测试不能仅依赖 telnet(易被防火墙误导),netcat(nc)工具更可靠,支持 TCP/UDP 检测:
Windows/Linux 通用用法(需安装 nc,Windows 可下载 nmap 附带):# 测试TCP端口连通性(-z扫描模式,-v详细输出)nc -zv www.baidu.com 80# 测试UDP端口(-u参数,针对DNS等UDP服务)nc -zvu 8.8.8.8 53HTTPS 端口专用测试(用 openssl 验证证书 + 连通性):bash
# 测试443端口并显示SSL证书信息openssl s_client -connect www.baidu.com:443DNS 解析问题常伪装成 "网络故障",nslookup(Windows/Linux 通用)与 dig(Linux 专用) 是诊断利器:
nslookup 用法(双平台通用):# 用默认DNS查询域名nslookup www.baidu.com# 指定谷歌DNS(8.8.8.8)查询,对比默认DNS结果nslookup www.baidu.com 8.8.8.8# 查询邮件服务器(MX记录)nslookup -type=mx baidu.comLinux dig 命令(功能更强大):bash
# 追踪完整DNS解析链(+trace参数,看根域→顶级域→权威域)dig +trace www.baidu.com# 只显示解析结果(+short参数,简洁输出)dig +short www.baidu.com# 指定DNS服务器查询dig @114.114.114.114 www.baidu.com若解析结果异常,需检查本地 hosts 文件:Windows 路径C:\Windows\System32\drivers\etc\hosts,Linux 路径/etc/hosts,避免被篡改导致域名指向错误。
mtr 命令是 ping+traceroute 的加强版,适合持续监测网络质量,Linux 默认预装,Windows 需安装 WinMTR:
Linux mtr 用法:bash
# 实时监测百度路由质量(显示丢包率、延迟变化)mtr www.baidu.com# 运行10次后退出(-c参数,生成统计报告)mtr -c 10 www.baidu.com# 禁用域名解析(-n参数,加速显示)mtr -n www.baidu.com通过 "Loss%" 列可快速定位丢包节点:若中间节点丢包但后续节点正常,通常是该节点做了流量限制(非故障);若终点丢包,则需检查目标服务器或最后一跳网络。
tcpdump 命令(Linux 专用)是命令行抓包神器,复杂故障排查必备,需 root 权限:
bash
# 抓取eth0网卡的所有流量(-i指定网卡)tcpdump -i eth0# 只抓HTTP流量(port 80,针对网页服务)tcpdump -i eth0 port 80# 抓取特定IP的数据包(host参数,定位单台主机问题)tcpdump -i eth0 host 192.168.1.100# 抓取TCP协议+指定端口,保存为pcap文件(供Wireshark分析)tcpdump -i eth0 tcp port 443 -w capture.pcap# 抓取DNS流量(UDP 53端口,分析解析过程)tcpdump -i eth0 udp port 53 -vWindows 系统可替代工具:windump(tcpdump Windows 版)或直接用 Wireshark 图形化抓包。
路由表分析解决复杂网络访问问题(如多宽带出口、跨网段访问):
查看路由表:# Windows查看路由表route printbash# Linux查看路由表(-n参数,IP数字显示)route -n添加静态路由(永久生效需加参数):# Windows添加静态路由(-p参数永久生效,重启不丢失)route add 10.0.0.0 mask 255.255.255.0 192.168.1.1 -p# 删除静态路由route delete 10.0.0.0bash# Linux添加静态路由(临时生效,重启丢失)route add -net 10.0.0.0/24 gw 192.168.1.1# Linux永久添加静态路由(写入/etc/rc.local)echo "route add -net 10.0.0.0/24 gw 192.168.1.1" >> /etc/rc.localARP 欺骗排查(检测 IP 与 MAC 绑定异常):# Windows查看arp缓存arp -a# Windows绑定IP与MAC(防止ARP欺骗)arp -s 192.168.1.1 00-11-22-33-44-55bash# Linux查看ARP缓存arp -n# Linux绑定IP与MAC(写入/etc/arp.conf永久生效)arp -s 192.168.1.1 00:11:22:33:44:55当用户报告 "无法访问网站" 时,按以下流程逐步定位,效率提升 10 倍:
链路连通性检测:先测内网再测外网,排除基础链路问题# 1. 测试网关连通性(内网是否通)ping 192.168.1.1# 2. 测试公共DNS(外网是否通,8.8.8.8为谷歌DNS)ping 8.8.8.8路由路径追踪:定位故障节点位置(内网 / 运营商 / 目标服务器)# Windows追踪百度路由tracert -d www.baidu.combash
# Linux追踪百度路由(ICMP协议避免拦截)traceroute -I www.baidu.com端口与服务检测:确认目标服务是否正常开放bash
# 测试百度80端口(HTTP)nc -zv www.baidu.com 80# 测试百度443端口(HTTPS)nc -zv www.baidu.com 443DNS 解析验证:排查域名解析是否异常# 用默认DNS和公共DNS分别查询,对比结果nslookup www.baidu.comnslookup www.baidu.com 114.114.114.114# 清除DNS缓存(若解析异常)ipconfig /flushdns # Windowssystemctl restart nscd # Linux(或restart NetworkManager)流量深度分析:持续丢包 / 卡顿问题,抓包找根源bash
# 抓取目标网站流量,保存为pcap供后续分析tcpdump -i eth0 host www.baidu.com -w baidu_traffic.pcap将常用命令组合成脚本,避免重复输入,适合批量排查或定期监测:
Linux 批量扫描内网存活主机(替代 Ping Sweep):bash
# 扫描192.168.1.0/24网段存活主机,输出IP+主机名for i in {1..254}; do ping -c 1 -w 1 192.168.1.$i > /dev/null && echo "192.168.1.$i is up" && nslookup 192.168.1.$i | grep name; doneWindows 批量检查端口连通性:# 批量测试192.168.1.1-10的80端口,输出结果到文件for /l %i in (1,1,10) do (nc -zv 192.168.1.%i 80 >> port_test.log 2>&1)网络质量定期监测(Linux 定时任务):bash
# 每小时执行一次mtr测试,结果保存到日志(添加到crontab)0 * * * * /usr/bin/mtr -c 20 www.baidu.com >> /var/log/mtr_monitor.log 2>&1ping 命令:"持续 t(Windows)/c(Linux)、大小 l(Windows)/s(Linux)、不分段 f"netstat 命令:"a 全连接、n 数字显、o(Windows)/p(Linux)进程看"traceroute 命令:"协议 I(Linux)、跳数 m(Linux)/h(Windows)、端口 p"网络故障诊断的核心不是记命令,而是建立 "现象→工具→结论" 的逻辑链:看到 "网页打不开" 先想 DNS,看到 "连接超时" 先测端口,看到 "间歇性断连" 先查路由。掌握这些工具和思路,你也能成为同事眼中的 "排障大神"!
来源:AI码力