nslookup、ping、telnet


一、基础网络连接检测(主机是否可达)

核心命令:ping

典型现象

  • 浏览器打开任何网页均提示“无法连接到服务器”
  • 微信、QQ等软件显示“网络未连接”
  • 本地设备连接WiFi后,路由器后台显示“设备离线”

工具使用与解读

  • 执行 ping 192.168.1.1(网关IP):
    • 无响应(Request timed out):本地到网关的链路故障(如网线松动、网卡禁用)。
    • 丢包率高(丢失>30%):WiFi信号弱、路由器负载过高或硬件故障。
  • 执行 ping 8.8.8.8(公共IP):
    • 若失败但 ping 网关 成功:网关到外网的链路故障(如路由器拨号失败)。

解决办法

  • 链路故障:重新插拔网线/重启网卡(Windows:禁用后启用;Linux:sudo ip link set eth0 up)。
  • 网关故障:重启路由器/光猫,检查WAN口是否获取公网IP(登录路由器管理页查看)。
  • 外网故障:联系运营商确认宽带是否欠费或线路故障。

在排查网络问题时,ping 命令的输出包含关键的网络连通性信息,不同返回值对应不同的网络状态。

一、先看「正常 ping 通」的输出格式(以 Windows 为例)

当目标地址(如 github.com)能正常连通时,输出会包含 4 类核心信息,每一行对应一次「发送-接收」的过程:

正在 Ping github.com [140.82.112.4] 具有 32 字节的数据:
来自 140.82.112.4 的回复: 字节=32 时间=189ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=192ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=187ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=190ms TTL=52

github.com [140.82.112.4] 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 187ms,最长 = 192ms,平均 = 189ms

关键字段含义:

字段 含义
[140.82.112.4] 目标域名(github.com)解析后的IP 地址(确认 DNS 解析是否正常)。
字节=32 发送的测试数据包大小(默认 32 字节,可通过 -l 参数修改)。
时间=189ms 往返延迟(从本地发送数据包到接收目标回复的时间):<br>- 数值越小,网络越流畅;<br>- 超过 100ms 可能有轻微卡顿,超过 500ms 属于高延迟。
TTL=52 生存时间(数据包在网络中能经过的「路由器跳数上限」):<br>- 不同系统默认 TTL 不同(Windows 默认为 128,Linux 默认为 64);<br>- 数值每经过一个路由器会减 1,减到 0 时数据包会被丢弃(此时会返回「TTL 过期」错误)。
丢失=0 (0% 丢失) 数据包丢失率:0% 表示网络连通性极佳;丢失率超过 10% 说明网络不稳定(丢包)。

二、常见「异常返回值」及含义(重点排查方向)

ping 失败时,输出会提示具体错误,不同错误对应不同的网络问题,按排查优先级排序如下:

1. 「请求超时(Request timed out)」
  • 输出示例
    来自 192.168.1.1 的回复: 目标主机不可达。
    请求超时。
    请求超时。
  • 含义:本地发送的数据包没有收到目标的任何回复(最常见错误)。
  • 排查方向
    1. 优先确认目标地址是否正确(比如域名拼错、IP 地址错误);
    2. 检查目标是否「禁止 ping」(很多服务器/网站会关闭 ICMP 协议,导致 ping 不通但实际服务可用,比如国内部分云服务器、GitHub 有时也会屏蔽 ping);
    3. 排查本地网络:Wi-Fi 断连、网线松动,或路由器故障(重启路由器试试);
    4. 排查防火墙/杀毒软件:本地防火墙是否拦截了 ICMP 数据包(临时关闭后重试)。
2. 「目标主机不可达(Destination host unreachable)」
  • 输出示例
    正在 Ping 192.168.1.100 具有 32 字节的数据:
    来自 192.168.1.1 的回复: 目标主机不可达。
    来自 192.168.1.1 的回复: 目标主机不可达。
  • 含义本地网关(如路由器)无法找到目标地址(目标不在当前网络,或目标设备未开机/未联网)。
  • 排查方向
    1. 若目标是「局域网设备」(如 192.168.1.100):确认目标设备是否开机、是否连入同一 Wi-Fi/网线;
    2. 若目标是「公网地址」(如 github.com):检查本地网关配置是否正常(比如路由器是否获取到正确的公网 IP),或是否有路由表错误(一般普通用户无需修改,重启路由器即可)。
