게스트 네트워크에서 호스트 네트워크로 ping을 시도했지만 성공하지 못했습니다.
qemu-system-x86_64 -hda debian_squeeze_amd64_standard.qcow2 -netdev user,id=user.0 -device e1000,netdev=user.0
임의의 컴퓨터에 ping을 시도합니다.
$ ping 10.0.2.21
Destination Host Unreachable
게스트에서는 호스트 10.0.2.2(DHCP 서버)에만 ping을 보낼 수 있습니다.
답변1
QEMU는 SLIRP 백엔드에서 ICMP를 지원합니다. 커널의 사용자를 위해 소위 ping 소켓(PF_INET, SOCK_DGRAM, PROT_ICMP)을 허용해야 합니다.
매우 간단하다
sysctl -w net.ipv4.ping_group_range='0 2147483647'
당신은 또한 볼 수 있습니다http://lwn.net/Articles/422330/
답변2
QEMU 위키에 따르면 QEMU는 SLIRP 백엔드에서 ICMP를 지원하지 않습니다.
사용자 네트워크(SLIRP)
이는 기본 웹 백엔드이며 일반적으로 사용하기 가장 쉽습니다. 루트/관리자 권한이 필요하지 않습니다. 다음과 같은 제한사항이 있습니다.
- 오버헤드가 높아서 성능이 좋지 않음
- ICMP 트래픽이 작동하지 않습니다(따라서 게스트 내부에서 ping을 사용할 수 없습니다).
- 호스트 또는 외부 네트워크에서 게스트에 직접 액세스할 수 없음
ICMP가 작동하려면 TAP, VDE 또는 소켓을 사용해야 합니다.
추가 정보: QEMU 위키 - 네트워크게다가Wikibooks QEMU 네트워크 섹션
또한 권장되는 사항:VLAN 작업에 대한 고급 가이드
답변3
내가 찾은 가장 간단하고 효과적인 방법은 다음과 같습니다.이것.
요약하면 호스트 시스템에서 다음을 수행합니다.
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
Linux 커널에서 지원하지 않는 장치에 대한 브리징 문제를 처리합니다. 하지만 유선 연결로도 잘 작동합니다. arp
구성 에서 wlan0
로 변경하면 됩니다 eth0
.
DHCP
게스트 IP 주소는 작동하지 않으므로 직접 설정해야 합니다 .
이제 호스트에 ping을 보낼 수 있습니다.
답변4
아래 두 가지 답변을 직접 결합하여 이를 달성했습니다.
wget
먼저 다음과 같이 작업하기 쉬운 다른 도구(예:)를 사용하여 게스트 네트워크를 호스트에 연결하는 방법을 알아보세요 .https://serverfault.com/questions/769874/how-to-forward-a-port-from-guest-to-host-in-qemu-kvm/951835#951835- 그런 다음
ping
특히 TCP IP 도구는 다른 사람들이 언급한 TCP IP 도구보다 작업하기가 어렵지만wget
다음과 같이 관리하기도 했습니다.QEMU 게스트에서 외부 URL을 핑하는 방법은 무엇입니까?
이를 결합하여 "호스트 IP"를 찾은 ip route
후 다음을 수행했습니다.
ping 10.0.2.2
효과가 있었습니다.
시험용이 QEMU + Buildroot 설정Ubuntu 19.04 호스트에서.