QEMU等の仮想マシンをDebian-11.4上で動かし、仮想マシンを実マシンと同様に(NAT越しで繋ぐ形ではなく)ネットワークに参加させる場合はネットワークブリッジを構成する必要があります。Windows上のVMware Playerだとこの辺の設定をGUIでほいほいできてしまいますが、QEMU(というかLinux?)ではARM on QEMU環境でDebianを動かすやkvmでTUN/TAPを使いゲストOSをホストOSと同じネットワークに所属させるを参考にして、/etc/network/interfacesをこう書く必要があるようです。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto enp4s0
iface enp4s0 inet manual
up ifconfig enp4s0 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports enp4s0 tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9
pre-up ip tuntap add dev tap0 mode tap user root
pre-up ip tuntap add dev tap1 mode tap user root
pre-up ip tuntap add dev tap2 mode tap user root
pre-up ip tuntap add dev tap3 mode tap user root
pre-up ip tuntap add dev tap4 mode tap user root
pre-up ip tuntap add dev tap5 mode tap user root
pre-up ip tuntap add dev tap6 mode tap user root
pre-up ip tuntap add dev tap7 mode tap user root
pre-up ip tuntap add dev tap8 mode tap user root
pre-up ip tuntap add dev tap9 mode tap user root
pre-up ip link set tap0 up
pre-up ip link set tap1 up
pre-up ip link set tap2 up
pre-up ip link set tap3 up
pre-up ip link set tap4 up
pre-up ip link set tap5 up
pre-up ip link set tap6 up
pre-up ip link set tap7 up
pre-up ip link set tap8 up
pre-up ip link set tap9 up
post-down ip link set tap9 down
post-down ip link set tap8 down
post-down ip link set tap7 down
post-down ip link set tap6 down
post-down ip link set tap5 down
post-down ip link set tap4 down
post-down ip link set tap3 down
post-down ip link set tap2 down
post-down ip link set tap1 down
post-down ip link set tap0 down
post-down ip tuntap del dev tap9 mode tap
post-down ip tuntap del dev tap8 mode tap
post-down ip tuntap del dev tap7 mode tap
post-down ip tuntap del dev tap6 mode tap
post-down ip tuntap del dev tap5 mode tap
post-down ip tuntap del dev tap4 mode tap
post-down ip tuntap del dev tap3 mode tap
post-down ip tuntap del dev tap2 mode tap
post-down ip tuntap del dev tap1 mode tap
post-down ip tuntap del dev tap0 mode tap
|
auto enp4s0以降の部分を追加しています(太字にしています)。同時に8つのQEMUを立ち上げることを考えてTAPデバイスを8つ作っていますが、ちょっと作りすぎたかもしれません。
あとはqemu-img create -f qcow2 netbsd.qcow2 120G; sudo qemu-system-x86_64 -enable-kvm -boot d -drive file=netbsd.qcow2,if=virtio -cdrom boot.iso -device virtio-rng-pci -net nic,model=virtio -net tap,ifname=tap0 -m 4096 -rtc base=utc -smp 4 -display cursesとでもしてNetBSD仮想マシンのインストールをしてみました。sudoでroot権限使って動かすのは美しくない気がしますが、動けば良しとします。
インストール後は、sudo qemu-system-x86_64 -enable-kvm -drive file=netbsd.qcow2,if=virtio -device virtio-rng-pci -net nic,model=virtio,macaddr=52:54:00:12:34:00 -net tap,ifname=tap0 -m 4096 -rtc base=utc -smp 4 -display curses(-bootと-cdromの指定を抜いてMACアドレスの指定を入れただけ)で仮想マシンを起動します。長ったらしいので、適当にシェルスクリプトの形にまとめておけば楽できそうです。
複数の仮想マシンを同時に使う場合は、仮想マシン毎にMACアドレスとTAPデバイスを用意しないといけない点に注意が必要です。設定が落ち着いたら、-display none -daemonizeとでもして裏で動かしておけば良いでしょうか。そういえばvirt-manager越しにこの辺りの設定をやる場合、どうやるんですかね…?56.4kg(18:30)
08-Aug-2022補足:NFSを使うことを考慮し、/etc/network/interfacesのiface br0 inet dhcpの行は以下のように書き直し、固定IPアドレスで使うことにします(IPアドレスは適当に記述しています)。/etc/resolv.confの記述も忘れずに。
iface br0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
|
11-Aug-2022補足:思っていたよりも仮想マシンの数が増えそうなので、tap8, tap9の定義も追加しました。
12-Aug-2022補足:このように予めTAPデバイスを作っている場合は、QEMUの起動オプションに-net tap,ifname=tapX,script=no,downscript=noを指定して/etc/qemu-if{up,down}の実行を止めておいた方が良さそうです。また、-enable-kvmを指定してQEMUを実行する→QEMUの実行者はgroup kvmに所属していることから、pre-up ip tuntap add dev tapX mode tapのuser rootはgroup kvmに変更することができます。
これらにより、qemu-system-x86_64 -enable-kvm -drive file=netbsd.qcow2,if=virtio -device virtio-rng-pci -net nic,model=virtio,macaddr=52:54:00:12:34:00 -net tap,ifname=tap0,script=no,downscript=no -m 4096 -rtc base=utc -smp 4 -display cursesでroot権限を持たなくても起動可能になり、さらに-display cursesを付けなかった場合におけるCan't open display問題に悩まされることがなくなりました。
25-Dec-2022補足:細かい修正を入れて、こんな感じになりました。tap0〜9だと他の目的で使う名前と当たりそうなので、qtap0〜9としています。