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 user
ICMP는 그렇지 않습니다. tcpdump
ICMP 패킷이 올바르게 전달 및/또는 변환되고 있는지 확인하려면 호스트 인터페이스에서 실행 해 보십시오 .
호스트에서 어떻게 작동할지 잘 모르겠지만 -netdev user
게스트 컴퓨터가 네트워크의 적절한 구성원처럼 작동하도록 하려면 tap
호스트의 물리적 인터페이스와 연결하는 인터페이스를 호스트에 생성할 수 있습니다(둘 다 root
액세스가 필요함). ) , 그렇다면 사용하는 것이 -netdev tap
더 나은 선택이 될 것입니다.