vSphere自宅ラボ構築 4回: DNS (Unbound) の構築

# 概要

本記事は自宅ラボ構築の第4回で、前回はVyOSの展開を行いました。
今回は名前解決のためのDNSの構築を行います
利用するもとしてはUnboundというソフトウェアで、Ubuntu上に展開して利用していきます。

## 全記事
- [1回: 構築する環境](https://qiita.com/strawberryjam/items/aea07bbe4f0857381448)
- [2回: ベアメタルへESXiをインストール](https://qiita.com/strawberryjam/items/be63410bdb316cc6e145)
- [3回: 仮想ルーター (VyOS) の構築](https://qiita.com/strawberryjam/items/8bd88e2d2a1ad14987db)
- **4回: DNS (Unbound) の構築 ← 今ココ**
- [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/d269bc8d-7135-0615-861c-1e6d622010f6.png)

# Unboundの展開

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

- Ubuntu Serverの展開
- Unboundのインストール
- Unboundの設定
- system-resolvedの無効化
- 各マシンのDNSサーバー関連の設定を更新

## Ubuntu Serverの展開

まず今回Unboundを動作させるUbuntu Serverを展開します。
以下スペックにて仮想マシンを作成して起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/56aebe3d-dbf5-9ad1-ad94-f04ee9e38ae2.png)

起動後Ubuntu Serverのインストールを実施していきます。
今回は以下設定を行っておきます。
- サブネット: 192.168.0.0/24
- IPアドレス: 192.168.0.111
- デフォルトゲートウェイ: 192.168.0.254
- DNS: 8.8.8.8, 8.8.4.4
- SSH: 有効化
- hostname: ubuntu-unbound

インストールが完了したら再起動しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/9fa80cb3-a0b1-d146-6334-3d5acb11c3c3.png)

## Unboundのインストール

展開したUbuntu ServerにSSHでログインして、以下コマンドを実行するのみです。
```bash
sudo apt install unbound
```

## Unboundの設定

Unboundでは設定ファイルに名前解決の内容やフォワーディングの設定を記載することで利用できます。
以下コマンドで設定ファイルを作成していきます。

```bash
sudo vi /etc/unbound/unbound.conf.d/unbound.conf
```

今回は以下内容を記載しておきます。
基本的には許可するネットワーク、正引き逆引き、解決できない際のフォワーディング先を記載しています。

```bash
server:
  interface: 0.0.0.0

  # アクセス制御
  access-control: 0.0.0.0/0 refuse
  access-control: 192.168.0.0/24 allow
  access-control: 192.168.1.0/24 allow
  access-control: 192.168.2.0/24 allow

  # 正引き逆引き
  local-data: "esxi-00.stjam.home A 192.168.0.101"
  local-data-ptr: "192.168.0.101 esxi-00.stjam.home"

  local-data: "vcsa-00.stjam.home A 192.168.0.102"
  local-data-ptr: "192.168.0.102 vcsa-00.stjam.home"

  local-data: "esxi-01.stjam.home A 192.168.0.103"
  local-data-ptr: "192.168.0.103 esxi-01.stjam.home"
  local-data: "esxi-02.stjam.home A 192.168.0.104"
  local-data-ptr: "192.168.0.104 esxi-02.stjam.home"
  local-data: "esxi-03.stjam.home A 192.168.0.105"
  local-data-ptr: "192.168.0.105 esxi-03.stjam.home"

  # フォワーディング先
  forward-zone:
    name: "."
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4
```


正引き逆引きの紐づけは以下にしています。
今後展開予定のesxi含めて全部書いています。

| FQDN               | IPアドレス        |
| ------------------ | ------------- |
| esxi-00.stjam.home | 192.168.0.101 |
| vcsa-00.stjam.home | 192.168.0.102 |
| esxi-01.stjam.home | 192.168.0.103 |
| esxi-02.stjam.home | 192.168.0.104 |
| esxi-03.stjam.home | 192.168.0.105 |



以下コマンドで設定内容に問題が無いか確認しておく

```bash
unbound-checkconf
    
# 問題なし
unbound-checkconf: no errors in /etc/unbound/unbound.conf
```


## system-resolvedの無効化

Ubuntuではデフォルトで53番のポートをsystem-resolvedにて使っています。
Unboundも53番ポートを使うため、system-resolveの設定を変更します。

```bash
sudo vi /etc/systemd/resolved.conf
```

以下内容を追記して保存します

```bash
DNSStubListener=no
```

systemd-resolvedを再起動します
```bash
sudo systemctl restart systemd-resolved
```

Unboundも再起動しておきます

```bash
sudo systemctl restart unbound
systemctl status unbound
```

動作確認として、DNSサーバーを指定する形のnslookupでWindows端末から確認して、結果が問題なければOK

```bash
nslookup esxi-00.stjam.home 192.168.0.111
    
サーバー:  UnKnown
Address:  192.168.0.111
    
名前:    esxi-00.stjam.home
Address:  192.168.0.101
```

## 各マシンのDNSサーバー関連の設定を更新

今回作成したDNSサーバーを参照するように既存マシンの設定を更新していきます。

### esxi-00
まずesxi-00のFQDN含めて今回のDNSサーバーに準拠する形に変更しておきます。

```bash
esxcli system hostname set --host=esxi00
esxcli system hostname set --domain stjam.home
esxcli system hostname set --fqdn=esxi-00.stjam.home
```

以下コマンドで設定した内容であればOK

```bash
hostname -f
    
# FQDN
esxi-00.stjam.home
```

続いて参照先のDNSサーバーにUnboundを追加します。
```bash
esxcli network ip dns server add --server=192.168.0.111
```
元々登録していた以下2つのDNSはESXi側には不要なので取り除いておきます。
```bash
esxcli network ip dns server remove --server=8.8.8.8
esxcli network ip dns server remove --server=8.8.4.4
```

以下コマンドにて登録したDNSサーバーのみが表示されていればOK
```bash
esxcli network ip dns server list
   DNSServers: 192.168.0.111
```

### 作業用Windows端末
こちらにも追加しておきます。GUIでさくっと以下のように追加しておきます。
なお、こちらは普段使いしている関係上今回作成したDNSサーバーに依存したくないため、保険で他のDNSは残しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/a0269c80-10cf-021f-a799-5caa560d74bd.png)

追加後、esxi-00のFQDNにブラウザからアクセスしてログイン画面が表示されれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/e89b32a4-f98f-08c7-a9e3-8b1250548674.png)

# まとめ

今回はUnboundを用いて名前解決できるようにDNSサーバーを構築しました。
将来的にAD等を試したいときはまた色々いじる必要があるかもですが、Unboundは簡易的に使えてかなり便利な印象でした。
次回はようやくvCenterを展開していきます。

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

https://qiita.com/strawberryjam/items/c47eb74fc23189078cbd


## 参考にしたサイト
https://qiita.com/umaxiaotian/items/b7f8f4866468d5c400b3