Linux 与系统

网络排障:Windows 与 Linux 命令对照

网络排障沿本机配置、网关、路由、DNS 和服务端口逐层进行。本文先讲 Windows 端的五个核心诊断命令,再给出 Linux 对等工具与命令对照表,并给出交叉验证方法。

网络排障沿本机配置、网关、路由、DNS 和服务端口逐层进行。Windows 与 Linux 的命令形态不同,用途一一对应。本文先讲解 Windows 端的五个核心诊断命令,再给出 Linux 对等的工具、命令对照表与故障定位思路。它们都具备查看配置、测试连通性、追踪路由、解析域名和查看端口这五项能力,掌握后可以跨系统完成排查。

打开命令窗口:进入网络诊断控制台

一切从打开命令提示符开始:

  1. 按下 Win + R 键,打开“运行”对话框;
  2. 输入 cmd;
  3. 按回车或点击“确定”。

建议:右键“开始”菜单,选择“Windows 终端(管理员)”或“命令提示符(管理员)”,可避免权限不足导致部分命令(如 ipconfig /release)无法执行。

Windows 核心诊断命令

ping:连通性与延迟

功能:测试目标主机是否可达,测量网络延迟和稳定性。

plaintext9 行
ping www.baidu.com          # 测试外网连通性

ping 192.168.1.1            # 测试本地网关

ping -t baidu.com           # 持续ping(Ctrl+C 停止)

ping -n 10 8.8.8.8          # 发送10个包

ping -l 1500 1.1.1.1        # 发送1500字节大包(测试MTU)

关键输出解读:

  • 时间=xxms:延迟,越小越好(<50ms 优秀,>200ms 可能卡顿)
  • TTL=xx:数据包生存时间,可粗略判断操作系统类型
  • 丢包率:若>0%,说明网络不稳定或被防火墙拦截

典型使用场景:

  • 网页打不开?先 ping 一下看是网络不通还是服务挂了。
  • 游戏卡顿?用 ping -t 长时间监控延迟波动。
  • 公司内网访问慢?对比 ping 网关 和 ping 外网,判断瓶颈位置。

ipconfig:本机网络配置

功能:显示和管理本机网络接口配置。

plaintext11 行
ipconfig                    # 基础IP信息(IP、子网掩码、网关)

ipconfig /all               # 完整信息(含MAC、DHCP、DNS等)

ipconfig /release           # 释放当前IP(需管理员)

ipconfig /renew             # 重新获取IP

ipconfig /flushdns          # 清除DNS缓存(解决“域名解析失败”)

ipconfig /displaydns        # 查看当前DNS缓存内容

关键信息:

  • IPv4 地址:你的设备在网络中的唯一标识
  • 默认网关:数据包“出口”,通常是路由器IP
  • DNS 服务器:负责将域名解析为 IP

典型使用场景:

  • 无法上网?先 ipconfig 看是否有有效IP(169.254.x.x 是自动分配失败)。
  • 网站打不开但IP能访问?很可能是DNS问题,尝试 ipconfig /flushdns。
  • 配置静态IP后无法联网?检查子网掩码和网关是否正确。

netstat:连接与端口

功能:显示当前所有网络连接、监听端口及关联进程。

plaintext7 行
netstat -a                  # 所有连接和监听端口

netstat -n                  # 用IP和端口号显示(更快)

netstat -ano                # 显示PID(进程ID),便于排查

netstat -b                  # 显示创建连接的程序名(需管理员)

关键字段:

  • 状态(State):

    • LISTENING:服务正在监听(如Web服务器)
    • ESTABLISHED:活跃连接(如你正在浏览网页)
    • TIME_WAIT:连接刚关闭,等待清理
  • 本地地址:端口:你的设备和使用的端口

  • 外部地址:端口:对方服务器和端口(如 220.181.38.148:443)

