我最近更改了底层主机网络配置(将VLAN标记从主机移动到交换机),它似乎完全阻止了我的VM的任何类型的网络连接。
我在Ubuntu 16.04上运行OpenNebula 5.4.6。
我有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
我的VM都没有使用br_public或br_data,并且它们不构成OpenNebula配置的任何部分,所以当我发现我的VM在此更改后丢失了连接时,我感到非常震惊。我重新启动了所有虚拟机,后来重新启动了主机,但问题仍然存在。
我删除并重新创建了OpenNebula中的虚拟网络,并分离了旧的网络,并向虚拟机添加了新网络。甚至从头开始创建全新的虚拟机,我似乎无法恢复任何网络连接。
任何想法?提前谢谢......
答案 0 :(得分:0)
经过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配置加载太早'在启动过程中,因此无法为尚未加载的模块应用设置。在Ubuntu的示例部分online sysctl.d man page中明确说明了如何在模块正确加载后使用udev规则来设置桥接过滤。
一旦我添加了这个,我重新启动主机并确认VM将保持连接。