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