典型使用场景:

  • 怀疑电脑被木马控制?用 netstat -ano 找异常外连,再通过任务管理器查PID。
  • 端口被占用无法启动服务?netstat -ano | findstr :8080 快速定位。
  • 想知道微信/钉钉是否在后台联网?netstat -b 直接显示程序名。

tracert:路径追踪

功能:追踪数据包从你电脑到目标服务器经过的每一跳路由。

plaintext5 行
tracert www.google.com      # 跟踪到谷歌的路径

tracert -d baidu.com        # 不解析主机名(更快)

tracert -h 20 1.1.1.1       # 最多20跳(默认30)

输出理解:

  • 每一行代表一个路由器(跳点)
  • 三列时间是三次探测的延迟(单位ms)
  • * * * 表示该路由器不响应ICMP(常见于运营商设备)

典型使用场景:

  • 访问国外网站慢?用 tracert 看在哪一跳开始延迟飙升。
  • 公司访问某云服务失败?检查是否在某个中间节点中断。
  • 网络时通时断?对比多次 tracert 结果,看是否某跳不稳定。

小技巧:访问 https://ping.pe 可全球多地 ping 和 traceroute,辅助判断是本地还是目标端问题。

nslookup:DNS 查询

功能:手动查询DNS记录,诊断域名解析问题。

plaintext5 行
nslookup www.taobao.com         # 查询A记录(IP)

nslookup -type=MX gmail.com     # 查询邮件服务器

nslookup -type=NS baidu.com     # 查询负责解析的DNS服务器

交互模式更强大:

plaintext9 行
nslookup

> server 8.8.8.8        # 切换到Google DNS

> set type=ANY          # 查询所有记录

> github.com            # 执行查询

> exit

典型使用场景:

  • 网站打不开但其他人可以?用 nslookup 看你本地DNS是否返回错误IP。
  • 邮件发不出去?查 MX 记录确认邮件服务器地址。
  • 刚修改了域名解析?用不同DNS(如114.114.114.114 vs 8.8.8.8)验证生效情况。

分层诊断流程

五个命令组合起来,可以逐层缩小常见网络问题的范围:

plaintext15 行
1 ping 127.0.0.1          → 本机TCP/IP协议栈是否正常?

2 ping 本机IP             → 网卡驱动和配置是否正常?

3 ping 网关(如192.168.1.1)→ 本地网络是否连通?

4 ping 8.8.8.8            → 是否能上外网?

   ├─ 能通 → DNS问题 → 用 nslookup 检查

   └─ 不通 → 路由或出口问题 → 用 tracert 分析

5 ipconfig /all           → 检查IP、DNS、网关配置

6 netstat -ano            → 检查是否有异常连接或端口占用

经验判断:

  • 如果 ping IP 能通但 ping 域名不通 → DNS故障
  • 如果 tracert 在某跳后全部超时 → 防火墙拦截 或 路由黑洞
  • 如果 netstat 发现大量 SYN_SENT → 可能遭受SYN Flood攻击

Linux 对等命令

命令对照总表

用途 Windows Linux
连通性测试 ping ping
查看网络配置 ipconfig /all ip addr(旧:ifconfig)
查看连接与端口 netstat -ano ss -lntp(旧:netstat -lntp)
路径追踪 tracert traceroute / mtr
DNS 查询 nslookup dig / nslookup / getent
清除 DNS 缓存 ipconfig /flushdns resolvectl flush-caches(旧版本为 systemd-resolve --flush-caches)
路由表 route print ip route
端口测试 Test-NetConnection nc
端口扫描 nmap(需安装) nmap
抓包分析 Wireshark / netsh trace tcpdump / Wireshark

Linux 网络诊断的核心并不在于命令本身,而在于按用途选对工具。下面按 6 类展开。

诊断类:ping

最基础的联通性测试,能 ping 通至少证明网络层(ICMP)是通的:

plaintext4 行
ping example.com
ping -c 4 example.com           # 只发 4 个包
ping -i 0.2 -c 20 example.com   # 0.2 秒间隔
ping -s 1400 example.com        # 测试大包是否分片丢失

