💪

AWS上でRoute53を使用せず、DNSサーバ立ててみた

2024/06/05に公開

今回は以下検証内容を実施した際の備忘録となります。

検証内容

ある製品の導入検討時に、異なるAWSアカウント所有者同士において双方向通信を行い、製品の通信が成り立つのかを検証したく実施しました。
前提は以下になります。

  • ハイブリッドクラウド環境想定
  • 本格導入時は自前のDNSサーバを使用したい
  • 双方の環境の「名前解決」・「ルーティング」に影響を与えないNWを用意したい
  • IGW経路なし
  • 異なるAWSアカウント同士の通信はVPCエンドポイント経由としたい

まずDNSとは

以下サイトがわかりやすくRoute53の件も合わせてチェックできたので、参考にさせて頂きました。

【初心者向け】無料ドメインを使ってAmazon Route 53で実装しながら理解するDNS

これから備忘として記載している内容

以下の内容を記載している記事になります。

  • AWS上で、AWSサービス(Route53)を使用せずにDNSサーバを構築する手順

あくまで私自身検証したかった内容がRoute53を使用しない前提であり、基本はAWSサービスであるRoute53を使用することがスタンダードだと考えております。

  • DNSサーバ内(Windowsサーバ内)のレコード設定(Aレコード)

AWS環境上での準備

以下AWSリソース群を準備しました。

  • VPC(設定値:10.0.0.0/24)
  • EC2(Windowsサーバ:DNS設定用:10.0.0.10)
  • EC2(Linuxサーバ:確認用:10.0.0.28)
  • IGW
  • VPCエンドポイント(検証なため、紐づけ先はどのサービスでも構いません)

実施手順

以下の手順で行いました。
※AWS環境構築については省略させて頂きます
※下表の「サーバ内」は、「Windowsサーバ」のことを指しています

No 操作対象 実施行為
1 サーバ内 IPアドレス固定
2 サーバ内 DNSツールインストール
3 サーバ内 Aレコード登録
4 サーバ内 IPアドレス固定(変更)
5 AWS側 DHCP オプションセットを変更

DNSサーバ構築にあたり、参考にさせて頂いたサイトは以下2つになります。

実施結果

検証に移る前に以下の設定をしておいてください!

  • Windowsサーバのホスト名を適当な値でセット(私は、「TEST88」としております)
  • Windowsサーバの「Windows Defender」の無効化(Ping確認用に!)

事前確認

  • VPCに紐づくDHCP オプションセットの確認
    まずは、AWS側でデフォルト用意されているDNS「Amazon Provided DNS」が設定されていることを確認します。

  • 疎通確認用サーバからホスト名解決が行えないことを確認

No1:IPアドレス固定

DNSツールをインストールするための条件であるため、Windowサーバにログインし、IPアドレスの固定化を行います。

コマンドプロンプトを開き、以下を打って設定値を確認します。

ipconfig /all

ちゃんとAWSの設定が入っていることが確認できましたね!
次は、IPアドレスの固定化を実際に行っていきましょう。

以下は右クリックで開くこと!

IPコンフィグ情報を参考に以下のように入力!

入力完了後、「OK」ボタンを押下し、設定完了。
これにて、IPアドレスが固定化完了しました。
再度コマンドを実行し、設定ミスがないか確認しておきましょう!

No2:DNSツールインストール

次は、Windowsが提供しているDNSツールをインストールしていきます。

まずは、サーバマネージャを開きましょう!

以下は何もせずに「次へ」を押下。

ここも何もせずに「次へ」を押下。。

ここも何もせずに「次へ」を押下。。。

「DNSサーバー」を探してチェック!

「機能の追加」ボタンを押下

この画面に戻ってきたら「次へ」ボタンを押下

ここも何も考えずに「次へ」が連続

やっとインストールです!

完了したら「閉じる」ボタン押下で終了

お疲れ様でした、、、一旦この辺りで一息coffeeでもどうでしょうか!
一息つけたらいよいよ設定に入っていきましょう!

No3:Aレコード登録

休憩はできましたでしょうか??
引き続き頑張っていきましょう!