3. 「未知主机(Unknown host)」
  • 输出示例
    ping: unknown host github.com
  • 含义DNS 解析失败(本地无法将域名转换为 IP 地址)。
  • 排查方向
    1. 检查域名是否拼错(比如把 github.com 写成 githbu.com);
    2. 手动修改 DNS 服务器(换成公共 DNS,如谷歌 8.8.8.8、国内 114.114.114.114);
    3. 排查 DNS 缓存:Windows 执行 ipconfig /flushdns 清空缓存,Linux/macOS 执行 sudo dscacheutil -flushcache
4. 「TTL 过期(TTL expired in transit)」
  • 输出示例
    来自 10.0.0.1 的回复: TTL 过期在传输中。
    来自 10.0.0.1 的回复: TTL 过期在传输中。
  • 含义:数据包在网络中经过的路由器跳数超过了 TTL 上限(默认 128/64),被中间路由器丢弃(一般是「路由环路」导致)。
  • 排查方向
    1. 临时增大 TTL 值测试(Windows 用 ping github.com -i 255,Linux/macOS 用 ping github.com -t 255);
    2. 若仍失败:可能是 ISP(运营商)的路由故障,联系运营商客服反馈。
5. 「一般故障(General failure)」
  • 输出示例
    正在 Ping github.com [140.82.112.4] 具有 32 字节的数据:
    一般故障。
    一般故障。
  • 含义:本地网络接口(如网卡)故障,或网络配置错误(如 IP 地址冲突)。
  • 排查方向
    1. 检查本地网卡是否正常(Windows 打开「设备管理器」看网卡是否有黄色感叹号,macOS 看「系统设置-网络」是否显示「已连接」);
    2. 排查 IP 冲突:同一局域网内是否有其他设备和本地电脑用了相同的 IP(Windows 用 ipconfig 查看本地 IP,macOS/Linux 用 ifconfig)。

三、补充:ping 命令的实用参数(帮你更精准排查)

除了默认用法,添加参数能获取更多信息:

  • ping -t 目标地址(Windows)/ ping -c 次数 目标地址(Linux/macOS):持续 ping(Windows 按 Ctrl+C 停止,Linux/macOS 用 -c 10 表示 ping 10 次);
  • ping -l 数据包大小 目标地址(Windows)/ ping -s 数据包大小 目标地址(Linux/macOS):测试不同大小数据包的传输(如 ping -l 1024 github.com 发送 1024 字节的包);
  • ping -n 次数 目标地址(Windows):指定 ping 的次数(如 ping -n 5 github.com 只 ping 5 次)。

总结:看 ping 输出的核心逻辑

  1. 先看「是否解析出 IP」:有 IP → DNS 正常;无 IP → 查 DNS 或域名拼写;
  2. 再看「是否有回复」:有回复 → 看延迟(时间)和丢包率;无回复 → 查超时/不可达原因;
  3. 最后结合「错误提示」定向排查:超时查防火墙/目标禁 ping,不可达查目标联网状态,TTL 过期查路由。

注意:ping 只是「网络连通性测试」,即使 ping 不通,也不代表目标服务(如 Git、网页)不可用(比如目标禁 ping 但 443/22 端口正常),需结合后续 telnet 或浏览器访问进一步确认。

二、DNS解析问题(域名无法转化为IP)

核心命令:nslookupdig(Linux/macOS)

典型现象

  • 输入 www.baidu.com 提示“无法解析域名”,但直接输入 180.101.50.242(百度IP)可打开网页
  • 电脑能ping通IP(如 ping 114.114.114.114),但ping域名时提示“未知主机”

