#author("2020-06-22T20:15:55+09:00","","")
#contents():
** 設計方針 [#o0aec74c]
- VPN ([[SoftEther:https://ja.softether.org/]]) サーバーは接続させるマシンとは別 IP アドレスである必要がある
- [[Intel NUC BOXNUC5CPYH (Celeron N3050):https://ark.intel.com/content/www/jp/ja/ark/products/85254/intel-nuc-kit-nuc5cpyh.html]] で実行していたが故障した
- 「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) を振り当てる

** ホストマシンのネットワーク設定 [#o33322a0]
*** VM インストール直後のデフォルトネットワーク構成 [#j796758c]
-- &ref(kvm_def_net.jpg);

 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を振れるようにブリッジ構成にする [#kf6cf88b]
-- &ref(kvm_def_new.jpg);

*** 新規に br0 を定義する [#ob6b1cf3]
 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 のスパンニングツリー(ループ回避の為の冗長プロトコル)を無効にする [#e8c8d0a4]

 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サーバの設定 [#ca0eded2]

 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として追加 [#w13bf0e4]

 munakata@mvc:~$ nmcli connection add type bridge-slave ifname enp5s0 master bridge-br0
 接続 'bridge-slave-enp5s0' (317c09b2-e7a4-409d-906b-4e12450344b4) が正常に追加されました。

*** 変更後の設定を確認 [#z896aa1f]

 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 インストール [#f107e348]
*** 必要なパッケージ群をインストール [#h63c85dd]
 munakata@mvc:~$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager libguestfs-tools
*** munakata が libvirt グループに追加された( sudo 無しで virsh 等が実行できる ) [#z0563a83]
 munakata@mvc:~$ cat /etc/group | grep libvirt
 libvirt:x:131:munakata
 libvirt-qemu:x:64055:libvirt-qemu
 libvirt-dnsmasq:x:132:
*** 仮想マシンの iso ファイルの準備と virsh にプールを登録 [#w67f13a0]
- 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 [#c39b0974]
- [[Ubuntu 18.04: 仮想化のKVMをインストールする:https://www.hiroom2.com/2018/05/11/ubuntu-1804-kvm-ja/]]

** virt-manager を使って仮想マシンをインストール [#f310e858]
*** CPU の仮想化支援機構が無効になっている場合にはエラーが出る → BIOS メニューで有効にする [#xdee11b0]
- 警告: KVM が利用できません と出る時は BIOS で CPU の仮想化支援機構が無効になっている
- &ref(kvm_no_support.jpg);

*** KVMのゲストOSをブリッジに接続する (ゲストOSのインターフェース vnet0 を virtbr0 から br0 に切り替える) [#b19f83b8]

- 変更前

 munakata@mvc:~$ brctl show
 bridge name	bridge id		STP enabled	interfaces
 br0		8000.0492265cc315	no		enp5s0
 virbr0		8000.5254004ab1a9	yes		virbr0-nic



*** 参考 URL [#c8a26f89]
- [[KVMでゲストOSをブリッジ接続する:https://qiita.com/yoshiyasu1111/items/8d07a4fd55116fba07f7]]
- [[Ubuntu 18.04: bridgeインターフェースの設定:https://www.hiroom2.com/2018/05/08/ubuntu-1804-bridge-ja/]]

** virtsh を使った仮想マシンの操作 [#ue25dc87]
*** 代表的なコマンド [#y4d37c41]
|No|コマンド|処理内容|h
|1|vm の一覧表示|virsh list (--all)|
|2|vm の起動|virsh start ドメイン名|
|3|vm の停止|virsh shutdown ドメイン名|
|4|vm のリセット(強制停止)|virsh reset ドメイン名|
|5|vm の一時停止|virsh suspend ドメイン名|
|6|vm の再開|virsh resume ドメイン名|
|7|vm のリネーム|virsh domrename ドメイン名|
|8|vm の設定変更(xml ファイルの編集)|virsh edit ドメイン名|
|9|||


*** 仮想マシンに対するコンソール接続 [#c93ecb78]
-- カーネル起動パラメータに console パラメータの指定が必要
-- パラメータがなくフリーズした場合などには [CTRL]+] で元のシェルに戻る(=エスケープ)
- 
-

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS