DNS 役割サービス の インストール (Windows Server 2022)

# はじめに
Windows Server に DNS の役割サービスを インストールする手順です。

この記事では、以下の公開情報の内容をもとに、画面キャプチャ付きで紹介していきます。

**公開情報：クイックスタート: DNS サーバーのインストールと構成**
https://learn.microsoft.com/ja-jp/windows-server/networking/dns/quickstart-install-configure-dns-server?tabs=gui

# ゾーンの冗長性 をどのように考えるのか？
この DNS の役割サービス の導入を開始する前に、ゾーンの冗長性を どのように構成するのかを考えると良いと思います。

ゾーンの種類には、標準 と Active Directory 統合 の２種類があり、以下のような特長があります。
|  |標準|Active Directory 統合|
|:-:|:-:|:-:|
|複製の方法|ゾーン転送<br>※DNS プロトコル|ドメインのレプリケーション|
|複製の方向  |プライマリ：更新可<br>セカンダリ：読込のみ|マルチマスタ<br>任意のサーバーで更新可|
|ゾーンデータ|テキストファイル|ドメインのデータベース<br>※アプリケーションディレクトリパーティション|
|ドメインコントローラーと同居|不要|必要|
|互換性|Linux などでも利用されている|Windows Server 独自|

上記を踏まえて、冗長構成 の組み合わせを一覧化すると、以下のようになります。

|№| 1 台目 | 2 台目以降 |補足|
|:-:|:-:|:-:|:-:|
|1|標準：プライマリ|なし|検証向け<br>１台のみの DNS サーバー|
|2|標準：プライマリ|標準：セカンダリ|一般的な<br>プライマリ - セカンダリ<br>の冗長構成   |
|3|Active Directory 統合：プライマリ|なし|検証向け<br>１台のみの<br>ドメインコントローラ|
|4|Active Directory 統合：プライマリ|Active Directory 統合：プライマリ|マルチマスタ|
|5|Active Directory 統合：プライマリ|標準：セカンダリ|めずらしい組み合わせですが、こういう構成も可能|

:::note info
この記事で説明している導入手順は、「標準:プライマリ」か「標準：セカンダリ」を構成する際に必要な手順になります。
※No.5 の「標準：セカンダリ」を構成する場合も該当します。
:::

:::note warn
Active Directory 統合 の場合は、この手順で DNS サーバーの役割 を導入してから、AD DS を構成することもできますが、一般には AD DS の役割を導入する際に DNS サーバーの役割が自動構成されるため、この記事で紹介する手順は使わないケースが殆どです。

AD DS の役割で自動構成すれば、本手順の 2 章以降で説明している フォワーダーや NIC の参照先変更が 自動構成されるので、以下の手順を使いましょう。

**Active Directory ドメインサービス (ADDS) の導入**
https://qiita.com/carol0226/items/b94f93adc309b5dc8ee8
:::

# 導入手順
## 1. DNS サーバー 役割サービスの導入
0. サーバーマネージャーの **管理** から **役割と機能の追加** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/195b497b-7af9-1323-c558-4c421ce79b77.png)
　<br>
0. **開始する前に** 画面では、そのまま **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0b9dd680-f04f-164c-d3f3-df37ba83bb71.png)
　<br>
0. **インストールの種類の選択** では、**役割ベースまたは機能ベースのインストール** を選んだ状態で **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bb1655d4-ee94-4141-17cd-12ffcab41d40.png)
　<br>
0. **対象サーバーの選択** 画面では、特に設定は変更せずに **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b37a01b2-4d74-d487-0e15-f53ec21bff98.png)
　<br>
0. サーバーの役割の選択 画面では、**DNS サーバー** にチェックを入れます。
機能の追加ウィンドウが開きますが、この画面に戻ってきたら **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/532410f9-eebb-0d31-f40e-fe5f8124d671.png)
<br>機能の追加ウィンドウでは、機能の追加 を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/18d4770e-d906-a23d-cde4-8751ab967424.png)

:::note warn
**注意**
Azure 環境では、以下のワーニングが表示されます。
これは、Azure では OS の NIC で固定 IP を使用することが非推奨なため、動的 IP のままなはずです。その場合に、OS 側で IP が固定されていないことを示すメッセージです。
DNS の機能としては、IP アドレスが変わってしまうと問題になりますが、Azure 側の機能で IP を固定すれば問題ないため、このまま **続行** を押して進めてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ace78e58-92d6-2a74-f6e3-c6c7b65ed6fb.png)

もし、オンプレミスの環境で 上記の表示が出た場合は、**キャンセル** を押して中止し、サーバーの NIC 設定を **固定 IP アドレス** に変更してからインストールしなおしましょう。
:::

6．**機能の選択** 画面では、特に設定は変更せずに **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5b64b5c3-9253-578b-1cb2-fe70e866ed13.png)

7．**DNS サーバー** 画面では、そのまま 次へ を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2ae32541-374c-21ec-6cd8-b36eb507962f.png)

8．**インストールオプションの確認** 画面では、選択肢の最終確認を行い **インストール** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fb572d6a-e550-dc3f-b6d5-06fe099110e9.png)

9．インストールが正常に完了すると、以下の画面になります。**閉じる** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/143b0736-9fbb-180d-363a-98757f7a60c6.png)

:::note info
DNS サーバー 役割サービスの導入は、以上で終了です。
:::

## 2. フォワーダーの設定
DNS サーバーが 上位 DNS サーバーを参照するための設定です。
導入直後は、以下の手順で フォワーダー の設定を確認すると、空欄 になっています。
このフォワーダー欄に、元々 OS が参照していた DNS サーバー のアドレスを加えておくことをおススメします。

0. コマンドプロンプト上で、**ipconfig /all** を実行し、元々 OS が参照していた DNS サーバー のアドレスを控えておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3b48adb1-abd6-4305-f112-1c67ec84e555.png)
　<br>
0. サーバーマネージャーの **ツール** から **DNS** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b12c2c35-e0e8-0232-6b77-067174bd4dd0.png)
　<br>
0. サーバー名 を右クリックし **プロパティ** を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4d09bb17-9a04-b386-3bd6-0233b65f48e5.png)
　<br>
0. **フォワーダー** タブを選択する。この時点では、アドレス欄が **空欄** です。
ここで、**編集**　ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0356cfd5-223e-df47-a08a-7c9df3822df5.png)
　<br>
0. 以下の画面がひらくため、**<ここをクリックして IP アドレスまたは DNS 名を追加してください>** と書かれている欄に 先ほど控えた IP アドレス を記入して、赤下線のように表示されたら **OK** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b141670a-050e-34bb-3df5-fe76d09057a0.png)
　<br>
0. 以下のように追加されたことを確認して、**OK** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fdf4e74c-011d-7651-9f8f-d8d814f71db7.png)

:::note info
この設定を行う事で、この DNS サーバー で解決できない名前があった際に、フォワーダー（上位の DNS）に名前解決が転送されます。
:::

:::note warn
このフォワーダーの設定が未構成な場合でも、**ルートヒント** の機能によって、インターネット上の名前解決は行われます。

しかし、DNS サーバーの設置場所によっては、直接インターネットへアクセスできない場合もあるため、元々 サーバーが参照していた DNS を フォワーダーに設定する事が推奨です。

ルートヒントは、以下のように インターネット上のアドレスが直接定義されているので、これらと直接通信出来る必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/669e95c6-b811-06ed-3f80-d0abde7fb5a1.png)
:::

## 3. DNS 参照先を変更する
このタイミングで ipconfig /all で サーバー自身が参照している DNS サーバー のアドレスを確認すると、自分以外を参照したままだったり、未構成のまま です。

この状態で、ゾーンを作って DNS レコードを追加しても、サーバー自身の名前解決には反映されません。名前解決に反映させるためには、DNS クライアント の参照先をサーバー自身に変更する必要があります。

オンプレミス サーバー の場合 ①と、Azure VM の場合 ② で手順が異なるため、それぞれ 説明します。
### ① オンプレミスサーバーの場合
0. DNS サーバー の ネットワークインターフェイス の **プロパティ** を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d75913e0-5b59-343a-7a52-fae53beb07e8.png)
　<br>
0. **インターネット プロトコル バージョン 4 (TCP/IPv4)** の **プロパティ** を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b2cee3a2-acf5-8cdf-e2aa-12234faece6f.png)
　<br>
0. 以下で 優先 DNS サーバー の値を **127.0.0.1** に変更して **OK** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/50eb5610-3188-9b33-4833-fa37aba133ac.png)

:::note info
127.0.0.1 は、localhost を意味していて、名前解決の際に 自分自身を参照するようになります。
:::

合わせて、ネットワーク上の クライアント が参照する DNS サーバー のアドレスを 適宜 変更してください。

### ② Azure VM の場合
Azure の場合は、オンプレミスのように NIC のプロパティを変更することは、推奨されていません。そのため、同様のことを実現するために Azure Portal から設定を変更します。

0. 仮想マシン の 左ペインにある **ネットワーク設定** を開きます。
緑枠 の箇所の **プライベート IP アドレス** を控えておきます。
赤枠 の 仮想ネットワーク名 の箇所をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/38978324-a3a4-b344-0970-7d57842eef14.png)
　<br>
0. 仮想ネットワーク 画面の左ペインで DNS サーバー を選び、**カスタム** を選択後、以下の値を入力後に **保存** を押します。
１行目には、先ほど控えた **プライベート IP アドレス**（緑下線）を転記します。
２行目には、任意となりますが 私のおススメ設定として、**168.63.129.16**（赤下線）を記入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0ddb54b1-ddd9-9a28-a56f-169a34ad9bfb.png)
　<br>
0. 以下の通知が表示されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a3ae83c4-4574-3f0f-8865-441fb50621e6.png)
　<br>
0. 仮想マシン内の コマンドプロンプトを開き、**ipconfig /renew** を実行します。
（実行前）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3b48adb1-abd6-4305-f112-1c67ec84e555.png)
（実行後）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5dee629d-44a3-5373-7b43-ac47cc0c89df.png)

