Openstack虚拟机访问外网的完整路径图

半兽人 发表于: 2025-09-18   最后更新时间: 2025-09-18 13:50:36  
{{totalSubscript}} 订阅, 23 游览

虚拟机访问外网的完整路径图,可以对照来排查问题:

OpenStack 网络数据路径(以 VXLAN + OVS 为例)

   [虚拟机 VM]
        |
        | vNIC (tapXXX)
        v
   -------------------
   |   br-int (OVS)  |
   -------------------
        |
        | OVS flow (根据tag转发)
        v
   -------------------
   |   br-tun (OVS)  |   <--- VXLAN 隧道,用于跨节点通信
   -------------------
        |
        | (隧道)  [如果在同一节点直接走br-int到qrouter]
        v
   -------------------
   | qrouter-* (ns)  |   <--- Neutron L3 namespace,做路由和SNAT
   -------------------
        |
        | qg-xxx 接口
        v
   -------------------
   |   br-ex (OVS)   |   <--- 外部网桥,绑定物理网卡
   -------------------
        |
        | 物理网卡 (enoX / ethX)
        v
   -------------------
   |  外部物理网络     | → 上层交换机/网关 → Internet
   -------------------

每一层的排查点

  1. 虚拟机内部

    • ip addr / ip route 看是否有正确的 IP 和网关。
    • ping 网关(子网网关)。
  2. br-int

    • ovs-vsctl list-ports br-int 看是否有 VM 的 tap 口。
    • ovs-ofctl dump-flows br-int | grep <vm_ip> 看是否有流表。
  3. br-tun

    • 如果是多节点,确认 VXLAN 隧道:
    • ovs-appctl fdb/show br-tun 看 VXLAN 学习是否正常。
    • 单节点环境可能直接走 br-int → qrouter。
  4. qrouter 命名空间

    • ip netns exec qrouter-xxx ip addr 看 qg-xxx 和 qr-xxx。
    • ip netns exec qrouter-xxx ip route 看外网默认路由是否存在。
    • ip netns exec qrouter-xxx ping 8.8.8.8 测试 SNAT。
  5. br-ex

    • ovs-vsctl list-ports br-ex 看是否有 qg-xxx。
    • ip addr show br-ex 看外网 IP 是否正确。
  6. 物理网卡

    • ip link show <物理网卡> 确认 UP。
    • ping <外部网关>
    • tcpdump -i <物理网卡> icmp 看报文是否出去。
更新于 2025-09-18
在线,4小时前登录

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