虚拟机网络不通,如何系统性排查?
2026-08-11 09:19:15 # 云服务

实例运行正常,但无法访问外部网络或对外提供服务。这是 Neutron 网络排障的高频场景,回答应体现清晰的系统性思路。

排查四步法

1. 确认安全组规则

1
openstack security group rule list <sg-id>

检查是否因安全组(Security Group)过于严格,禁止了所需端口/协议(如只放行 22 却要对外提供 80/443)。安全组是有状态的,方向(ingress/egress)要配对。

2. 检查 OVS 流表

登录计算节点,检查 Open vSwitch 流表是否正常——这是内部网络转发的关键:

1
2
ovs-ofctl dump-flows br-int
ovs-ofctl dump-flows br-tun

流表缺失/错配会导致流量在 br-int / br-tun 被丢弃。

3. 检查 L3 Agent

确认 Neutron L3 Agent(路由器)健康,并检查路由表和网络命名空间(Network Namespace):

1
2
ip netns
ip netns exec qrouter-<id> ip route

4. 检查 DHCP 服务

确认虚拟机是否正确获取了 IP:

1
2
openstack port list --server <vm-id>
ip netns exec qdhcp-<id> dnsmasq --test

DHCP Agent 异常会导致实例拿不到 IP,进而无法通信。

小结

网络不通按 安全组 → OVS 流表 → L3 Agent/路由 → DHCP 四步推进,从控制面规则到数据面转发逐层验证,基本能覆盖绝大多数场景。