게스트에서 호스트 네트워크로 핑을 시도했지만 성공하지 못했습니다.
qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0
임의의 컴퓨터를 핑하려고합니다.
$ ping 10.0.2.21
Destination Host Unreachable
게스트에서는 호스트 10.0.2.2 (DHCP 서버) 만 핑할 수 있습니다.
답변
QEMU는 SLIRP 백엔드에서 ICMP를 지원합니다. 커널 사용자에게는 소위 핑 소켓 (PF_INET, SOCK_DGRAM, PROT_ICMP)을 허용해야합니다.
간단하다
sysctl -w net.ipv4.ping_group_range='0 2147483647'
답변
QEMU 위키에서 QEMU는 SLIRP 백엔드에서 ICMP를 지원하지 않습니다.
사용자 네트워킹 (SLIRP)
이것이 기본 네트워킹 백엔드이며 일반적으로 사용하기 가장 쉽습니다. 루트 / 관리자 권한이 필요하지 않습니다. 다음과 같은 제한이 있습니다.
- 오버 헤드가 많으므로 성능이 떨어집니다.
- ICMP 트래픽이 작동하지 않으므로 게스트 내에서 ping을 사용할 수 없습니다.
- 게스트는 호스트 또는 외부 네트워크에서 직접 액세스 할 수 없습니다
ICMP 작업의 경우 TAP, VDE 또는 소켓을 사용해야합니다.
추가 정보 :
QEMU Wiki- 네트워킹 및 Wikibooks QEMU 네트워킹 섹션
권장 사항 : VLAN 처리를위한 고급 안내서
답변
내가 찾은 가장 간단하고 효과적인 방법은 이것 입니다.
요약하면, 호스트에서 :
tunctl -u <username>
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp
ip link set tap0 up
route add -host 192.168.0.20 dev tap0 <-- to be changed by you.
그리고 손님을 위해 다음과 같이 실행하십시오.
kvm -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
또는
qemu -hda ~/fedora.qcow2 -net nic -net tap,ifname=tap0,script=no -usb
사용자가 tap
소유 한 장치 를 구성하고 호스트와 게스트 간을 활성화 arp proxying
하고 구성하면 route
됩니다.
필자 (그리고 나 자신) wlan0
는 리눅스 커널에서 지원하지 않는 장치로 의 브리징 문제를 다루기 위해 이것을 사용했다 . 그러나 유선 연결에서도 잘 작동합니다. 에서 arp
구성, 단지 변경 wlan0
에 eth0
.
게스트 IP 주소는 DHCP
작동하지 않으므로 사용자가 설정해야합니다 .
그리고 이미 호스트를 핑할 수 있습니다.
답변
방금 다음 두 가지 답변을 직접 결합하여이를 달성했습니다.
- 먼저 /server/769874/how-to-forward-a-port-from
wget
과 같이 다른 도구를 사용하여 게스트와 호스트를 네트워크로 연결하는 방법을 배우십시오 . -guest-to-host-in-qemu-kvm / 951835 # 951835 ping
특히wget
다른 사람들이 언급 한 것처럼 TCP IP 도구보다 작동하기가 약간 어렵지만 다음 과 같이 관리했습니다. QEMU 게스트에서 외부 URL로 ping하는 방법은 무엇입니까?
이들을 결합하여 “호스트 IP”를 ip route
찾은 후 다음을 수행했습니다.
ping 10.0.2.2
그리고 효과가있었습니다.
Ubuntu 19.04 호스트 에서이 QEMU + Buildroot 설정 으로 테스트했습니다 .