はじめに
実務で社内/社外DNSのフォワード設定やゾーンファイルの削除・復元を検証した際、多くの技術的な課題に直面し、案件の進捗が悪く、上司に詰められる日々が続きました(笑)
納期までに間に合いそうになかったため、帰宅後も自宅のDNSサーバーで動作確認や知識整理を行いました。
QiitaにはBINDの情報が多く、Windows Serverの情報が少ないため、今回は自分の検証内容を記事にまとめます。
前提条件
今回の検証を進めるにあたり、以下の環境が必要です。
検証環境
サーバー環境:
VirtualBox上で稼働しているWindows Server 2022を使用
クライアント環境:
VirtualBox上で稼働しているWindows 10端末(評価版)を使用
DNSサーバーの役割:
AD統合DNSを使用し、内部ネットワークの名前解決を行う
使用ミドルウェア:
Windows ServerのDNS機能を採用
ネットワーク:
サーバーとクライアントが同一のローカルネットワーク内に接続されていること
自宅のVirtualBox環境
※検証には実行中の「Windows Server 2022」「Windows 10端末」「AlmaLinux」を使用します。
DNSと名前解決について
DNS(Domain Name System)と名前解決について、私なりに解説します。
DNSとは?
DNS(Domain Name System)は、インターネットやネットワークで使用される 「ドメイン名」(例: www.example.com)と 「IPアドレス」(例: 192.0.2.1)を相互に変換するシステムです。
IPアドレスはコンピュータやサーバーが通信するための住所のようなもので、ドメイン名は人が覚えやすい名前です。
名前解決とは?
名前解決は、「ドメイン名」を「IPアドレス」に変換するプロセスです。
例えば、ブラウザに www.google.com と入力すると、まずそのドメイン名を対応するIPアドレスに変換し、そのIPアドレスに接続します。この変換を行うのがDNSサーバーです。
DNSの仕組み
DNSシステムは階層構造を持っており、ドメイン名の末尾から順に名前解決を行います。
引用画像:https://xtech.nikkei.com/it/article/COLUMN/20060927/249162/zu2_2.jpg
世界中には、様々な種類のDNSサーバーが存在しています。どれも興味深いですね。
ルートDNSサーバー:
インターネットの最上位に位置し、ドメイン名の最初の部分(トップレベルドメイン: .com や .jp)を管理するサーバーへ接続します。
TLD(トップレベルドメイン)DNSサーバー:
.com や .jp などを管理し、その下位のドメイン(例: example.com)のDNSサーバーの情報を持っています。
権威DNSサーバー:
各ドメイン(例: example.com)の最終的なIPアドレスを管理し、ドメイン名とIPアドレスを結びつける役割を果たします。
DNSと名前解決の流れ
①から⑥の順番で名前解決が行われます。
引用画像:https://www.no1web.jp/blog/15098/
ざっくりと簡潔にまとめると以下のようになります。
キャッシュの確認: ローカルPCやルーターが、以前に同じドメインにアクセスした場合、キャッシュに保存されているかを確認します。
↓
ローカルDNSサーバーへ問い合わせ: キャッシュがない場合、PCは設定されたDNSサーバー(通常、ISPや社内のDNSサーバー)に問い合わせます。
↓
名前解決のリクエスト: DNSサーバーは、ドメイン名のIPアドレスを調べるために、ルートDNSサーバーや他のDNSサーバーに問い合わせを行います。
↓
結果の返送: DNSサーバーが最終的なIPアドレスをPCに返し、その後接続が行われます。
構築/検証の流れ
DNSサーバーの構築、Windows 10端末でのセットアップ、および nslookup コマンドを使った検証の流れを2つのステップで説明します。
ステップ1:DNSサーバーの構築
ステップ2:Windows 10端末でのセットアップと検証
以下の記事でも紹介していますが、ADを構成する際にはDNSが動的にインストールされるため、過去の記事も合わせてご参照ください。
Windows Server 2022で自宅ネットワークにADサーバーを構築し、Windows 10端末をドメインに参加させる方法
ステップ1:DNSサーバーの構築
まず、DNSサーバーを構築するためにWindows Serverを使用します。
サーバーの準備
・Windows Server 2019/2022(DNSロールをインストール)
・Static IPアドレス(サーバーに固定IPを設定)
DNSロールのインストール
・サーバーマネージャーを開く。
・[役割と機能の追加] をクリックし、DNSサーバーのロールを追加します。
・ウィザードに従い、DNSサーバーをインストールします。
・インストールが完了したら、サーバーを再起動します。
前方参照ゾーンの設定
・DNSマネージャーを開きます。
・前方参照ゾーンを右クリックし、新しいゾーンを選択。
・ウィザードに従い、次のように設定します:
ゾーンの種類: プライマリゾーン
DNS名: 例として honda.co.jp など自分の好きなゾーン名を設定します。
ゾーンファイル: 自動生成。
・設定が完了したら、ゾーン内に新しいホスト(A)レコードを作成します。
たとえば、サーバーの名前を server1.example.local にし、そのIPアドレスを設定します。
私の環境では、「honda.co.jp」というゾーン内に「honda」というAレコードを「1.1.1.1」で登録しました。
逆引き参照ゾーンの設定は任意なので、ここでは設定せずに次の検証に進みます。
ステップ2:Windows 10端末でのセットアップと検証
Windows 10端末でのDNS設定
端末側にもDNSの設定を明示的に行います。
・Windows 10の設定を開きます。
・[ネットワークとインターネット] に移動し、現在使用しているネットワーク(Wi-Fiまたはイーサネット)を選択。
・[IP設定の編集] をクリックし、DNSサーバーのアドレスを手動で指定します。
→ここでは、先ほど構築したDNSサーバーのIPアドレス(例: 192.168.1.7)を入力します。
私の環境では、優先DNSにDNSサーバーのIPアドレスである「192.168.1.7」を設定しています。
nslookupコマンドによる検証①
コマンドプロンプトを開き、以下のコマンドを実行してDNSサーバーが正しく動作しているか確認します。
nslookup honda.co.jp(ご自身のゾーン名に置き換えてください)
正常に設定されている場合、honda.co.jp のIPアドレス(例: 192.168.1.7)が表示されます。
nslookupコマンドによる検証②
同様に、コマンドプロンプトを開き、以下のコマンドを実行して登録したレコードを名前解決できるか確認します。
nslookup honda(追加したAレコードに置き換えてください)
正常に設定されている場合、honda のAレコード(例: 1.1.1.1)が表示されます。
想定通り、構築したDNSサーバーから名前解決の応答があることを確認できました。
実務だと、パケットキャプチャなどを取得してWiresharkで通信の流れを解析した苦い思い出があります(笑)
まとめ
今回の検証では、DNSサーバーの構築とWindows 10端末でのDNS設定が成功し、nslookupコマンドによる名前解決が正しく動作することを確認しました。
honda.co.jp ゾーンとAレコード「honda」のIPアドレスが正確に返され、DNSサーバーの設定が正常であることが証明されましたので、今回の構築は成功と言えそうです。
DNS構築や名前解決の動作検証もばっちりですね!
おまけ
自宅のプライベートPC(Windows/Mac)には、意図的にGoogleの「8.8.8.8(優先)」「8.8.4.4(代替)」パブリックDNSを設定しています。
心なしか、インターネットアクセスが少しだけ速くなった気がしますが、DNSの設定を無闇に変更するとインターネットに接続できなくなる場合があるので、気をつけてくださいね!
次回以降は、より詳細なAD統合DNSの設定や、さらに高度なフォワーダーの設定について触れていきたいと思います。
参考記事