几天以来,我的每台虚拟机上的网络连接都出现了问题。无论是 Windows 还是 Linux 都没有关系。
我的主机系统基于 Arch Linux,接口由 systemd-networkd 配置。这是我所有接口的配置文件。
/etc/systemd/network/10-bo0.netdev
[NetDev]
Name=bo0
Kind=bond
[Bond]
Mode=802.3ad
TransmitHashPolicy=layer3+4
MIIMonitorSec=1s
LACPTransmitRate=fast
/etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
/etc/systemd/network/eno1.network
[Match]
Name=eno1
[Network]
Bond=bo0
/etc/systemd/network/enp14s0.network
[Match]
Name=enp14s0
[Network]
Bond=bo0
/etc/systemd/network/20-bo0.network
[Match]
Name=bo0
[Network]
Bridge=br0
BindCarrier=eno1 enp14s0
/etc/systemd/network/25-br0.network
[Match]
Name=br0
[Network]
DHCP=yes
BindCarrier=bo0
[DHCP]
RouteMetric=10
我在主机系统上的连接已正确建立。
markus@markus-pc:~$ ip a | awk '{ print " " $0 }'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp14s0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bo0 state UP group default qlen 1000
link/ether d6:58:88:05:c9:60 brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bo0 state UP group default qlen 1000
link/ether d6:58:88:05:c9:60 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether f6:11:0f:03:bf:b1 brd ff:ff:ff:ff:ff:ff
inet 192.168.179.20/24 brd 192.168.179.255 scope global dynamic br0
valid_lft 854751sec preferred_lft 854751sec
inet6 2001:16b8:2efc:3900:f411:fff:fe03:bfb1/64 scope global dynamic noprefixroute
valid_lft 6755sec preferred_lft 3155sec
inet6 fe80::f411:fff:fe03:bfb1/64 scope link
valid_lft forever preferred_lft forever
5: bo0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether d6:58:88:05:c9:60 brd ff:ff:ff:ff:ff:ff
inet6 fe80::d458:88ff:fe05:c960/64 scope link
valid_lft forever preferred_lft forever
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:aa:68:d9:a1 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:17:2b:75 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe17:2b75/64 scope link
valid_lft forever preferred_lft forever
我不知道自 Arch Linux 更新以来默认防火墙设置是否发生了变化,或者只是我的虚拟机没有从路由器获得 DHCP 服务。
如何检查我的虚拟机是否获得 DHCP 优惠或其他内容,以解决我的 IPv4 问题。
其他一些信息:
- Linux内核:Linux 4.18.6-arch1-1-ARCH
- qemu 3.0.0
答案1
经过一番挖掘后我发现了一些东西。
首先,我对大多数涉及的软件包进行了系统降级,看看是否有问题。所以我使用了 libvirt、virt-manager、qemu、iptables、ebtables、dnsmasq,但没有发现任何影响。虚拟机中仍然没有IP。
我通常使用 pacaur 从 aur 中编译 linux-vfio 内核。最近发生 SSD 故障后,我没有剩下 pacaur 缓存,因此无法降级到较旧的内核(我的版本为 4.18.9-vfio atm)。所以我尝试了 /var/cache/pacman/pkg 中的一些主流内核。最近的 4.18.9 并没有改善这种情况。但 4.16.8-1 做到了。用它启动我再次在虚拟机中获得IP。几天后我会花更多时间找出问题所在。
很高兴我不经常需要虚拟机。
编辑:奇怪的是,4.14.71 lts 内核也不提供 IP 地址。所以应该是最近的一个补丁出现了问题。