网络连通性排查需按层推进:先确认本地协议栈与网卡状态,再验证网关可达性,接着区分dns与连通性问题,最后检查目标端口及服务响应。

网络连通性排查不是靠猜,而是按层推进:从本机协议栈出发,逐级验证链路、路由、DNS、端口和服务状态。跳过某一层,容易把DNS问题当成断网,或把防火墙拦截误判为服务器宕机。
确认本地协议栈与网卡状态
这是所有排查的起点,必须先确保系统自身网络功能就绪:
- 运行 ping -c 4 127.0.0.1 —— 失败说明内核网络模块异常或被禁用
- 执行 ip addr show —— 查看主网卡(如 eth0 或 ens33)是否 UP,且有合法 IPv4 地址(非 169.254.x.x 或 0.0.0.0)
- 若地址缺失或为链路本地地址,检查 DHCP 是否成功(journalctl -u systemd-networkd | tail -20)或手动配置静态 IP
验证网关可达与基础路由
能通本机不等于能出内网,网关是通往外部的第一道关卡:
- 用 ip route | grep default | awk '{print $3}' 提取默认网关 IP
- 立即 ping -c 4 该网关地址 —— 不通则问题局限在局域网:检查物理连接、交换机端口、IP 冲突或网关设备本身
- 若网关通但外网不通,再运行 ip route show 确认无错误静态路由覆盖了默认路径
区分是连通性问题还是 DNS 问题
很多“无法访问服务”其实只是域名解析失败,而非网络中断:
- 先 ping -c 4 8.8.8.8 —— 若通,说明 IP 层已连通
- 再 ping -c 4 baidu.com —— 若不通而上一步通,基本锁定 DNS 故障
- 检查 cat /etc/resolv.conf 中 nameserver 是否有效;可临时替换为 8.8.8.8 或 114.114.114.114 测试
- 用 nslookup example.com 直接验证解析结果,避免缓存干扰
检查目标端口与服务响应
即使能解析域名、能 ping 通 IP,服务仍可能因端口未开放或被拦截而不可达:
- 用 nc -zv example.com 443 测试 TCP 连接 —— 返回 “succeeded” 才算真正通
- 若本地服务不可达,运行 ss -tuln | grep ':80' 确认进程是否监听在 0.0.0.0(而非 127.0.0.1)
- 查防火墙:CentOS/RHEL 用 firewall-cmd --list-ports,Ubuntu 用 ufw status verbose,确认目标端口放行
- 必要时临时关闭防火墙测试(systemctl stop firewalld),验证是否策略导致