自分自身の名前解決が行えるようにAレコードを登録していきます。
Aレコードを登録するゾーンの作成から行っていきましょう!

まずは、「サーバーマネージャー」を開きましょう!

「DNS」をクリック!

すると以下の画面が立ち上がります
赤枠箇所をクリックしてください!

DNSの話をしているとよく聞く名前がたくさん出てきました!
赤枠箇所を右クリック!

「新しいゾーン」をクリック

さぁどんどん「次へ」を押下していきます

「ゾーン名」の中に好きな文字列を入れてください!
私は「test」としました!

これにてゾーンの設定は完了です。

次はゾーンにAレコード登録していきます。
先ほど作成したゾーンの上で右クリックをしてください。
その後、赤枠箇所をクリック

あとは登録したい名前・解決後に返答するIPアドレスを設定して「ホストの追加」ボタンを押下

これにて完了です!

No4:IPアドレス固定(変更)

「No1」段階では、一旦AWS側のDNSサーバを参照するようにIPアドレスを設定しましたが、このタイミングにて、自分自身を参照先とするように設定していきます。

~No1箇所は割愛~

以下の画面まで行き、「プロパティ」を押下

以下のように設定し、「OK」を押下

次に忘れがちな対処を行います。
赤枠箇所を押下

赤枠の2箇所を削除し、上にあがって選択肢変更!

以下の画面の状態になったら「OK」ボタンを押下

これにてサーバ側の作業は完了になります。

No5:DHCP オプションセットを変更

最後にAWS上で設定しているDHCPの向き先をサーバ側が参照されるように設定しなおします。
AWSマネジメントコンソールを開いていきましょう。

VPCの画面より以下箇所を押下

赤枠箇所を押下

補足に倣って入力

その他は、特に入力せずに作成(必要あれば、その他の設定項目を埋めてください)

作成完了です!

次は、設定に移っていきましょう!
VPC作成画面の右上、「アクション」のプルダウンを開き、「VPCの設定を編集」ボタンを押下しましょう

赤枠箇所を先ほど作成した設定へ変更し、「保存」ボタンを押下

これで設定作業はすべて完了です!お疲れ様でした!

最終確認

最後に確認作業に入ります。

Linuxサーバ側の参照先DNSサーバの設定変更をしておきましょう
以下の設定ファイルをWindowsサーバのIPアドレスに設定しなおしてください

/etc/resolv.conf
  • まずはLinuxサーバより、ホスト名にてpingコマンドを発行!

無事飛んでよかったです、、、、

  • あとは名前解決も確認!

無事に解決!
これにて作成したDNSサーバが使用できることを確認できました!

追加で検証した内容

追加で以下のリソースを構築して、応用編も行ってみました。
※本当は本編に記載しようとしましたが、力尽きたので、、、、簡単に記載しておきます。

構築タイミングは本編対応後でも可能な実装になります。
仮に上記本編中に行いたければ、「No3」のタイミングで一緒に実装すれば問題ありません。

今回追加で検証した内容は、「EC2(サーバ)群だけではなく、各AWSリソースの名前解決も行えること」になります。ハイブリット環境にてユーザ側で用意しているDNSサーバでは、AWSリソースの名前解決ができない状況があるかと思います。その点を考慮した検証を行いました。

構築順序は以下の通り。

  1. Route 53 Resolver エンドポイント作成
  2. 適当なAWSサービスを紐づけたVPCエンドポイントを作成
  3. DNSサーバ内にて、レコード登録(条件付きフォワード)

参考にしたサイトは以下の通り。
・VPCエンドポイント作成時

[アップデート] S3 インターフェースエンドポイントでプライベート DNS 名を使用できるようになりました

・Route 53 Resolver エンドポイント作成時

【初心者】Amazon Route 53 Resolver インバウンド/アウトバウンドエンドポイント を使ってみる

結果、問題なく名前解決が行えました。
※まったり続きをどこかで記載できればと思います。。。。

最後に

今回の検証にて、DNSサーバを自身で初めて構築することができました!かなり感動しています!!

読んでくださった方、長かったかもしれませんが、ありがとうございました。
引き続きまったり勉強していきます。

Discussion