工具使用与解读

  • 执行 nslookup www.baidu.com
    • 若显示 Non-existent domain:域名不存在或DNS服务器无该记录(可能是拼写错误)。
    • 若显示 DNS request timed out:本地DNS服务器不可用(如路由器DNS配置错误)。
  • 执行 dig @8.8.8.8 www.baidu.com(指定谷歌DNS):
    • 若成功解析:本地默认DNS服务器故障,需更换DNS。

解决办法

  • 清除DNS缓存:
    • Windows:ipconfig /flushdns
    • Linux:sudo systemctl restart nscd
    • macOS:sudo dscacheutil -flushcache
  • 更换DNS服务器:手动配置为114.114.114.114(国内)或223.5.5.5(阿里)(通过网卡属性或路由器设置)。

三、端口连通性检测(服务是否开放)

核心命令:telnetnctest-netconnection

典型现象

  • 访问公司OA系统(端口8080)提示“连接被拒绝”,但能ping通服务器IP
  • 远程连接服务器(SSH 22端口)时提示“端口未开放”
  • 本地启动服务后,其他设备无法通过端口访问(如Tomcat的8080端口)

工具使用与解读

  • 执行 telnet 192.168.1.100 8080(目标IP+端口):
    • 若提示“无法连接”:端口未开放或被防火墙拦截。
    • 若连接后黑屏:端口正常开放,问题可能在服务本身(如服务未启动)。
  • 执行 nc -zv 192.168.1.100 22(Linux):
    • 显示 Connection refused:端口明确未开放;显示 succeeded:端口正常。

解决办法

  • 开放端口:
    • Windows:防火墙“入站规则”添加端口允许(如8080)。
    • Linux:sudo ufw allow 22/tcp(UFW防火墙)或 sudo firewall-cmd --add-port=8080/tcp
  • 重启服务:若端口开放但服务无响应,重启对应服务(如 sudo systemctl restart sshd)。
  • 端口映射:若目标在局域网内,需在路由器配置“端口映射”(公网端口→内网IP:端口)。

四、本地网络配置查看(IP、网关、DNS等)

核心命令:ipconfig(Windows)、ip addr(Linux)

典型现象

  • 电脑连接网络后,右下角提示“无网络访问权限”
  • 手动设置IP后能上内网,但无法访问外网
  • 局域网内设备互相ping不通(如电脑ping手机失败)

工具使用与解读

  • 执行 ipconfig /all(Windows)或 ip addr(Linux):
    • 若IP为 169.254.x.x:DHCP服务器未分配IP(路由器DHCP功能未启用)。
    • 若网关为空或错误(如网关设为192.168.1.255):无法访问外网。
    • 若DNS服务器为 0.0.0.0:域名解析会失败。

解决办法

  • DHCP问题:释放并重新获取IP(Windows:ipconfig /release && ipconfig /renew;Linux:sudo dhclient -r && sudo dhclient)。
  • 手动配置错误:修改IP、网关、DNS为正确值(如IP:192.168.1.100,网关:192.168.1.1,DNS:114.114.114.114)。
  • IP冲突:在路由器中绑定IP与MAC地址(防止重复分配),或手动修改IP为未占用地址。

五、网络路径追踪(定位中间节点故障)

核心命令:tracert(Windows)、traceroute(Linux)

典型现象

  • 访问国外网站(如GitHub)时提示“超时”,但国内网站正常
  • 游戏延迟极高(>500ms),且同网络其他设备也有类似问题

工具使用与解读

  • 执行 tracert www.github.com
    • 若某一跳(如第5跳)开始持续显示 * * *:该节点到下一跳的链路中断(如运营商骨干网故障)。
    • 若某一跳延迟骤增(如从50ms升至500ms):该节点负载过高或路由拥堵。

解决办法

  • 节点故障:记录故障节点IP(如 203.0.113.xx),反馈给运营商(如电信10000)排查。
  • 路由拥堵:尝试切换网络(如手机热点),或修改本地DNS为运营商专用DNS(提升解析速度)。

六、网络连接与端口占用查询

