Linux/Windows 双环境下的实用网络诊断与故障排查技巧

举报
yd_270028895 发表于 2026/10/09 13:03:06 2026/10/09
【摘要】 一、故障排查的核心思路网络问题的表象千差万别,但根因往往逃不出“物理层 → 链路层 → 网络层 → 传输层 → 应用层”这五层框架。定位问题时,建议遵循“由近及远、由下到上”的顺序:先确认本机协议栈与网卡是否正常,再检查网关与路由,最后才排查 DNS、代理与防火墙策略。这样能快速缩小范围,避免在无关方向上浪费大量时间。二、基础连通性与路由诊断2.1 连通性测试先用 ping 确认目标是否可达...

一、故障排查的核心思路

网络问题的表象千差万别,但根因往往逃不出“物理层 → 链路层 → 网络层 → 传输层 → 应用层”这五层框架。定位问题时,建议遵循“由近及远、由下到上”的顺序:先确认本机协议栈与网卡是否正常,再检查网关与路由,最后才排查 DNS、代理与防火墙策略。这样能快速缩小范围,避免在无关方向上浪费大量时间。

二、基础连通性与路由诊断

2.1 连通性测试

先用 ping 确认目标是否可达。Linux 与 Windows 的默认行为不同:Linux 默认持续发包,Windows 默认只发 4 个。跨平台脚本中务必显式指定次数,避免脚本挂起。

# Linux
ping -c 4 8.8.8.8

# Windows
ping -n 4 8.8.8.8

2.2 路由追踪

当 ping 不通时,用路由追踪判断丢包发生在哪一跳。Linux 推荐 mtr(持续采样,比 traceroute 更直观),Windows 用 tracert 或 pathping(会统计每一跳的丢包率)。

# Linux:持续探测并统计每一跳丢包
mtr -rwzbc 50 8.8.8.8

# Windows:逐跳统计,耗时较长但信息全
pathping 8.8.8.8

三、端口与连接状态排查

能 ping 通不等于服务可用。此时应检查目标端口是否监听、连接是否建立。Linux 用 ss(比 netstat 更全且更快),Windows 用 netstat -ano 并配合 tasklist 定位进程。

# Linux:查看所有监听端口
ss -tulnp

# Linux:按状态统计连接数
ss -s

# Windows:查看监听端口及对应进程 PID
netstat -ano | findstr LISTENING
tasklist | findstr <PID>

PowerShell 中还可以用 Test-NetConnection 一步完成“连通 + 端口”检测:

Test-NetConnection 10.0.0.5 -Port 3306 -InformationLevel Detailed

四、DNS 解析排查

很多“网站打不开”其实是 DNS 问题。核心是先区分“解析失败”还是“连接失败”:能解析出 IP 但连不上,通常是网络或防火墙问题;解析不出 IP,才需要重点查 DNS。

# Linux
dig +short www.example.com
dig www.example.com @8.8.8.8   # 指定公共 DNS 做对比

# Windows PowerShell
Resolve-DnsName www.example.com
nslookup www.example.com 8.8.8.8

若指定公共 DNS 能解析而默认 DNS 不能,说明本地 DNS 配置或缓存有问题。Windows 可用 ipconfig /flushdns 刷新缓存,Linux 视 systemd-resolved 使用 resolvectl flush-caches。

五、用抓包定位“玄学”问题

当握手失败、TLS 异常、大量重传等问题无法靠日志判断时,抓包是终极手段。Linux 用 tcpdump,Windows 10/11 内置 pktmon,也可用 Wireshark 做图形化分析。

# Linux:抓取 80 端口的前 100 个包并存盘
tcpdump -i any -nn port 80 -c 100 -w http.pcap

# Windows:内置抓包并转换为 pcapng
pktmon start --etw -c --comp nics
pktmon stop
pktmon etl2pcap PktMon.etl -o capture.pcapng

六、常见故障场景速判

现象 优先排查方向 常用命令
完全无法上网 网卡 / IP / 网关 ip a / ipconfig /all
能 ping 通 IP,域名不通 DNS 解析 dig / Resolve-DnsName
域名正常但端口连不上 服务监听 / 防火墙 ss -tulnp / netstat -ano
时通时断、偶发丢包 链路质量 / 路由 mtr / pathping
连接建立但页面卡顿 TLS / 应用层 tcpdump / Wireshark

七、跨平台命令速查表

用途 Linux Windows
连通性测试 ping -c 4 ping -n 4
路由追踪 mtr / traceroute tracert / pathping
查看监听端口 ss -tulnp netstat -ano
端口探测 nc -zv host port Test-NetConnection
DNS 解析 dig / nslookup Resolve-DnsName
抓包 tcpdump pktmon / Wireshark
刷新 DNS 缓存 resolvectl flush-caches ipconfig /flushdns

八、小结

网络排障并不依赖“运气”,而是一套可复用的方法:先分层定位、再逐段验证、最后用抓包收口。把上面这些命令整理成自己的跨平台速查脚本,遇到问题时按顺序跑一遍,绝大多数常见故障都能在几分钟内定位到根因。建议日常就用 mtr 与 Test-NetConnection 替代单次 ping,长期留存基线数据,问题发生时对比更高效。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。