我可能忽略了一些显而易见的东西,因为我找不到任何可以解释为什么我无法让它工作的东西。我对 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 内的其他机器通信?
如果需要的话我很乐意分享更多信息。