OpenNebula 主机网络更改,丢失所有虚拟机连接

OpenNebula host network change, lost all connectivity for VMs

我最近更改了底层主机网络配置(将 VLAN 标记从主机移到交换机),它似乎完全阻止了我的 VM 的任何类型的网络连接。

我 运行 OpenNebula 5.4.6 Ubuntu 16.04.

我有 4 个物理网络接口,以前在主机上这样配置:

auto br_admin
iface br_admin inet dhcp
    bridge_ports eno1
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto br_service
iface br_service inet dhcp
    bridge_ports eno2
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto eno2.20
iface eno2.20 inet manual

auto eno2.30
iface eno2.30 inet manual

auto br_public
iface br_service inet dhcp
    bridge_ports eno2.20
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto br_data
iface br_service inet dhcp
    bridge_ports eno2.30
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

我能够将 VLAN 网桥移动到单独的接口上,而不是其他两个网桥未被修改...

auto br_admin
iface br_admin inet dhcp
    bridge_ports eno1
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto br_service
iface br_service inet dhcp
    bridge_ports eno2
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto br_public
iface br_service inet dhcp
    bridge_ports eno3
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

auto br_data
iface br_service inet dhcp
    bridge_ports eno4
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

None 我的虚拟机使用 br_public 或 br_data,它们不构成 OpenNebula 配置的任何部分,所以当我发现我的虚拟机丢失时我非常震惊此更改后的连接。我重新启动了所有的虚拟机,后来又重新启动了主机,但问题仍然存在。

我在 OpenNebula 中删除并重新创建了虚拟网络,分离了旧的网卡,并将新的网卡添加到虚拟机中。即使从头开始创建全新的虚拟机,我似乎也无法恢复任何网络连接。

有什么想法吗??提前致谢...

在使用 tcpdump 进行多次调试后,我发现我的主机桥正在接收来自 M 的数据包,但没有转发它们。我 运行 下面的命令并再次开始获取网络连接。

# echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables

我检查并在 /etc/sysctl.d/50-bridge-nf-call.conf

中找到以下内容
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0

四处阅读,我在 Ubuntu 中发现了一个非常古老的错误,该错误会导致在引导过程中加载 sysctl 配置 'too early',因此无法为尚未加载的模块应用设置尚未加载。在 Ubuntu 的示例部分 online sysctl.d man page 明确解释了如何使用 udev 规则在正确加载模块后设置网桥过滤。

添加此内容后,我重新启动了主机并确认 VM 将保持连接。