在 Mac OSX 上透過 QEMU VM 取得 ARP 請求時遇到問題

在 Mac OSX 上透過 QEMU VM 取得 ARP 請求時遇到問題

使用 Mac OS 10.14.5 Mojave 和 QEMU 版本 4.0.0

我正在嘗試透過 Mac 主機上的網橋讓 Ubuntu Server 19.04 來賓運行網路通訊。目前,我甚至正在努力處理從訪客到主機的 ping,反之亦然。

我在主機上建立了一個橋:

sudo ifconfig bridge1 create
sudo ifconfig bridge1 192.168.100.1/24 up

並設置系統標誌net.inet.ip.forwarding=1net.link.ether.inet.proxyall=1儘管我不確定它們在專案中是否有必要。

VM 啟動方式為:

sudo qemu-system-x86_64 -hda ubuntu-test -cdrom ubuntu-19.04-live-server-amd64.iso -accel hvf -netdev tap,br=/dev/bridge1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown,id=net0 -device e1000,netdev=net0 -m 512

其中 qemu-ifup 腳本有:

ifconfig bridge1 addm tap0

我透過 netplan 設定虛擬機器的 IP:

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 192.168.100.2/24
      gateway4: 192.168.100.1

及網路計劃適用。

我使用相關網路設備的 MAC 位址手動填入主機和訪客的 ARP 表:

_gateway (192.168.100.1) at $BRIDGE_MAC [ether] PERM on ens3
? (192.168.100.2) at $GUEST_DEV_MAC on bridge1 ifscope permanent [bridge]

分別在訪客和主機上,其中 $GUEST_DEV_MAC 和 $BRIDGE_MAC 是相關兩個設備的 MAC 位址。

在來賓上 ufw 被禁用 iptables -S 返回:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

當我在主機上運行 tcpdump 並嘗試從來賓 ping 它時,我可以看到 ICMP 回顯請求和回复,但它們不會發送給來賓:

$GUEST_DEV_MAC > $BRIDGE_MAC, IPv4, length 98: 192.168.100.2 > 192.168.100.1: ICMP echo request, id 1181, seq 2, length 64
$BRIDGE_MAC > $GUEST_DEV_MAC, IPv4, length 98: 192.168.100.1 > 192.168.100.2: ICMP echo reply, id 1181, seq 2, length 64

其中 $GUEST_DEV_MAC 和 $BRIDGE_MAC 是相關兩個設備的 MAC 位址。

當我嘗試從主機 ping 訪客時,我只得到:

$BRIDGE_MAC > $GUEST_DEV_MAC, IPv4, length 98: 192.168.100.1 > 192.168.100.2: ICMP echo request, id 48948, seq 1, length 64

我不知道什麼可能會阻止這些之間的流量,但我的經驗非常有限。如果調試需要更多信息,請告訴我,如果有人有足夠的經驗來闡明如何修復連接,請隨時回答。謝謝。

相關內容