:::note info
この設定を行うと、仮想ネットワーク 上の 仮想マシン すべての DNS サーバー の値が変更されます。つまり、同一ネットワーク上のクライアントは、今回構築した DNS サーバーを参照するようになります。
:::

:::note warn
**２行目に "168.63.129.16" を設定した理由**
このアドレスは、**Azure 既定の DNS** と呼ばれていて、固定の IP アドレス です。
Azure 上の仮想マシンは、すべて このアドレスを使うように構成されていて、インターネット上の名前解決を行っています。

２行目の構成を設定しなかった場合は、クライアントは 10.199.0.8 のみを DNS として認識するため、DNS サーバーの 仮想マシン を停止している際に名前解決が行えなくなります。

これが、結構なハマりどころになるので、２行目を設定しておくことで、10.199.0.8 が使えなかった際でも インターネット上の名前解決を利用できるようになります。
:::

## 4. 確認ポイント
### 4-1. DNS キャッシュ の表示
この状態で、クライアントが 今回構築した DNS サーバー を名前解決で参照すると、キャッシュ に記録されます。これを 目視で確認する事ができます。

0. DNS マネージャー の **表示** メニューから **詳細設定** を選択して、チェックが入った状態にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5aeb7586-d6a3-bf77-d2d2-90b8ca20b892.png)
　<br>
0. 以下のように **キャッシュされた参照** が表示されるようになり、DNS 参照されて キャッシュに保存された DNS レコードを見る事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/03eb901b-90b9-8111-be33-495379f4caea.png)

### 4-2. サービスの状態
0. 検索窓に **サービス** と入力して **サービス** の管理ウィンドウを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/62478135-b357-86da-87b7-802623588aa0.png)
　<br>
0. 一覧の中に **DNS Server** があるはずです。これが DNS の機能を司どっています。
その１つ上段に DNS Client がありますが、これは OS の標準機能で搭載されており、今回の導入によるものではありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/26c72d22-0e8f-c47a-8a26-a2e035e77603.png)
　<br>
0. ダブルクリックして開くと、以下の画面が表示されます。
サービス名は、**DNS** になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/db4c43f9-2a39-04ec-f2ec-2fa0f5039b83.png)

:::note info
上記の画面で DNS のサービスを「停止」「開始」させた際のイベントログは？
- **サービス "停止" 時のイベントログ**
**ソース：DNS-Server-Service**（イベント ID：3）
DNS サーバーがシャットダウンされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/dd6e2b7e-d0c6-9f7c-bd71-c0b9448f7cce.png)

- **サービス "開始" 時のイベントログ**
**ソース：DNS-Server-Service**（イベント ID：2）
DNS サーバーが起動されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/dca61ad0-6db6-6d33-d152-fe5a8d892ea3.png)
:::

### 4-3. DNS サーバー 関連の イベントログ メッセージ一覧
|ソース| ID |内容|
|:-:|:-:|:-:|
|DNS<br>Server| 2 |DNS サーバーが起動されました。|   |
|DNS<br>Server| 3 |DNS サーバーがシャットダウンされました。|   |
|システム|7036|DNS Server サービスは 停止 状態に移行しました。<br>DNS Server サービスは 実行中 状態に移行しました。|   |
|アプリケ<br>ーション|407<br>408|[DNS サーバーに対してクエリを実行できない](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/events-407-408-in-dns-server-event-log "イベント 407 と 408 が DNS サーバー イベント ログに報告される)")
|DNS<br>Server|4000<br>4007|[DNS ゾーンが DNS コンソールに読み込めない](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/dns-zones-do-not-load-event-4000-4007 "DNS ゾーンが DNS コンソールに読み込まれていないときにイベント ID 4000 と 4007 がログに記録される)")
|DNS<br>Server|4004<br>4017|[LDAP から Active Directory への DNS 更新がタイムアウトした](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/event-4016-4004-dns-updates-time-out "DNS がタイムアウトに更新されたときのイベント ID 4016 と 4004)")
|DNS<br>Server|4013|[DNS サーバーが AD 統合 DNS ゾーンを<br>読み込むことができませんでした](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/troubleshoot-dns-event-id-4013 "DNS イベント ID 4013 のトラブルシューティング (DNS サーバーが AD 統合 DNS ゾーンを読み込むことができませんでした)")
|DNS<br>Server|4015|[DNS サーバーで重大なエラーが発生](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/event-4015-dns-server-encounters-critical-error "イベント ID 4015 がログに記録され、DNS サーバーで重大なエラーが発生する")
|DNS<br>Server|7062|[DNS サーバーがそれ自体にアドレス指定された<br>パケットを検出しました](https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/dns-server-logs-event-7062 "DNS サーバー ログ イベント 7062: 'DNS サーバーがそれ自体にアドレス指定されたパケットを検出しました'")

# 参考情報

その他の役割サービスについても 以下に 記事化しています。
ぜひ、併せて参照ください。

https://qiita.com/carol0226/items/0dea96f5ce09b8cf89a6