检查项 | 命令/方法 |
物理网络类型 |
|
VLAN/VXLAN 接口 |
|
OVS 状态 |
|
LinuxBridge 状态 |
|
Neutron 命名空间 |
|
底层连通性 |
|
一、基本排查步骤
(一) 检查网络服务状态
# 检查Neutron服务状态
openstack network agent list
# 检查Nova服务状态
openstack compute service list
(二) 检查网络拓扑
# 列出所有网络
openstack network list
# 列出所有子网
openstack subnet list
# 列出所有端口
openstack port list
# 查看特定网络详情
openstack network show <network-id>
# 查看特定子网详情
openstack subnet show <subnet-id>
(三) 检查实例网络配置
# 列出所有实例
openstack server list
# 查看实例详情
openstack server show <instance-id>
# 查看实例控制台日志
openstack console log show <instance-id>
二、实例无法获取ip地址
(一) 检查DHCP服务
# 检查DHCP代理状态
openstack network agent list | grep dhcp
#如状态异常可能为neutron-dhcp-agent未正常运行
# 检查DHCP命名空间
ip netns list | grep dhcp
(二) 检查端口状态
# 查找实例关联的端口
openstack port list --server <instance-id>
# 查看端口详情
openstack port show <port-id>
端口绑定失败:
检查物理网络(如 VLAN/VXLAN)配置或底层插件(OVS/LinuxBridge)状态。
(三) 检查实例内部
# 通过控制台或VNC检查实例内的网络配置
# 确认是否发送了DHCP请求
(四) 检查物理网络(VLAN/VXLAN)
确认物理网络类型
OpenStack 网络类型通常在 ml2_conf.ini
中定义,查看配置:
# 查看 Neutron ML2 插件配置
cat /etc/neutron/plugins/ml2/ml2_conf.ini | grep -E "type_drivers|tenant_network_types"
#输出示例
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
如果使用 VLAN,需确保物理交换机已正确配置 VLAN Trunk。
如果使用 VXLAN,需检查 VTEP(VXLAN Tunnel Endpoint)的连通性。
检查 VLAN/VXLAN 接口
# VLAN 检查
# 查看主机上的 VLAN 接口
ip link show | grep '\.'
输出示例(如 eth0.100 表示 VLAN ID 100):
# VXLAN 检查
# 查看 VXLAN 隧道接口
ip -d link show type vxlan
#示例
10: vxlan-42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 ...
vxlan id 42 remote 10.0.0.2 dev eth0 ...
确认 remote IP(对端 VTEP)是否可达(如通过 ping)。
(五) 检查底层插件状态
1. Open vSwitch (OVS)
#查看ovs服务状态
systemctl status openvswitch-switch
#查看 OVS 网桥和端口
# 列出所有网桥
ovs-vsctl show
# 查看网桥详情(如 br-int)
ovs-vsctl list-br
ovs-ofctl show br-int
ovs-ofctl dump-flows br-int
br-int:集成网桥,连接虚拟机端口。
br-tun(VXLAN 场景):处理隧道流量。
确保虚拟机端口(如 tap12345678)已绑定到网桥。
2. LinuxBridge
#查看 LinuxBridge 服务状态
systemctl status neutron-linuxbridge-agent
查看网桥和端口
# 列出所有网桥
brctl show
# 查看具体网桥(如 brqXXXXXX)
ip link show brqXXXXXX
VLAN 场景下检查 VLAN 子接口:
ip link show | grep '\.'
三、检查 Neutron 网络命名空间
(一) 列出所有命名空间
ip netns list
(二) 进入命名空间检查
正常情况应看到 dnsmasq
进程监听 UDP 67 端口。
# 进入 DHCP 命名空间
ip netns exec qdhcp-<网络ID> bash
# 检查 IP 和端口
ip addr show
iptables -L # 查看防火墙规则
# 测试 DHCP 服务是否监听
netstat -anpu | grep dnsmasq
四、验证底层网络连通性
(一) 检查节点间 VXLAN/VLAN 通信
- 在节点间 ping 对端 VTEP IP(VXLAN)或 VLAN 接口 IP。
- 使用
tcpdump
抓包:
tcpdump -i eth0 udp port 4789 -nn # VXLAN 流量(UDP 4789)
tcpdump -i eth0.100 -nn # VLAN 100 流量
(二) 检查物理网络设备
物理交换机:确认 VLAN Trunk 端口允许相关 VLAN ID。
防火墙:确保放行 VXLAN(UDP 4789)和 VLAN 流量。
五、常见问题排查
(一) 虚拟机无法获取 IP(DHCP 失败)
检查 neutron-dhcp-agent
是否运行:
进入 qdhcp-<网络ID>
命名空间,确认 dnsmasq
进程存在。
systemctl status neutron-dhcp-agent
(二) 虚拟机网络不通
检查 OVS/LinuxBridge 是否绑定虚拟机端口:
ovs-vsctl show | grep tap
brctl show | grep tap
检查安全组是否放行流量:
openstack port show <端口ID> | grep security_group