ping 不通并不等于服务不可用,很多服务器会禁 ICMP,但 80/443 照常工作。

DNS 类:dig / nslookup / getent

三个工具定位不同:

工具 走系统解析? 输出详细度 适合场景
nslookup 否(直接问 DNS) 简略 快速查记录
dig 否(直接问 DNS) 完整(含 TTL、authority) 排查 DNS 问题首选
getent 是(走 NSS) 简略 验证 /etc/hosts 是否生效

dig:DNS 排查首选

plaintext17 行
# 查 A 记录
dig example.com

# 查 AAAA(IPv6)
dig example.com AAAA

# 查 MX
dig example.com MX

# 指定 DNS 服务器
dig @8.8.8.8 example.com

# 简洁模式(只输出结果)
dig +short example.com

# 完整跟踪(从根 DNS 开始)
dig +trace example.com

nslookup:随手快查

plaintext2 行
nslookup example.com
nslookup example.com 8.8.8.8

getent:验证 hosts 文件 / NSS

plaintext2 行
getent hosts example.com
getent ahosts example.com

经典场景:dig 查出一个 IP,但浏览器访问另一个 IP——多半是 /etc/hosts 有覆盖,用 getent 才能看到操作系统真正使用的解析结果。

路由类:traceroute / mtr / ip

traceroute / mtr:包走哪条路

plaintext6 行
# traceroute(每跳测一次)
traceroute example.com

# mtr(动态、持续刷新)
mtr example.com
mtr -r -c 50 example.com    # report 模式,跑 50 个包后给报告

mtr 能直接看到每跳的丢包率,测线路比 traceroute 更直观。

ip:现代化网络配置

ifconfig / route 已被 ip 取代,新发行版默认都不装 ifconfig:

plaintext21 行
# 查所有网卡
ip addr
ip a                # 缩写

# 查路由表
ip route
ip r                # 缩写

# 查默认网关
ip route show default

# 临时加 IP
sudo ip addr add 192.168.1.100/24 dev eth0

# 临时加路由
sudo ip route add 10.0.0.0/24 via 192.168.1.1

# 看网卡状态
ip link
ip link set eth0 up
ip link set eth0 down

连接类:ss / netstat / curl / nc

ss:看谁连了谁

ss 是 netstat 的现代替代,速度快几个数量级,新服务器通常只装 ss:

plaintext14 行
# 看所有 TCP 监听端口(带进程)
sudo ss -lntp

# 看所有 UDP 监听
sudo ss -lnup

# 看所有连接
ss -tan

# 看某个端口在监听什么
sudo ss -lntp | grep :443

# 统计 TCP 连接状态
ss -s

netstat 等价命令:

plaintext2 行
sudo netstat -lntp
sudo netstat -lnup
参数 含义
-l listen 状态
-n 不解析端口名/IP(更快)
-t TCP
-u UDP
-p 显示进程
-a 全部连接

curl:HTTP 排查

plaintext17 行
# 看响应头
curl -I https://example.com

# 看完整请求/响应(详细模式)
curl -v https://example.com

# 强制 HTTP/2
curl --http2 -I https://example.com

# 指定 DNS(绕过本机 DNS)
curl --resolve example.com:443:1.2.3.4 https://example.com

# 通过代理
curl -x http://127.0.0.1:7890 https://www.google.com

# 测速度(只关心耗时)
curl -o /dev/null -s -w "DNS:%{time_namelookup} 连接:%{time_connect} 总:%{time_total}\n" https://example.com

nc(netcat):快速验证端口可达

plaintext12 行
# 测 TCP 端口
nc -zv example.com 443

# 测 UDP 端口
nc -zvu example.com 53

# 监听端口(调试用,模拟服务)
nc -l 9999

