Openstack查一台虚拟机的网络问题

半兽人 发表于: 2025-09-18   最后更新时间: 2025-09-18 11:47:34  
{{totalSubscript}} 订阅, 19 游览

Neutron 对象关系图 + 常用命令,查一台虚拟机的网络问题时就能顺着这条链路走。

Neutron 网络对象关系(排查流程)

[VM 实例]
   │
   └──> Port (tapXXXX)         # VM 的虚拟网卡
           │
           └──> Subnet (CIDR, GW, DNS)
                    │
                    └──> Network (tenant/private)
                             │
                             └──> Router (qr-XXX)
                                      │
                                      └──> External Network (br-ex/veth/物理网卡)

命令对照表

1. 找到 VM 的网口

openstack server show <vm-id> -c addresses -c id -c name -c status

输出里能看到 VM 的 IP 和网络名。

再查网卡端口:

openstack port list --server <vm-id>

2. 查看端口信息

openstack port show <port-id>
  • 这里能看到:

    • 绑定的网络 ID / 子网 ID
    • MAC 地址
    • 安全组
    • device_owner(通常是 compute\:XXX)

3. 查看子网

openstack subnet show <subnet-id>

重点看:

  • cidr(网段范围)
  • gateway_ip(虚拟机的默认网关)
  • dns_nameservers

4. 查看网络

openstack network show <network-id>

能看到:

  • 网络类型(vxlan/vlan/flat)
  • 是否 external/shared

5. 查看路由器

先查所有 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 有没有配好。

6. 外部网络

openstack network list --external
openstack subnet list --network <外网网络ID>

确认外网子网的 CIDR 和 gateway_ip(比如 10.0.19.254)。

7. 浮动 IP(如果用到)

openstack floating ip list

确认 FIP 绑定到了正确的端口。

8. 安全组

openstack security group list
openstack security group rule list <sg-id>

确认安全组规则允许 ICMP、TCP 出口。

推荐检查顺序(速查版)

  1. openstack port list --server <vm-id> → 确认 VM 绑定端口。
  2. openstack subnet show <subnet-id> → 确认子网网关。
  3. openstack router port list <router-id> → 确认路由器接上子网。
  4. openstack router show <router-id> → 确认外网网关。
  5. openstack network list --external → 确认外部网络。
  6. openstack floating ip list → 确认 FIP 绑定正确(如需要)。
更新于 2025-09-18
在线,1小时前登录

查看OpenStack更多相关的文章或提一个关于OpenStack的问题,也可以与我们一起分享文章