UbuntuでMultipass(KVM)のブリッジネットワーク環境を構築する手順
WIndowsでMultipass(VirtualBox)のブリッジネットワークを構成したのだが、古めのPCで立ち上げっぱなしにしておくと起動音がちょっと気になる。
静かな別PCに同様の環境を構築したい。
PCにはUbuntuをインストールしているので、Ubuntu + KVMに Multipassを導入しブリッジネットワークを設定、外部から接続できるところまで持っていく。
1.仮想マシンマネージャーの導入
KVMおよび仮想マシンマネージャーの導入は、以前行ったメモ Ubuntu KVM に ネットワークブリッジを構成する | Glob (typea.infoを確認し実施。
仮想マシンマネージャおよびKVM導入後は、以下の手順に従い、デフォルトのドライバを、QEMUから変更する
Using libvirt in Multipass | Multipass documentation
$ multipass get local.driver qemu $ sudo apt install libvirt-daemon-system $ sudo snap connect multipass:libvirt $ multipass stop --all $ sudo multipass set local.driver=libvirt $ sudo multipass get local.driver libvirt
仮想マシンマネージャーに、multissで作成した仮想マシンが表示された。
2.ホスト側でネットワークブリッジの作成
2.1 ホストOSで、ネットワークを確認
piroto@puli:~$ nmcli con show NAME UUID TYPE DEVICE 有線接続 1 c2913b62-1b5f-391e-9e02-4bd3e84741e6 ethernet enp3s0 virbr0 2f6e833d-797b-4c2d-b70d-8f266af9065b bridge virbr0
2.2 ブリッジbr0を作成
piroto@puli:~$ sudo nmcli conn add type bridge ifname br0 接続 'bridge-br0' (647b382e-c101-45a8-a635-e047bbc8ba94) が正常に追加されました。
2.3 ブリッジとアダプターを接続
piroto@puli:~$ sudo nmcli con add type bridge-slave ifname enp3s0 master br0 接続 'bridge-slave-enp3s0' (75daa782-ffc6-4089-ac20-877747340856) が正常に追加されました。
2.4 ブリッジの有効化
piroto@puli:~$ sudo nmcli con up bridge-slave-enp3s0 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/9)
ホストOSのネットワーク設定に、ブリッジ接続が表示された!
3.ゲストOSの設定
3.1 仮想マシンマネージャからブリッジネットワークの追加
Ubuntu KVM に ネットワークブリッジを構成する | Glob (typea.info)の時と同様に、ネットワークをブリッジ接続に置き換えてしまうと、ホストOSから、multipass shell で接続ができなくなってしまうので、デフォルトのネットワーク設定はそのままに、仮想マシンマネージャーから、
ハードウェアの追加 - ネットワーク
から、上記で作成したブリッジネットワーク br0 を追加する。
3.2 ゲストOSにブリッジの設定
ホストOSのターミナルから、multipass shell ゲストOS でログイン、ブリッジアダプターを特定する。
今回は、ens7
ubuntu@puli-sub1:/etc/netplan$ ip link | grep DOWN 3: ens7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
rootで、以下のコマンド(ens7の部分は適切なネットワークID)を実行し、
ubuntu@puli-sub1:~$ sudo bash -c "cat > /etc/netplan/60-bridge.yaml" <<EOF network: ethernets: ens7: # this is the interface name from above dhcp4: true dhcp4-overrides: # this is needed so the default gateway route-metric: 200 # remains with the first interface version: 2 EOF
ブリッジネットワークを有効化する。
ubuntu@puli-sub1:~$ sudo netplan apply ubuntu@puli-sub1:~$ sudo ip address show dev ens7 up
確認すると、元々のアダプター ens3に、ブリッジ ens7 が設定され、それぞれ、ipアドレスがふよされている。
ubuntu@puli-sub1:/etc/netplan$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:cb:ab:49 brd ff:ff:ff:ff:ff:ff inet 192.168.122.141/24 brd 192.168.122.255 scope global dynamic ens3 valid_lft 3512sec preferred_lft 3512sec inet6 fe80::5054:ff:fecb:ab49/64 scope link valid_lft forever preferred_lft forever 3: ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:f0:ab:a6 brd ff:ff:ff:ff:ff:ff inet 192.168.0.49/24 brd 192.168.0.255 scope global dynamic ens7 valid_lft 86313sec preferred_lft 86313sec inet6 2402:6b00:3666:5800:5054:ff:fef0:aba6/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 289sec preferred_lft 289sec inet6 fe80::5054:ff:fef0:aba6/64 scope link valid_lft forever preferred_lft forever
4.外部から接続するための設定
4.1 mDNSのインストール
mDNSが便利なので、インストールして有効化。ホスト名。localでDNSなしに名前解決できるようになる。
ubuntu@puli-sub1:~$ sudo apt install -y avahi-daemon ubuntu@puli-sub1:~$ sudo systemctl start avahi-daemon ubuntu@puli-sub1:~$ sudo systemctl enable avahi-daemon
4.2 外部接続ユーザーの登録
ユーザー登録、-m でhomeディレクトリ作成、sudoグループに所属させ、sudo可能とする。
ubuntu@puli-sub1:~$ sudo useradd -m piroto ubuntu@puli-sub1:~$ sudo passwd piroto ubuntu@puli-sub1:~$ sudo usermod -G sudo piroto
4.3 SSHの再インストール
multipassで作成する仮想マシンにはsshdが入っているようなのだが、そのままだと、Permission Deniedが解決できないので、以下を再インストール。
ubuntu@puli-sub1:~$ sudo apt-get install ssh ubuntu@puli-sub1:~$ sudo apt-get install openssh-server
かつ、設定ファイルで、rootログインおよび、パスワード認証を有効化する。
/etc/ssh/sshd_config
PermitRootLogin yes PasswordAuthentication yes
5.完了!!
別マシンから、ゲストOSのホスト名で、ssh接続OK!