# 当临时聊天室(A 监听,B 连接)
# A 机器:nc -l 9999
# B 机器:nc <A_IP> 9999

扫描类:nmap

主动扫描目标主机的开放端口:

plaintext14 行
# 扫常见端口
nmap example.com

# 扫指定端口
nmap -p 22,80,443 example.com

# 扫整个段
nmap -p 22 192.168.1.0/24

# 系统识别 + 服务识别
sudo nmap -sV -O example.com

# 快速 SYN 扫描(需 root)
sudo nmap -sS example.com

注意:nmap 扫描非授权目标在很多国家属违法行为,只对自有服务器或明确授权的目标使用。

抓包类:tcpdump

查找链路层问题的深入工具,能直接观察网络上实际流动的字节:

plaintext20 行
# 抓某个网卡所有流量
sudo tcpdump -i eth0

# 抓特定端口
sudo tcpdump -i eth0 port 443

# 抓特定主机
sudo tcpdump -i eth0 host 1.2.3.4

# 组合:抓某主机的某端口
sudo tcpdump -i eth0 host 1.2.3.4 and port 443

# 不解析 IP/端口(更快)
sudo tcpdump -nn -i eth0 port 443

# 保存到文件(Wireshark 打开分析)
sudo tcpdump -i eth0 -w /tmp/capture.pcap port 443

# 读取文件
tcpdump -r /tmp/capture.pcap
参数 含义
-i 指定网卡
-n 不解析 IP
-nn 不解析 IP 也不解析端口
-w file 保存为 pcap
-r file 读取 pcap
-c N 抓 N 个包就停
-A 用 ASCII 显示包内容
-X 用十六进制 + ASCII

按故障类型快速定位

故障表现 用哪个命令
完全不通 ping → traceroute/mtr
域名解析有问题 dig → getent → 查 /etc/resolv.conf
解析对了但访问慢 mtr 看路由跳数和丢包
HTTP 返回错(502/504) curl -v 看响应头
服务起了端口不通 ss -lntp 看是否真的在监听
端口监听了但外网不通 防火墙 / 云厂商安全组
抓不到包定位不了 tcpdump 看链路层到底有没有包
想知道目标开了哪些端口 nmap

进阶方向

  • 多动手:在真实网络问题中主动使用这些命令,印象更深刻。
  • 记笔记:建立自己的命令速查表和常见问题解决方案。
  • 理解原理:知道“为什么”比“怎么做”更重要(如TTL、三次握手)。
  • 掌握 Wireshark 抓包分析,从数据包层面理解通信过程。
  • 学习 arp -a / ip neigh(查看 ARP 缓存)、route print / ip route(查看路由表)。
  • 尝试 PowerShell 网络命令,如 Test-NetConnection 可作为 ping 的补充,探测指定端口。

实用经验

  • ss -lntp 是 Linux 上查端口的轻量命令,记住它一个就够。
  • mtr -r -c 100 是 VPS 测线路的标准姿势,跑完 100 个包再下判断。
  • curl -v 比 wget 更适合排查 HTTPS 问题,能看到握手细节、跳转和证书。
  • tcpdump 抓包写文件用 Wireshark 分析,命令行肉眼盯包效率低。
  • dig +short 适合写脚本,直接拿 IP,不用解析多行输出。

把网络探测与应用可用性分开

ping 成功只说明相应 ICMP 路径可达,目标服务仍可能没有监听或被不同规则限制。Windows 上可以用 Test-NetConnection -ComputerName example.com -Port 443 补充 TCP 端口检查,Linux 上用 nc -zv example.com 443,再用真实 HTTP 请求验证应用。tracert 中间跳不响应可能来自限速或过滤,只有结合后续跳与目标结果才能判断链路中断。

排查记录保留本机地址、网关、DNS 服务器、目标地址及时间。对照域名请求与指定 IP 请求时,还需保留 TLS SNI 和 HTTP Host,避免把虚拟主机不匹配误判为网络失败。

← 返回文章