DNSサーバーの構築と運用
DNSの基本と役割
DNS(Domain Name System)は、ホスト名とIPアドレスを相互に変換する名前解決サービスです。Active Directory環境ではDNSが必須インフラであり、ドメインコントローラーの検出、Kerberos認証、サービスロケーションなど、すべてDNSに依存しています。DNSが停止するとAD環境全体が機能しなくなるため、その構築と運用は最重要事項です。
DNSレコードの種類
| レコード | 正式名称 | 用途 | 設定例 |
|---|---|---|---|
| A | Address | ホスト名→IPv4アドレスの変換 | server01 → 192.168.1.10 |
| AAAA | Quad-A | ホスト名→IPv6アドレスの変換 | server01 → 2001:db8::10 |
| CNAME | Canonical Name | 別名(エイリアス)の定義 | mail → exchange01.example.co.jp |
| MX | Mail Exchanger | メールサーバーの指定 | example.co.jp → mail.example.co.jp (優先度10) |
| TXT | Text | テキスト情報(SPF、DKIM、DMARC等) | v=spf1 include:spf.protection.outlook.com -all |
| SRV | Service | サービスの場所を示す(ADで多用) | _ldap._tcp → dc01.example.co.jp:389 |
| PTR | Pointer | IPアドレス→ホスト名の逆引き | 192.168.1.10 → server01.example.co.jp |
| NS | Name Server | ゾーンの権威DNSサーバーを指定 | example.co.jp → dc01.example.co.jp |
| SOA | Start of Authority | ゾーンの管理情報(シリアル番号、TTL等) | 自動管理される |
ポイント:Active Directory環境ではSRVレコードが特に重要です。クライアントPCはSRVレコードを検索してドメインコントローラーを発見します。SRVレコードが壊れるとドメイン参加やログオンに失敗するため、DNS管理は慎重に行いましょう。
正引きゾーンと逆引きゾーン
| ゾーン | 機能 | 必要性 |
|---|---|---|
| 正引きゾーン | ホスト名→IPアドレスの変換 | 必須。ADドメイン名と一致するゾーンを作成 |
| 逆引きゾーン | IPアドレス→ホスト名の変換 | 推奨。メール送受信やログ解析で必要 |
逆引きゾーンは「10.168.192.in-addr.arpa」のようにIPアドレスを逆順にした名前で作成します。
Active Directory統合DNS
Windows Serverでは、DNSゾーンデータをActive Directoryデータベースに格納するAD統合DNSが利用できます。
- セキュアな動的更新:ドメインメンバーのみがDNSレコードを自動更新可能
- マルチマスターレプリケーション:すべてのDCがDNSゾーンを更新でき、自動的にレプリケート
- 冗長性:ゾーンデータがADレプリケーションで全DCに複製されるため、単一障害点がない
- ACLによるアクセス制御:ADの権限でDNSレコードの更新権限を制御
⚠️ 注意
AD統合DNSを使用する場合、DNSサーバーの役割はドメインコントローラーにインストールする必要があります。メンバーサーバーにはAD統合ゾーンを配置できません。ドメインコントローラーが2台あれば、両方にDNSサーバーの役割を入れてDNSの冗長化も同時に実現しましょう。
条件付き転送(Conditional Forwarder)
特定のドメイン名の問い合わせを指定したDNSサーバーに転送する機能です。
📋 具体例
利用シーン:
・自社ADドメイン(ad.example.co.jp)の問い合わせは自社DCが応答
・取引先のドメイン(partner.co.jp)の問い合わせは取引先のDNS(10.0.0.53)に転送
・それ以外のインターネット上のドメインは外部DNS(ISPやGoogle 8.8.8.8)にフォワーダー転送
設定方法(PowerShell):
Add-DnsServerConditionalForwarderZone -Name "partner.co.jp" -MasterServers 10.0.0.53
DNS動的更新
Windowsクライアントは起動時やIPアドレス変更時に、自身のDNSレコードを自動的に更新(動的更新)します。
| 更新モード | 説明 | 推奨 |
|---|---|---|
| なし | 動的更新を受け付けない | インターネット公開ゾーンには推奨 |
| 非セキュアおよびセキュア | 誰でもレコード更新可能 | 非推奨(スプーフィングのリスク) |
| セキュアのみ | AD認証されたクライアントのみ更新可能 | AD統合DNSで強く推奨 |
DNSのトラブルシューティング
| コマンド | 説明 | 使用例 |
|---|---|---|
| nslookup | DNSクエリの手動実行 | nslookup server01.ad.example.co.jp |
| Resolve-DnsName | PowerShellのDNS問い合わせコマンドレット | Resolve-DnsName -Name server01 -Type A |
| ipconfig /displaydns | クライアントのDNSキャッシュを表示 | キャッシュされた古い情報の確認 |
| ipconfig /flushdns | クライアントのDNSキャッシュをクリア | レコード変更後のキャッシュ問題の解消 |
| Clear-DnsClientCache | PowerShell版のDNSキャッシュクリア | スクリプトでの利用 |
| dcdiag /test:dns | DCのDNS構成を包括的にテスト | AD環境のDNS問題の診断 |
ひとり情シスの視点:DNS問題は「ネットワークが遅い」「サーバーに接続できない」など広範な障害として現れます。まずnslookupで名前解決ができるか確認するクセをつけましょう。DNSが正常なら別の原因を調査する、という切り分けが迅速なトラブル対応の第一歩です。
✅ 完了済み