ゲストネットワークからホストネットワークへの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 Wikiによると、QEMUはSLIRPバックエンドでICMPをサポートしていません。
ユーザーネットワーク(SLIRP)
これはデフォルトのWebバックエンドであり、一般的に使用するのが最も簡単です。ルート/管理者権限は必要ありません。次の制限があります。
- オーバーヘッドが高くてパフォーマンスが悪い
- ICMPトラフィックは機能しません(したがってゲスト内でpingを使用できません)。
- ホストまたは外部ネットワークからゲストに直接アクセスできない
ICMPが機能するには、TAP、VDE、またはソケットを使用する必要があります。
追加情報: QEMU Wiki - ネットワークしかも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
以下の2つの答えを直接組み合わせてこれを達成しました。
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をpingする方法は?
これを組み合わせて「ホストIP」を見つけ、次のようにしip route
ました。
ping 10.0.2.2
効果がありました。
試験用このQEMU + Buildrootの設定Ubuntu 19.04ホストで。