【AWS】DHCP オプションセットで複数 DNS サーバーを指定した際の優先度を調査してみた。

# 目次
[1.はじめに](https://qiita.com/ig-nishi/items/9714e1cb1bcceb12e9e3#1%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB)
[2.DHCPオプションセットとは](https://qiita.com/ig-nishi/items/9714e1cb1bcceb12e9e3#2dhcp%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%BB%E3%83%83%E3%83%88%E3%81%A8%E3%81%AF
)
[3.参照先DNSサーバーの優先度について](https://qiita.com/ig-nishi/items/9714e1cb1bcceb12e9e3#3%E5%8F%82%E7%85%A7%E5%85%88dns%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E5%84%AA%E5%85%88%E5%BA%A6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
[4.検証内容](https://qiita.com/ig-nishi/items/9714e1cb1bcceb12e9e3#4%E6%A4%9C%E8%A8%BC%E5%86%85%E5%AE%B9)
[5.結論](https://qiita.com/ig-nishi/items/9714e1cb1bcceb12e9e3#5%E7%B5%90%E8%AB%96)

# 1.はじめに

業務で DHCP オプションセットを利用して、VPC 内の EC2 インスタンスが参照する DNS サーバーを設定する機会がありました。
その際に、参照先 DNS サーバーを複数設定した際の優先度について調査を行いましたので備忘として残します。

# 2.DHCPオプションセットとは

簡単に言うと、VPC 内に存在する EC2 インスタンスが参照する DNS サーバーや NTP サーバーを一括で設定できるサービスになります。
オンプレミスでは、各サーバーに1台ずつログインして DNS サーバーなどを設定する必要がありましたが、DHCP オプションセットを利用することで、VPC 内に存在する EC2 インスタンス全てに対して一括で設定が適用されます。

# 3.参照先DNSサーバーの優先度について

ここで本題となります。
DHCP オプションセットで設定した複数の参照先 DNS サーバーの優先度について調査していきたいと思います。 
例えば、Windows OS では、以下の画面で参照先 DNS サーバーと優先度も設定できました。（赤枠）
※ [優先 DNS サーバー]に DNS サーバーの1号機、[代替 DNS サーバー]に DNS サーバーの2号機を設定していたと思います。

![①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/a3636501-840e-46db-9ad6-956d6b29a28f.png)

しかし、DHCP オプションセットの作成画面を確認すると、複数の DNS サーバーを設定する際に優先度を設定ことができなさそうです。。。
※ 複数の DNS サーバーを設定する際は ,（カンマ）で区切ります。

![②.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/145ad839-e8f9-45f4-aa94-773a89f5a284.png)

他社の技術ブログや AWS 公式ドキュメントにも参照先 DNS サーバーの優先度については明記されていませんでした。。。
※以下の公式ドキュメントには DHCP オプションセットを作成する際のパラメーターの説明が記載してありますので、参考程度にリンクを載せておきます。

[DHCP オプションセットの使用 - Amazon Virtual Private Cloud](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/DHCPOptionSet.html)

そのため、実際に検証環境を構築して、DHCP オプションセットで設定した複数の DNS サーバーの優先度について確認してみます。

# 4.検証内容
以下のようなシンプルな構成で検証します。
DHCP オプションセットで 複数の DNS サーバー（8.8.8.8 と 8.8.4.4）を設定した状態で、
EC2（Windows Server 2022）とEC2（RHEL 9.5）から Google.co.jp に対して nslookup を行います。
その際に各 EC2 インスタンスがどちらの DNS サーバーを参照するのかを確認していきます。
※ 上記で設定した 8.8.8.8 と 8.8.4.4 は Google のパブリック DNS になります。

![コウセイ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/217befd2-cddd-41d5-88d8-415d9b68e7d3.png)


### EC2（Windows Server 2022）から Google.co.jp への nslookup ####

パターン①
8.8.8.8 を先に記載するパターン

![③.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/3cf0361d-d19e-4263-a7a1-a917235c98c5.png)

結果①
DNS サーバー（8.8.8.8）が応答しました。

![④.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/538dfa5d-e588-448d-a164-ea89793a591f.png)

パターン②
8.8.4.4 を先に記載するパターン

![⑤.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/3f23f698-a029-4be4-b3d2-eec46879d63f.png)

結果②
DNSサーバー（8.8.4.4）が応答しました。

![⑥.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/d6ed5cf0-65ac-481e-a233-fac4c436901b.png)

### EC2（RHEL 9.5）から Goole.co.jp への nslookup ####

パターン①
8.8.8.8 を先に記載するパターン

![③.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/c8efd19e-86e2-4a73-abaa-37aa00c229be.png)

結果①
DNSサーバー（8.8.8.8）が応答しました。

![⑧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/e34d20a8-660e-4695-8827-2ffb07b14018.png)

パターン②
8.8.4.4 を先に記載するパターン

![⑤.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/8a684cd8-ed79-4bf6-af15-b8a6ef570343.png)

結果②
DNSサーバー（8.8.4.4）が応答しました。

![⑦.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/74d49592-13da-44fa-a8ec-70b8b8f31209.png)

# 5.結論

参照先 DNS サーバーの優先度は記載順によることが分かりました。
（以下の画面で言うと、8.8.4.4 よりも 8.8.8.8 が優先されます。 ）

![③.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091187/f1d7e7be-8d28-4702-b6e1-e9b29e283790.png)

今回は Windows Server 2022 と RHEL 9.5 で参照先 DNS サーバーの優先度について検証しました。
ただし、OS によっては挙動が変わる可能性があるためご注意ください。