設計方針†
- VPN (SoftEther) サーバーは接続させるマシンとは別 IP アドレスである必要がある
- Intel NUC BOXNUC5CPYH (Celeron N3050) で実行していたが故障した
- 「Your Hardware Enablement Stack (HWE) is supported until April 2019」というメッセージも出ていて HW的には運用限界だろう
- 別の物理マシンを用意するのではなく、メインマシン上に KVM を動かし、VPN サーバーを仮想マシンとして動かす
- このためメインマシンの既存サービス(Samba、Apache2、TV録画 等)はそのまま動かしたまま KVM 上で VPN サーバーだけを仮想マシンとして追加
- 当然 NPV サーバーは外部からのアクセスを受け付ける必要があり、KVM ホストとの通信も必要
- ゲストOS にはメインマシンと同じ IP セグメント (=192.168.1.x) を振り当てる
ホストマシンのネットワーク設定†
VM インストール直後のデフォルトネットワーク構成†

munakata@mvc:~$ ip a
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: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 04:92:26:5c:c3:15 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.26/24 brd 192.168.1.255 scope global noprefixroute enp5s0
valid_lft forever preferred_lft forever
inet6 fe80::692:26ff:fe5c:c315/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:4a:b1:a9 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:4a:b1:a9 brd ff:ff:ff:ff:ff:ff
munakata@mvc:~$ brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254004ab1a9 yes virbr0-nic
munakata@mvc:~$ nmcli device
DEVICE TYPE STATE CONNECTION
enp5s0 ethernet 接続済み netplan-enp5s0
virbr0 bridge 接続済み virbr0
lo loopback 管理無し --
virbr0-nic tun 管理無し --
ゲストOSに同一セグメントIPを振れるようにブリッジ構成にする†
新規に br0 を定義する†
munakata@mvc:~$ nmcli device
DEVICE TYPE STATE CONNECTION
enp5s0 ethernet 接続済み netplan-enp5s0
virbr0 bridge 接続済み virbr0
lo loopback 管理無し --
virbr0-nic tun 管理無し --
munakata@mvc:~$ nmcli connection add type bridge ifname br0
接続 'bridge-br0' (cfcf64fa-3d14-4194-8352-ca74b4b20dd3) が正常に追加されました。
munakata@mvc:~$ nmcli device
DEVICE TYPE STATE CONNECTION
enp5s0 ethernet 接続済み netplan-enp5s0
virbr0 bridge 接続済み virbr0
br0 bridge 接続中 (IP 設定を取得中) bridge-br0
lo loopback 管理無し --
virbr0-nic tun 管理無し --
br0 のスパンニングツリー(ループ回避の為の冗長プロトコル)を無効にする†
munakata@mvc:~$ nmcli connection show bridge-br0 | grep bridge.stp
bridge.stp: はい
munakata@mvc:~$ nmcli connection modify bridge-br0 bridge.stp no
munakata@mvc:~$ nmcli connection show bridge-br0 | grep bridge.stp
bridge.stp: いいえ
bridge-br0のIPアドレス、ゲートウェイ、DNSサーバの設定†
nmcli connection modify bridge-br0 ipv4.method manual ipv4.addresses "192.168.11.8/24" ipv4.gateway "192.168.11.1" ipv4.dns 192.168.11.1
ブリッジbridge-br0にデバイスenp5s0を接続タイプbridge-slaveとして追加†
munakata@mvc:~$ nmcli connection add type bridge-slave ifname enp5s0 master bridge-br0
接続 'bridge-slave-enp5s0' (317c09b2-e7a4-409d-906b-4e12450344b4) が正常に追加されました。
変更後の設定を確認†
munakata@mvc:~$ nmcli connection show
NAME UUID TYPE DEVICE
bridge-br0 cfcf64fa-3d14-4194-8352-ca74b4b20dd3 bridge br0
bridge-slave-enp5s0 317c09b2-e7a4-409d-906b-4e12450344b4 ethernet enp5s0
virbr0 f93e94e4-980a-4a45-9ccd-668fcdb7130a bridge virbr0
netplan-enp5s0 85b48279-9901-3522-93a4-380f40958535 ethernet --
munakata@mvc:~$ ip a
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: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 04:92:26:5c:c3:15 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 04:92:26:5c:c3:15 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.26/24 brd 192.168.1.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 fe80::8024:bc4f:d6e5:c348/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:4a:b1:a9 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:4a:b1:a9 brd ff:ff:ff:ff:ff:ff
KVM インストール†
必要なパッケージ群をインストール†
munakata@mvc:~$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager libguestfs-tools
munakata が libvirt グループに追加された( sudo 無しで virsh 等が実行できる )†
munakata@mvc:~$ cat /etc/group | grep libvirt
libvirt:x:131:munakata
libvirt-qemu:x:64055:libvirt-qemu
libvirt-dnsmasq:x:132:
仮想マシンの iso ファイルの準備と virsh にプールを登録†
- iso ファイルプールを作成しファイルを配置
munakata@mvc:~$ sudo mkdir /var/lib/libvirt/isos
munakata@mvc:~$ sudo mv ~/Downloads/ubuntu-20.04-live-server-amd64.iso /var/lib/libvirt/isos/
- iso ファイルのオーナーを変更
munakata@mvc:~$ sudo chown libvirt-qemu:libvirt /var/lib/libvirt/isos/ubuntu-20.04-live-server-amd64.iso
munakata@mvc:~$ ls -l /var/lib/libvirt/isos/
合計 929796
-rw-rw-r-- 1 libvirt-qemu libvirt 952107008 6月 22 10:27 ubuntu-20.04-live-server-amd64.iso
- kvm に iso ファイルプールを登録 (virt-manager のGUIからも設定は可能)
munakata@mvc:~$ virsh pool-define-as isos dir - - - - /var/lib/libvirt/isos
Pool isos defined
munakata@mvc:~$ virsh pool-autostart isos
Pool isos marked as autostarted
munakata@mvc:~$ virsh pool-start isos
Pool isos started
参考 URL†
virt-manager を使って仮想マシンをインストール†
CPU の仮想化支援機構が無効になっている場合にはエラーが出る → BIOS メニューで有効にする†
- 警告: KVM が利用できません と出る時は BIOS で CPU の仮想化支援機構が無効になっている

KVMのゲストOSをブリッジに接続する (ゲストOSのインターフェース vnet0 を virtbr0 から br0 に切り替える)†
munakata@mvc:~$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0492265cc315 no enp5s0
virbr0 8000.5254004ab1a9 yes virbr0-nic
参考 URL†
Ubuntu 18.04 に KVM をインストール†