Debian Buster 호스트에서 OpenBSD 6.7 게스트용 QEMU 네트워킹 구성

Debian Buster 호스트에서 OpenBSD 6.7 게스트용 QEMU 네트워킹 구성

Debian 10을 실행하고 QEMU를 사용하여 OpenBSD 6.7 게스트(amd64)를 실행하는 호스트가 있습니다. 현재 QEMU에 대한 호출은 다음과 같습니다.

$ qemu-system-x86_64 -m 512 -drive if=virtio,file=my_image.qcow2 -enable-kvm -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7922-:22 -device virtio-net,netdev=mynet0

게스트 컴퓨터에서는 원격 Subversion 서버와 OpenBSD 패키지 저장소에 잘 액세스할 수 있지만 원격 호스트에 ping을 시도할 때마다 원격 호스트를 종료할 때까지 무기한 정지됩니다.

$ ping google.com
^C
--- google.com ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss

또한 (클라이언트 컴퓨터에서) 일반적인 C 소켓 프로그래밍과 관련된 과제가 있습니다. 내가 전화할 때마다 connect나는 Network is unreachable돌아옵니다.

이것은 내가 구성한 인터페이스입니다.여객기:

$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
    index 3 priority 0 llprio 3
    groups: lo
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
    inet 127.0.0.1 netmask 0xff000000
vio0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500
    lladdr 52:54:00:12:34:56
    index 1 priority 0 llprio 3
    groups: egress
    media: Ethernet autoselect
    status: active
    inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
enc0: flags=0<>
    index 2 priority 0 llprio 3
    groups: enc
    status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
    index 4 priority 0 llprio 3
    groups: pflog

그리고 내 경로(또한여객기):

$ route show
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            10.0.2.2           UGS        5        9     -     8 vio0 
base-address.mcast localhost          URS        0        0 32768     8 lo0  
10.0.2/24          10.0.2.15          UCn        2        0     -     4 vio0 
10.0.2.2           52:55:0a:00:02:02  UHLch      3        5     -     3 vio0 
10.0.2.3           52:55:0a:00:02:03  UHLc       0        8     -     3 vio0 
10.0.2.15          52:54:00:12:34:56  UHLl       0        8     -     1 vio0 
10.0.2.255         10.0.2.15          UHb        0        0     -     1 vio0 
127/8              localhost          UGRS       0        0 32768     8 lo0  
localhost          localhost          UHhl       1        2 32768     1 lo0  

Internet6:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
::/96              localhost          UGRS       0        0 32768     8 lo0  
localhost          localhost          UHhl      10       20 32768     1 lo0  
::ffff:0.0.0.0/96  localhost          UGRS       0        0 32768     8 lo0  
2002::/24          localhost          UGRS       0        0 32768     8 lo0  
2002:7f00::/24     localhost          UGRS       0        0 32768     8 lo0  
2002:e000::/20     localhost          UGRS       0        0 32768     8 lo0  
2002:ff00::/24     localhost          UGRS       0        0 32768     8 lo0  
fe80::/10          localhost          UGRS       0        0 32768     8 lo0  
fec0::/10          localhost          UGRS       0        0 32768     8 lo0  
fe80::1%lo0        fe80::1%lo0        UHl        0        0 32768     1 lo0  
ff01::/16          localhost          UGRS       1        1 32768     8 lo0  
ff01::%lo0/32      fe80::1%lo0        Um         0        1 32768     4 lo0  
ff02::/16          localhost          UGRS       1        1 32768     8 lo0  
ff02::%lo0/32      fe80::1%lo0        Um         0        1 32768     4 lo0

이로 인해 내 QEMU 설정이 어떤 방식으로든 잘못 구성되었다고 믿게 되었습니다.

게스트 컴퓨터가 외부 세계와 (올바르게) 통신할 수 있도록 네트워크 구성을 어떻게 수정합니까?

답변1

TCP와 UDP는 잘 작동하는 것 같은데 -netdev userICMP는 그렇지 않습니다. tcpdumpICMP 패킷이 올바르게 전달 및/또는 변환되고 있는지 확인하려면 호스트 인터페이스에서 실행 해 보십시오 .

호스트에서 어떻게 작동할지 잘 모르겠지만 -netdev user게스트 컴퓨터가 네트워크의 적절한 구성원처럼 작동하도록 하려면 tap호스트의 물리적 인터페이스와 연결하는 인터페이스를 호스트에 생성할 수 있습니다(둘 다 root액세스가 필요함). ) , 그렇다면 사용하는 것이 -netdev tap더 나은 선택이 될 것입니다.

관련 정보