Neutron 对象关系图 + 常用命令,查一台虚拟机的网络问题时就能顺着这条链路走。
[VM 实例]
│
└──> Port (tapXXXX) # VM 的虚拟网卡
│
└──> Subnet (CIDR, GW, DNS)
│
└──> Network (tenant/private)
│
└──> Router (qr-XXX)
│
└──> External Network (br-ex/veth/物理网卡)
openstack server show <vm-id> -c addresses -c id -c name -c status
输出里能看到 VM 的 IP 和网络名。
再查网卡端口:
openstack port list --server <vm-id>
openstack port show <port-id>
这里能看到:
openstack subnet show <subnet-id>
重点看:
cidr
(网段范围)gateway_ip
(虚拟机的默认网关)dns_nameservers
openstack network show <network-id>
能看到:
先查所有 router:
openstack router list
找到对应的 router,确认它挂了哪个子网:
openstack router port list <router-id>
你会看到 qr-xxx
接口连 tenant 子网,qg-xxx
接口连外部网络。
再确认 router 的外网设置:
openstack router show <router-id>
看 external_gateway_info
有没有配好。
openstack network list --external
openstack subnet list --network <外网网络ID>
确认外网子网的 CIDR 和 gateway_ip
(比如 10.0.19.254)。
openstack floating ip list
确认 FIP 绑定到了正确的端口。
openstack security group list
openstack security group rule list <sg-id>
确认安全组规则允许 ICMP、TCP 出口。
openstack port list --server <vm-id>
→ 确认 VM 绑定端口。openstack subnet show <subnet-id>
→ 确认子网网关。openstack router port list <router-id>
→ 确认路由器接上子网。openstack router show <router-id>
→ 确认外网网关。openstack network list --external
→ 确认外部网络。openstack floating ip list
→ 确认 FIP 绑定正确(如需要)。