VM 客户机无法通过 macvtap 与 LAN 计算机通信

VM 客户机无法通过 macvtap 与 LAN 计算机通信

我可能忽略了一些显而易见的东西,因为我找不到任何可以解释为什么我无法让它工作的东西。我对 libvirt、kvm、qemu 并不陌生,只是对 macvtap 很熟悉。说实话,我不明白为什么 macvtap 比配置客户机使用隔离和 NAT 网络更有益,这很简单。如果有人也能详细说明这一点,那就太好了。

我的情况是这样的:我有一台 Arch Linux 主机,我在其上设置了一些 Debian 客户机作为实验室。主机上的物理接口是wi0,一个无线接口,它连接到我的 LAN,192.168.1.0/24。我的“debian_01”客户机 (192.168.1.251) 有以下节,将其连接到macvtap0

<interface type='direct'>
  <mac address='52:54:00:cb:a4:08'/>
  <source dev='wi0' mode='bridge'/>
  <target dev='macvtap0'/>
  <model type='virtio'/>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
</interface>

(交换bridge没有vepa任何区别;我都试过了。)

(“debian_02” 有一个类似的节,具有不同的 MAC 地址,macvtap1,net1。)

“debian_01” 上的路由表有一个适当的条目:

192.168.1.0/24 dev ens16 proto kernel scope link src 192.168.1.251

两个客户机 (debian_01、debian_02) 可以正常 ping 通对方;但是,由于 ARP,在 LAN 上 ping 任何内容似乎都失败了。当我尝试 ping LAN 路由器时,我在 Arch 主机上看到的内容如下:

HOST$ tcpdump -nnnqti macvtap0
ARP, Request who-has 192.168.1.254 tell 192.168.1.251, length 28
ARP, Request who-has 192.168.1.254 tell 192.168.1.251, length 28
ARP, Request who-has 192.168.1.254 tell 192.168.1.251, length 28
ARP, Request who-has 192.168.1.254 tell 192.168.1.251, length 28

Iptables 已经更新为-j ACCEPT来自 macvtap0 或 192.168.1.251(debian_01)的任何内容,但是没有效果。

sysctl在主机上:

net.ipv4.conf.all.forwarding = 1

还有什么办法可以让这些访客通过他们的 macvtaps 与我的 LAN 内的其他机器通信?

如果需要的话我很乐意分享更多信息。

相关内容