vSphere自宅ラボ構築 3回: 仮想ルーター (VyOS) の構築

# 概要

本記事は自宅ラボ構築の第3回で、前回はESXiの展開を行いました。
今回はネットワーク周りの準備を行います。
主に仮想ルーターとしてVyOSを展開する形です。

## 全記事
- [1回: 構築する環境](https://qiita.com/strawberryjam/items/aea07bbe4f0857381448)
- [2回: ベアメタルへESXiをインストール](https://qiita.com/strawberryjam/items/be63410bdb316cc6e145)
- **3回: 仮想ルーター (VyOS) の構築 ← 今ココ**
- [4回: DNS (Unbound) の構築](https://qiita.com/strawberryjam/items/2172da84253cd8233c89)
- [5回: vCenterの構築](https://qiita.com/strawberryjam/items/c47eb74fc23189078cbd)
- [6回: Nested ESXiでのvSphereクラスタ構築](https://qiita.com/strawberryjam/items/06c8240b3b30d7fe8e1e)

## 対象範囲

本記事では全体構成の以下赤枠の部分を構成します。
※黒くなっているところは未構築
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/9dda2201-a837-7e0a-6cd5-2e998c5e25e1.png)

# 仮想ルーターの構築

以下の順番で実施していきます

- ポートグループの作成
- VyOSのデプロイ
- VyOSの設定
- VyOSを宛先として各マシンへ設定

## ポートグループの作成

今回VLANを用いるため、それぞれのポートグループを作成しておきます

- VM Network (VLAN ID: 0)
    - デフォルトで存在
- VLAN-1 (VLAN ID: 1)
- VLAN-2 (VLAN ID: 2)
- VLAN-Trunk (VLAN ID: 4095)

VLAN Trunkは本記事では用いませんが、今後Nested構築などでは利用するので合わせて作成しています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/af6ed831-d017-d340-a914-98912a52c3a3.png)

## VyOSのデプロイ

VyOSのデプロイを行います。
今回は以下画像のようなスペックで展開しています。
重要な点としては、VyOSには各VLANのゲートウェイになってもらうため、NICを3つ搭載してポートグループをそれぞれ割り当てています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/70d80630-f1de-0e8b-9325-05a5790747b4.png)

それでは起動してログインを行います。
ログイン情報のデフォルトはvyos/vyosとなります。

ログイン後設定を恒久化するため、以下コマンドを実行しておきます。

```cisco_ios
install image
```

いくつか質問が表示されますが、パスワード以外はデフォルトで進めます。

完了したら1度再起動します。
```cisco_ios
reboot
```

## VyOSの設定

再起動後各種設定を行っていきます。
念の為、以下コマンドにてNICを認識していることを確認しておきます。

```cisco_ios
show interfaces
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/6d82d6db-9db6-74c4-de2c-631692961fda.png)

行う設定は以下図のようなイメージを目指します。
VLANごとのインターフェイスに.254のアドレスを割り当てます。その上でインターネットへの出口として.0.1のアドレスへ向かうようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/5b247844-d1ac-0810-01e7-e0e8a0326492.png)

### IPアドレスの割当

設定モードへ移行します
```cisco_ios
configure
```

以下コマンドでインターフェイスごとにIPアドレスを設定します
```cisco_ios
set interfaces ethernet eth0 address 192.168.0.254/24
set interfaces ethernet eth1 address 192.168.1.254/24
set interfaces ethernet eth2 address 192.168.2.254/24
```

### スタティックルートの設定
知らないネットワークのアドレスは192.168.0.1へ
```cisco_ios
set protocols static route 0.0.0.0/0 next-hop 192.168.0.1
```

### SNATの設定
.1.0と.2.0のネットワーク上からインターネットへ出られるように設定しておきます
```cisco_ios
set nat source rule 1 outbound-interface name eth0
set nat source rule 1 source address 192.168.1.0/24
set nat source rule 1 translation address masquerade

set nat source rule 2 outbound-interface name eth0
set nat source rule 2 source address 192.168.2.0/24
set nat source rule 2 translation address masquerade
```

### SSHの有効化
必須ではないが、今後のメンテナンスで便利なので設定
```cisco_ios
set service ssh
```

### 設定の有効化と保存
こちらを忘れると意味がないのできちんとやっておく
```cisco_ios
commit
save
```

### 設定の確認
各コマンドにて設定が反映されていることを確認しておく

```cisco_ios
show interfaces 

Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address        MAC                VRF        MTU  S/L    Description
-----------  ----------------  -----------------  -------  -----  -----  -------------
eth0         192.168.0.254/24  00:0c:29:5a:7e:3c  default   1500  u/u
eth1         192.168.1.254/24  00:0c:29:5a:7e:46  default   1500  u/u
eth2         192.168.2.254/24  00:0c:29:5a:7e:50  default   1500  u/u
lo           127.0.0.1/8       00:00:00:00:00:00  default  65536  u/u
             ::1/128
```
```cisco_ios
show nat

 source {
     rule 1 {
         outbound-interface {
             name eth0
         }
         source {
             address 192.168.1.0/24
         }
         translation {
             address masquerade
         }
     }
     rule 2 {
         outbound-interface {
             name eth0
         }
         source {
             address 192.168.2.0/24
         }
         translation {
             address masquerade
         }
     }
 }
```
以上でVyOSの設定は完了となります。

## VyOSを宛先として各マシンへ設定

VyOSを作成しただでは意味がないため、各マシンに設定を施します。
- 作業用のWindows端末
- esxi-00

### 作業用のWindows端末
今回色々と作業しているWindows端末にVyOSを宛先として登録します。
なお、この端末は普段使いしているため、ゲートウェイをVyOSに依存したくないです。
そのため、スタティックルートとして1.0と2.0のネットワークを登録しておこうと思います。

以下コマンドをWindows端末にて管理者権限のコマンドプロンプトにて実行

```powershell
route add 192.168.1.0 mask 255.255.255.0 192.168.0.254 -p
route add 192.168.2.0 mask 255.255.255.0 192.168.0.254 -p
```

その後適当にesxi上にVLAN1やVLAN2のマシンを構築して、疎通ができていればOKです。

```
tracert 192.168.2.1
    
192.168.2.1 へのルートをトレースしています。経由するホップ数は最大 30 です
    
  1    11 ms     1 ms    <1 ms  192.168.0.254
  2     4 ms     1 ms    <1 ms  192.168.2.1
    
トレースを完了しました。
```

### ESXiのデフォルトゲートウェイの設定
ESXiのデフォルトゲートウェイも192.168.0.254にしておきます。

sshで接続して、以下コマンドで設定していきます

```bash
esxcli network ip interface ipv4 set --interface-name=vmk0 --ipv4=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.254 --type=static
```

以下コマンドで設定を確認すると反映されていることが確認できます。
```bash
esxcli network ip interface ipv4 get
    
Name  IPv4 Address   IPv4 Netmask   IPv4 Broadcast  Address Type  Gateway        DHCP DNS
----  -------------  -------------  --------------  ------------  -------------  --------
vmk0  192.168.0.101  255.255.255.0  192.168.0.255   STATIC        192.168.0.254     false
```

ただし、ここで問題が発生し、どうやら設定上は反映されているように見えていますが、実は疎通できていなかったことが確認されました。
調べた所スタティックルートを指定してあげる必要があるもようです。。。
※CLIではなく、esxiの設定画面から設定した場合は不要
```bash
esxcli network ip route ipv4 add -n 0.0.0.0/0 -g 192.168.0.254
```

# まとめ

今回はVyOSを中心としたネットワーク周りの設定を実施しました。
仮想ルーターは初めて触れましたが、思ったより便利でした。
次回はDNSを展開して内向きの名前解決を行える準備を行っていきます。

**次の記事はこちら**

https://qiita.com/strawberryjam/items/2172da84253cd8233c89

## おまけ

今回最後にWindows端末やESXiのゲートウェイを変更しましたが、元々ある192.168.0.1のゲートウェイにスタティックルートを追加するパターンもありだと思います（最初はそっちも検討していた）
ただし、我が家の192.168.0.1のルーターはスタティックルート等が設定できないルーターのため、今回この構成しか無いかなぁという形でした。


## 参考にしたサイト

https://zenn.dev/payapayao/articles/vyos-build-first

https://vhoge.hateblo.jp/entry/2019/08/09/225830