在阿里云 Anolis OS(龙蜥操作系统)环境下,网络配置显示正确但无法上网,通常属于“链路层/网络层连通性”与“应用层/路由策略”之间的断层问题。作为长期深耕云计算底层运维的从业者,我习惯按照从物理到逻辑、从本地到远程、从系统到云平台的层级进行排查。
以下是标准化的排查路径和具体命令:
1. 确认基础连通性(Ping 测试)
首先判断是 DNS 解析问题还是路由/网关问题。
# 测试 DNS 解析是否正常
nslookup www.baidu.com
# 如果返回 IP 地址,说明 DNS 正常;如果超时或 NXDOMAIN,则是 DNS 问题。
# 测试公网 IP 连通性(绕过 DNS)
ping 8.8.8.8
ping 223.5.5.5 # 阿里公共 DNS
-
情况 A:
ping 8.8.8.8通,但ping www.baidu.com不通- 原因:DNS 配置错误或解析服务故障。
- 解决:检查
/etc/resolv.conf,确保 nameserver 指向正确的 DNS(如223.5.5.5或114.114.114.114)。Anolis OS 默认可能使用 NetworkManager 管理,建议通过 nmcli 或编辑该文件修复。
-
情况 B:
ping 8.8.8.8不通- 原因:路由、网关、防火墙或云平台安全组问题。进入下一步。
2. 检查路由表与网关
确认数据包是否能到达默认网关。
ip route show
# 或
route -n
- 关键点:
- 是否存在一条
default via <网关IP>的路由? - 网关 IP 是否与你的云主机所在子网一致?
- 如果缺失默认路由,需手动添加:
ip route add default via <网关IP> dev <网卡名>
- 是否存在一条
3. 检查本地防火墙(iptables/firewalld/nftables)
Anolis OS 默认可能启用 firewalld 或 iptables,虽不影响出站,但某些严格配置可能误杀。
# 查看 firewalld 状态
systemctl status firewalld
# 临时关闭防火墙测试(生产环境谨慎操作)
systemctl stop firewalld
# 然后再次 ping 8.8.8.8
# 如果使用 iptables
iptables -L -n -v
注意:大多数情况下,本地防火墙不会阻止出站 ICMP,但如果启用了严格的 OUTPUT 链规则,可能会影响。
4. 检查云平台安全组(Security Group)—— 最常见原因
在公有云环境中,安全组是第一道防线。即使系统内部网络配置完美,安全组规则未放行也会导致“上不了网”。
-
入方向(Inbound):虽然你问的是“上网”(出站),但某些云厂商的安全组默认策略是“拒绝所有入站”,而出站默认允许。但如果你的业务需要主动连接外部服务(如 API 调用),需确保:
- 出方向(Outbound):是否放行了
0.0.0.0/0的所有端口或特定协议? - 部分云厂商:默认出站可能受限,需在控制台检查“出方向规则”。
- 出方向(Outbound):是否放行了
-
操作:登录云控制台,找到实例所属的安全组,确认出方向规则是否包含
Allow All或至少放行 TCP/UDP 80/443。
5. 检查网络接口状态与 MTU 值
有时网卡 UP 了,但实际链路有问题。
ip link show
# 确保网卡状态是 UP 且没有 DOWN
# 检查 MTU 是否过大导致分片失败
ip addr show <网卡名>
- MTU 问题:如果云服务器使用了 VXLAN 等overlay 网络,MTU 通常为 1500。如果宿主机或物理网络限制更严,可能导致大包丢弃。尝试降低 MTU 测试:
ip link set dev <网卡名> mtu 1400 ping -M do -s 1472 8.8.8.8 # 测试能否发送大包
6. 检查 NAPT / SNAT 规则(针对 NAT 网关场景)
如果你的服务器位于私有子网,通过 NAT 网关访问互联网:
- 确认 ECS/轻量应用服务器是否绑定了弹性公网 IP(EIP)或通过 NAT 网关映射。
- 检查 NAT 网关实例是否正常运行。
- 检查路由表是否正确指向 NAT 网关。
7. 检查 DHCP 与静态 IP 冲突
如果是动态获取 IP 的场景:
cat /etc/sysconfig/network-scripts/ifcfg-<网卡名>
# 或查看 NetworkManager 配置
nmcli connection show
- 确保
BOOTPROTO=dhcp且ONBOOT=yes。 - 如果改为静态 IP,确保 IP、子网掩码、网关、DNS 完全匹配云控制台提供的信息。
8. 高级排查:tcpdump 抓包
如果以上都正常,仍无法上网,使用 tcpdump 定位数据包流向。
# 监听网卡,捕获 ICMP 请求和响应
tcpdump -i <网卡名> icmp -nn
# 然后执行 ping
ping 8.8.8.8
- 现象分析:
- 如果看到
ICMP echo request发出,但没有ICMP echo reply回来 → 问题在网络路径或对端不可达(可能是云厂商侧问题或安全组拦截)。 - 如果连 request 都没发出去 → 本地路由或防火墙丢弃。
- 如果收到大量
Fragmentation needed→ MTU 问题。
- 如果看到
9. 检查 SELinux 与 AppArmor
虽然极少影响网络连通性,但在极端定制环境下可能干扰。
getenforce
# 如果是 Enforcing,可临时设为 Permissive 测试
setenforce 0
总结排查清单(快速对照)
| 步骤 | 检查项 | 命令/位置 |
|---|---|---|
| 1 | DNS 解析 | nslookup www.baidu.com |
| 2 | 公网 Ping | ping 8.8.8.8 |
| 3 | 默认路由 | ip route show | grep default |
| 4 | 本地防火墙 | systemctl status firewalld |
| 5 | 云平台安全组 | 控制台 → 安全组 → 出方向规则 |
| 6 | 网卡 MTU | ip addr show <eth0> |
| 7 | 抓包诊断 | tcpdump -i eth0 icmp |
特别提示(国内云环境)
- Anolis OS 兼容性:Anolis OS 与 CentOS/RHEL 高度兼容,大多数 CentOS 7/8 的网络排错方法均适用。
- 云厂商差异:阿里云、腾讯云、华为云等在安全组命名和默认策略上略有不同,务必以控制台为准。
- IPv6:如果仅 IPv4 不通而 IPv6 通,检查
/etc/gai.conf中的precedence ::ffff:0:0/96 100行,确保 IPv4 优先。
通过以上步骤,95% 以上的“配置正确但上不了网”问题都能被定位。核心重点永远是:先排除云平台安全组,再查系统路由,最后看 DNS 和防火墙。
CLOUD云枢