Arch Linux - 在虚拟机上没有 ipv4

Arch Linux - 在虚拟机上没有 ipv4

几天以来,我的每台虚拟机上的网络连接都出现了问题。无论是 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 地址。所以应该是最近的一个补丁出现了问题。

相关内容