当服务器无法访问外部网络或外部无法访问服务器时,盲目猜测原因非常低效。网络问题的根源通常分布在 网卡链路层、IP 路由层、传输层防火墙和 DNS 应用层 这几个层级。采用从下往上的逐层排查策略,可以在最短时间内定位问题所在。
第 1 层:网卡和链路层
首先要确认物理连接和网卡本身是否正常工作。
- 检查网卡是否被系统识别:
ip link show或ifconfig -a。如果相应接口(如eth0、ens33)根本未出现在列表中,可能是驱动未加载或硬件未识别。 - 查看链路状态:
ip link show eth0的输出中若出现state UP且不含NO-CARRIER,则物理连通性正常;若为DOWN,可通过ip link set eth0 up尝试手动激活。 - 检查是否有 IP 配置:
ip addr show eth0。若没有 IP 地址,可能因为 DHCP 未获取到地址,或者静态配置缺失。可以使用dhclient eth0重新获取,或检查/etc/network/interfaces、/etc/netplan/*.yaml等配置文件。 - 简单测试本地链路:ping 其他局域网内主机或网关;若不通,检查网线、交换机、VLAN 配置等。
第 2 层:路由和 IP 层
当链路层正常后,排查 IP 层的路由配置。
- 查看当前路由表:
ip route或route -n。确认是否存在默认路由(例如default via 192.168.1.1)且路由接口正确。 - 使用
ping 8.8.8.8测试与外部 IP 的连通性。若能通,说明三层网络基本没问题,很可能是 DNS 解析故障。若不通,继续深入。 - 执行
traceroute -n 8.8.8.8(或tracepath)查看数据包在哪一跳开始丢失,可帮助判断是本地网关问题、运营商上游断线还是目标主机不可达。 - 检查路由策略和 IP 转发:若本机充当路由器,需确认
/proc/sys/net/ipv4/ip_forward是否为1,以及iptables的 FORWARD 链是否放行。
第 3 层:防火墙和传输层
很多时候,有路有地址,却因为防火墙规则而导致数据被丢弃。
- 检查本地防火墙规则:
iptables -L -nv(或nft list ruleset)查看 INPUT、OUTPUT、FORWARD 链。查找是否REJECT或DROP了所需端口(如 22 端口的 SSH、80 端口的 HTTP)。尤其注意-j DROP规则是否排在允许规则之前。 - 临时关闭防火墙以快速验证:
systemctl stop iptables或systemctl stop firewalld,然后重试连通性。若问题消失,说明需要调整防火墙策略,不要永久关闭防火墙。 - 若服务绑定在特定 IP 上(如 127.0.0.1:8080),外部无法访问。用
ss -tlnp或netstat -tlnp检查服务监听地址,确保是0.0.0.0或本机对外 IP,而非仅本地回环。 - 云服务器还需检查“安全组”规则,这是宿主机层面的防火墙,通常在云平台控制台配置,与操作系统内的防火墙并行生效。
第 4 层:DNS 应用层
如果 ping 8.8.8.8 通,但 ping www.baidu.com 不通,则问题出在 DNS 解析。
- 测试 DNS 解析:
nslookup www.baidu.com或dig www.baidu.com。若返回server can't find或超时,检查/etc/resolv.conf中nameserver条目是否正确(如8.8.8.8、114.114.114.114)。注意systemd-resolved管理的系统可能需查看resolvectl status。 - 确认 DNS 服务器的连通性:
ping 8.8.8.8已通,不代表 UDP 53 端口可通。使用dig @8.8.8.8 www.baidu.com或nslookup www.baidu.com 8.8.8.8直接测试。若失败,很可能是防火墙阻断了 DNS 查询(UDP 53 端口),需要相应放行。 - 有时候
/etc/hosts文件的错误条目会覆盖 DNS 解析,导致解析到错误 IP。可以检查是否有与目标域名相关的条目。 - 应用自身缓存也可能滞留过期的解析结果,可重启应用或清空解析缓存(如
systemctl restart nscd或浏览器缓存)。
排错练习参考
当遇到“网站无法访问”时,典型排查顺序为:
ip link→ 接口是否 UPip addr→ IP 是否有ping 网关IP→ 局域网是否通ping 8.8.8.8→ 互联网三层是否通dig www.example.com→ DNS 是否正常curl -v http://www.example.com→ 应用层 HTTP 是否被阻或返回错误
逐层推进,绝大部分网络故障都会在几分钟内现出原形。记录下每一步的结果,也便于在请求他人协助时提供精确信息。