まず普通にUbuntuをなるべく最小で構築します。Ubuntuの中に仮想PCを作れるので容量は全部で大丈夫です。仮想環境 KVMをインストールします
sudo apt install qemu-kvm libvirt-daemon-system bridge-utils virt-manager
インストールしたら一度再起動しないと認識しないみたいです。
次に、デフォルトでNATのブリッジができてしまうので壊します。
virsh net-destroy default
virsh net-undefine default
Ubuntuはnetplanでブリッジを作成しないといけないみたいです。/etc/netplanに何やらファイルができているので新しく作り、NICを付けます。ちなみに私はエディタはviよりnano派です。
sudo nano /etc/netplan/99_myplan.yaml
中身はこんな感じです。
network:
version: 2
ethernets:
enp4s0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [enp4s0]
addresses: [192.168.0.129/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses: [192.168.0.1, 8.8.8.8]
parameters:
stp: false
dhcp4: false
dhcp6: false
enp4s0というのは私のNIC名なのでそれぞれ事前に自分のを調べておいてください。
その後、ファイルの権限が危険だとエラーになるので、他者が書き込めないよう変えておきます。そしたらnetplanにapplyしてエラーがでなければOK。私の場合、何か別の設定ファイルもできていてエラーになりました。正直、何かわからないので削除しました。
sudo chmod 600 /etc/netplan/99_myplan.yaml
sudo netplan apply
br0を作った瞬間に今のnicが使えなくなったせいか、ホストマシンのネットが切れてしまいました。でも再起動したら直ったので無事にブリッジになったようです。あいまいですみません💦
バーチャルマシンを作る前にブリッジをKVMに認識させます。まずその場でいいのでxmlファイルを作ります。
nano host-bridge.xml
中身はこんな感じ
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
KVMに登録します
virsh net-define host-bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
確認します
virsh net-list --all
どうも、ファイアーウォールかなにかでブロックされるみたいなので、iptablesにてFORWARDのデフォルトポリシーをDEBYからACCEPTにします。
iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
確認します
iptables -nvL --line-number
あとはvirt-managerで仮想PCを作れるようになりました。