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 게스트를 얻으려고 합니다. 지금은 게스트에서 호스트로 또는 그 반대로 핑을 보내는 데에도 어려움을 겪고 있습니다.

다음을 사용하여 호스트에 브리지를 만들었습니다.

sudo ifconfig bridge1 create
sudo ifconfig bridge1 192.168.100.1/24 up

또한 sys 플래그도 설정합니다 net.inet.ip.forwarding=1. net.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으로 VM의 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

나는 이들 사이의 트래픽을 방해할 수 있는 것에 대해 당황하고 있지만 내 경험은 매우 제한적입니다. 디버깅을 위해 추가 정보가 필요한 경우 알려주십시오. 연결 문제를 해결하기 위해 수행할 수 있는 작업에 대해 밝힐 수 있는 경험이 있는 사람이 있으면 자유롭게 답변해 주십시오. 감사해요.

관련 정보