核心命令:netstatss(Linux)、lsof(Linux/macOS)

典型现象

  • 启动Tomcat时提示“Address already in use: 8080端口被占用”
  • 电脑后台有不明进程占用大量带宽,导致网络卡顿
  • 怀疑有恶意程序连接外部IP(如挖矿程序)

工具使用与解读

  • 执行 netstat -ano | findstr "8080"(Windows):
    • 输出中 LISTENING 状态的PID表示占用端口的进程,通过任务管理器结束该进程。
  • 执行 ss -tulnp | grep "22"(Linux):
    • 显示 ssh 1234 root:22端口被SSH服务(PID 1234)占用,属正常现象。
  • 执行 lsof -i :80(Linux/macOS):
    • 若显示不明进程(如 unknown 5678):可能是恶意程序,需终止并查杀。

解决办法

  • 端口占用:终止占用进程(Windows:任务管理器结束PID;Linux:sudo kill -9 PID),或修改服务端口(如Tomcat改8081)。
  • 异常连接:通过 netstat -an 查看ESTABLISHED状态的外部IP,若为陌生IP,用防火墙拦截该IP。

七、路由表与网关配置(跨网段通信问题)

核心命令:route(Windows)、ip route(Linux)

典型现象

  • 能访问192.168.1.x网段(本地局域网),但无法访问192.168.2.x网段(另一个子网)
  • 手动配置IP后,内网互通正常,但外网访问失败

工具使用与解读

  • 执行 route print(Windows)或 ip route show(Linux):
    • 若缺省路由(0.0.0.0)未指向网关(如指向192.168.1.255):无法访问外网。
    • 若目标网段(如192.168.2.0)无路由条目:无法跨网段通信。

解决办法

  • 修复缺省路由:
    • Windows:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 -p-p 永久生效)。
    • Linux:sudo ip route add default via 192.168.1.1,并写入 /etc/netplan/*.yaml 配置文件。
  • 添加跨网段路由:
    • 访问192.168.2.0网段需通过网关192.168.1.254:
      • Windows:route add 192.168.2.0 mask 255.255.255.0 192.168.1.254 -p
      • Linux:sudo ip route add 192.168.2.0/24 via 192.168.1.254

八、高级网络诊断与抓包

核心命令:tcpdump(Linux/macOS)、wireshark(跨系统)

典型现象

  • 网络频繁断连,但基础命令(ping、telnet)检测正常
  • 传输文件时速度骤降,且无明显带宽占用
  • 浏览器访问特定网站时提示“SSL证书错误”或“连接重置”

工具使用与解读

  • 执行 tcpdump -i eth0 port 443(抓取HTTPS流量):
    • 若大量出现 RST 包:服务器主动关闭连接(如网站防火墙拦截)。
    • 若出现 Duplicate ACK 包:网络丢包导致数据重传,需排查链路稳定性。
  • 使用Wireshark过滤 tcp.flags.reset==1
    • 定位发送RST包的IP,判断是本地防火墙还是目标服务器拦截。

解决办法

  • 丢包问题:更换网线、升级路由器固件(修复硬件兼容性bug)。
  • 拦截问题:关闭本地防火墙(临时测试),或在目标服务器白名单中添加本地IP。
  • SSL错误:清除浏览器缓存,或检查系统时间是否同步(证书依赖时间验证)。

总结:现象→工具→解决办法流程图

  1. 任何网络都不通ping 网关 → 检查链路/重启网关
  2. 域名不通但IP通nslookup → 清缓存/换DNS
  3. IP通但服务不通telnet/nc → 开端口/重启服务
  4. 本地配置异常ipconfig/ip addr → 修复IP/网关/DNS
  5. 跨网延迟/中断tracert → 反馈运营商/切换路由
  6. 端口被占/异常连接netstat/ss → 杀进程/封IP
  7. 复杂问题(如丢包/重置)tcpdump/Wireshark → 抓包分析链路/拦截原因

按此流程操作,可逐步定位并解决90%以上的网络故障。


评论
  目录