QEMU内で次のことができるため、ネットワークはうまく機能します。
wget example.com
しかし、これを行うと:
ping example.com
最初のタイトルのみが表示され、中断されます。
PING example.com (93.184.216.34): 56 data bytes
ping
以下の説明に従って実行するには、いくつかの追加の権限が必要であることを理解してください。https://stackoverflow.com/questions/37512291/how-is-ping-for-non-root-user-implemented-on-linux-distros
プログラムを使ってみました。https://wiki.qemu.org/Documentation/Networking#Enabling_ping_in_the_guest.2C_on_Linux_hostsホストマシンから:
sudo groupadd unpriv_ping
sudo usermod --append --groups unpriv_ping "$(id -nu)"
GROUP_ID="$(getent group unpriv_ping | cut -f 3 -d :)"
printf "net.ipv4.ping_group_range = ${GROUP_ID} ${GROUP_ID}\n" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
その後、ログアウトして再度ログインしましたが、役に立ちませんでした。
いいえ:
setcap cap_net_raw+eip qemu-system-x86_64
私の完全なQEMUコマンドラインは次のとおりです。
x86_64-softmmu/qemu-system-x86_64 \
-device \
rtl8139,netdev=net0 \
-gdb \
tcp::45457 \
-kernel \
/home/ciro/bak/git/linux-kernel-module-cheat/out/linux/default/x86_64/arch/x86/boot/bzImage \
-m \
256M \
-monitor \
telnet::45454,server,nowait \
-netdev \
user,hostfwd=tcp::45455-:45455,hostfwd=tcp::45456-:22,id=net0 \
-no-reboot \
-smp \
1 \
-trace \
enable=pr_manager_run,file=/home/ciro/bak/git/linux-kernel-module-cheat/out/run/qemu/x86_64/0/trace.bin \
-virtfs \
local,path=/home/ciro/bak/git/linux-kernel-module-cheat/data/9p,mount_tag=host_data,security_model=mapped,id=host_data \
-virtfs \
local,path=/home/ciro/bak/git/linux-kernel-module-cheat/out,mount_tag=host_out,security_model=mapped,id=host_out \
-virtfs \
local,path=/home/ciro/bak/git/linux-kernel-module-cheat/rootfs_overlay,mount_tag=host_rootfs_overlay,security_model=mapped,id=host_rootfs_overlay \
-serial \
mon:stdio \
-M \
pc \
-device \
edu \
-append \
'root=/dev/vda nopat console_msg_format=syslog nokaslr norandmaps panic=-1 printk.devkmsg=on printk.time=y console=ttyS0' \
-nographic \
-drive \
file=/home/ciro/bak/git/linux-kernel-module-cheat/out/buildroot/build/default/x86_64/images/rootfs.ext2.qcow2,format=qcow2,if=virtio,snapshot \
;
次の画像を使用してUbuntu 18.04ホストでテストされました。
答え1
ホストの設定が完了した後にログアウトして再度ログインするのではなく、コンピュータを再起動するとpingが機能します。