UbuntuのKVMでブリッジ接続の仮想PCを構築

まず普通に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を作れるようになりました。