「named.conf」の波括弧を閉じる日々は、もう終わりです。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、DHCPフェイルオーバーとIPAMによるIPアドレス管理を学びました。
ネットワークの足回りが固まったところで、今回はその上で動く最重要サービス、「DNS」のお話です。
Linuxエンジニアの皆さん、BINDの設定ファイル(ゾーンファイル)の管理、辛くないですか?
「シリアル番号を上げ忘れて反映されない」「構文エラーでサービスが起動しない」「セカンダリサーバーへの転送設定が面倒」……。
Windows ServerのDNSを使えば、これらの苦労の9割は消滅します。
先生、DNSですか。
ADを構築した時に勝手に入ってたので、そのまま触らずに使ってます。
でも最近、上司から「社内からアクセスした時だけプライベートIPを返すようにしろ(スプリットブレインDNS)」って言われて困ってるんです。
LinuxのBINDなら “View” 機能でやりますけど、Windowsでそんな高度なことできるんですか?
GUIの設定画面を見てもそれらしい項目がないんですけど……。
コウ君、いい質問ね。
実はWindows Server 2016から、BINDのViewに相当する「DNSポリシー」という機能が追加されたの。
でもこれ、GUIには存在しなくて、PowerShellからしか設定できない「隠し機能」みたいなものなのよ。
ADとの連携だけじゃなく、こういうマニアックな機能も使いこなせてこそ上級者よ。
今回もウィンドウズ先生に、DNSの深淵を案内してもらいましょう!
はい、ウィンドウズ先生です。
Windows DNSの最大の強みは「Active Directory統合ゾーン」です。
ゾーン転送の設定を一切せずとも、ADの複製メカニズムに乗っかって、全拠点のDNSサーバーにレコードが自動同期されます。
今回は、このAD統合の仕組みから、PowerShellを使った高度なトラフィック制御(スプリットブレイン)、そしてセキュリティの要であるDNSSECまで、プロのDNS運用術を伝授します。
本記事では、AD統合ゾーンの仕組み、DNSポリシーによるスプリットブレインDNSの構築、BINDサーバーとの連携(ゾーン転送)、そしてDNSSECの導入手順までを徹底解説します。
🟥 Windows Server【上級】講座(全12回)カリキュラム
現在地:【第3回】DNSの深淵。スプリットブレインDNS、ゾーン転送、DNSSECの構築
- 【第1回】Pacemakerと何が違う?Windowsクラスタリング(WSFC)の仕組みと構築手順
- 【第2回】ネットワークサービスの要。DHCP冗長化とIPAMによるIPアドレス管理
- 【第3回】DNSの深淵。スプリットブレインDNS、ゾーン転送、DNSSECの構築
- 【第4回】証明書基盤 (AD CS)。OpenSSL使いが知るべきエンタープライズPKI
- 【第5回】リモートアクセスの要塞。RDS (Remote Desktop Services) とVDI入門
- 【第6回】Infrastructure as Code (IaC)。PowerShell DSCによる構成管理の自動化
- 【第7回】Software Defined Storage。記憶域スペースダイレクト (S2D) の構築
- 【第8回】バックアップと災害復旧。Windows Server BackupとVSSの深層
- 【第9回】ID連携の架け橋。AD FS (Federation Services) とSAML/OIDC連携
- 【第10回】セキュリティの硬化。AppLockerと監査ログによる要塞化
- 【第11回】ハイブリッドクラウド管理。Azure Arcによるオンプレミスサーバーのクラウド化
- 【第12回】マイグレーション戦略。FSMO移行、OSインプレースアップグレードの極意
※入門編(全8回)の復習はこちら:Windows Server入門講座 アーカイブ
目次
第1章:Active Directory統合ゾーン。テキストファイルからの脱却
通常のDNSサーバー(BINDなど)は、ゾーン情報をテキストファイル(ゾーンファイル)で管理します。
プライマリサーバーでファイルを更新し、セカンダリサーバーへ「ゾーン転送(AXFR/IXFR)」を行って同期します。
AD統合ゾーンの仕組み
Windows DNSのデフォルトである「AD統合ゾーン」では、DNSレコードはActive Directoryデータベースのオブジェクトとして格納されます。
メリット:
- マルチマスター複製: どのDNSサーバー(DC)でレコードを追加しても、ADの複製機能によって全サーバーに同期されます。「プライマリ/セカンダリ」という概念がなくなり、SPOF(単一障害点)が解消します。
- セキュアな動的更新: 「ドメインに参加しているPCだけが、自分のAレコードを自動登録できる」という制限が可能です。勝手なPCがDNSを書き換えるのを防げます。
- シリアル番号管理不要: ファイルではないため、SOAレコードのシリアル番号を手動でインクリメントする必要がありません。
💡 プロの注意点:統合ゾーンの保存場所
AD統合ゾーンの保存場所には以下の2種類があります。
1. ForestDnsZones: フォレスト内の全DCに複製される(範囲が広い)。
2. DomainDnsZones: ドメイン内のDCのみに複製される(通常はこちら)。
_msdcs ゾーンなどはフォレスト全体で共有する必要があるため、自動的にForestDnsZonesに配置されます。
第2章:PowerShellで実装する「スプリットブレインDNS」
「社内LANからのアクセスはローカルIP(192.168.x.x)を返し、社外からのアクセスはグローバルIP(203.0.113.x)を返す」。
これを実現するのがスプリットブレインDNSです。
BINDでは view 構文を使いますが、Windowsでは「DNSポリシー」を使います。
DNSポリシーの構成要素
GUIはありません。すべてPowerShellで設定します。
- クライアントサブネット: アクセス元のIP範囲を定義。
- ゾーンスコープ: ゾーンの「別バージョン(View)」。
- DNSポリシー: 「誰が(サブネット)」「何をしたら(クエリ)」「どこを見る(スコープ)」というルール。
構築手順
例:www.example.com に対して、社内(192.168.1.0/24)からは 192.168.1.100、それ以外からは 203.0.113.100 を返す設定。
1. クライアントサブネットの定義
Add-DnsServerClientSubnet -Name "InternalSubnet" -IPv4Subnet "192.168.1.0/24"
2. ゾーンスコープの作成(社内用)
# "InternalScope" という名前のスコープを作成 Add-DnsServerZoneScope -ZoneName "example.com" -Name "InternalScope"
3. レコードの登録
# デフォルトスコープ(社外用)にグローバルIPを登録 Add-DnsServerResourceRecordA -ZoneName "example.com" -Name "www" -IPv4Address "203.0.113.100" # 社内用スコープにローカルIPを登録 Add-DnsServerResourceRecordA -ZoneName "example.com" -Name "www" -IPv4Address "192.168.1.100" -ZoneScope "InternalScope"
4. ポリシーの適用
# "InternalSubnet" からのアクセスは "InternalScope" を参照せよ、というルール
Add-DnsServerQueryResolutionPolicy -Name "SplitBrainPolicy" -ZoneName "example.com" `
-ClientSubnet "EQ,InternalSubnet" -ZoneScope "InternalScope,1"
これで、アクセス元に応じて異なるIPが返るようになります。Resolve-DnsName コマンドなどでテストしてみましょう。
第3章:異種混合環境。WindowsとBINDのゾーン転送
すべてのDNSサーバーをWindowsに置き換えられるとは限りません。
「既存のBINDサーバーをスレーブ(セカンダリ)として残したい」というケースは多々あります。
ゾーン転送の設定(Windows側)
AD統合ゾーンであっても、外部へのゾーン転送は可能です。
- DNSマネージャーを開き、対象のゾーンを右クリック → 「プロパティ」。
- 「ゾーン転送」タブを開く。
- 「ゾーン転送を許可する」にチェックを入れ、「次のサーバーのみ」を選択。
- BINDサーバーのIPアドレスを追加。
注意: セキュリティのため、「すべてのサーバー」への転送は絶対に許可しないでください。ゾーン情報が丸裸になります。
通知(Notify)の設定
レコードが更新された時に、即座にスレーブに「更新したよ!」と知らせる機能です。
「ゾーン転送」タブの「通知」ボタンをクリックし、BINDサーバーのIPを追加します。
BIND側の設定(named.conf)
Linux側では、通常のセカンダリ設定を行います。
zone "corp.example.com" {
type slave;
masters { 192.168.1.10; }; # Windows DNSのIP
file "slaves/corp.example.com.db";
};
これで、Windowsでレコードを追加すると、即座にBIND側にも同期されるハイブリッド環境が完成します。
第4章:DNSSECの導入。改ざん検知の実装
DNSキャッシュポイズニング攻撃を防ぐための技術、DNSSEC。
BINDでの設定は非常に複雑(鍵生成、署名、ロールオーバー……)ですが、Windows Serverなら数クリック、または数行のコマンドで導入できます。
構築手順(GUI)
- DNSマネージャーでゾーンを右クリック → 「DNSSEC」 → 「ゾーンの署名」。
- ウィザードに従って進めます。「既定の設定を使用してゾーンに署名する」を選べば、推奨パラメータ(SHA-256など)で自動設定されます。
- 完了すると、RRSIGやDNSKEYなどのレコードが自動生成されます。
トラストアンカーの配布
AD環境であれば、ドメイン参加している全PCに対して、トラストアンカー(署名鍵の信頼情報)を自動配布できます。
グループポリシーで「名前解決ポリシー テーブル (NRPT)」を設定し、「DNSSECを検証せよ」と指示するだけです。
💡 プロの運用:鍵のロールオーバー
DNSSECで一番大変なのが、定期的な鍵の更新(ロールオーバー)です。
Windows DNSは、このロールオーバーも完全自動化されています(RFC 5011準拠)。
一度設定すれば、管理者が鍵を生成し直す必要はありません。これがWindowsを選ぶ大きな理由の一つです。
第5章:実践!PowerShellでDNSレコード大量登録
移行プロジェクトなどで、Excelリストにある数百件のAレコードを登録したい場合、手入力はあり得ません。
PowerShellで一括登録しましょう。
CSVからのインポートスクリプト
records.csv (Hostname, IP) を用意します。
Hostname,IP web01,192.168.1.101 web02,192.168.1.102 db01,192.168.1.201
登録スクリプト:
$ZoneName = "corp.example.com"
Import-Csv "C:\work\records.csv" | ForEach-Object {
Add-DnsServerResourceRecordA -ZoneName $ZoneName `
-Name $_.Hostname -IPv4Address $_.IP -CreatePtr
}
-CreatePtr オプションを付けるだけで、逆引きレコード(PTR)も同時に作成してくれます。
これもBINDにはない便利な機能です。
条件付きフォワーダーの設定
「特定のドメイン(例: partner.local)だけは、提携先のDNSサーバーに問い合わせたい」という場合の設定です。
Add-DnsServerConditionalForwarderZone -Name "partner.local" `
-MasterServers "10.20.30.40" -ReplicationScope "Forest"
-ReplicationScope "Forest" を指定することで、フォレスト内の全DNSサーバーにこの設定が同期されます。
第6章:トラブルシューティングとキャッシュの罠
「DNS設定を変えたのに反映されない!」というトラブルは日常茶飯事です。
Windowsには「サーバー側のキャッシュ」と「クライアント側のキャッシュ」の2つがあることを意識してください。
1. サーバーキャッシュのクリア
DNSサーバー自体も、フォワーダーなどから得た結果をキャッシュしています。
Clear-DnsServerCache
または、DNSマネージャーでサーバー名を右クリック → 「キャッシュのクリア」。
2. クライアントキャッシュのクリア
PC側のリゾルバキャッシュです。
ipconfig /flushdns
3. nslookup と Resolve-DnsName の違い
Linuxエンジニアは dig を使いたいところですが、Windowsには標準では入っていません。
古き良き nslookup も使えますが、PowerShellの Resolve-DnsName の方が高機能で、DNSSECの検証なども可能です。
# DNSSECの署名検証を含めて問い合わせ Resolve-DnsName -Name "www.example.com" -DnssecOk
まとめ:DNSを制する者はADを制す
お疲れ様でした!
上級編第3回は、Windows DNSの高度な機能について解説しました。
今回の重要ポイント:
- AD統合ゾーンを使えば、ゾーン転送設定なしで全拠点に同期される。
- DNSポリシーを使えば、GUIなしでスプリットブレインDNSが作れる。
- BINDへのゾーン転送も可能。ただしセキュリティ(許可リスト)に注意。
- DNSSECはWindowsなら「鍵の更新」まで完全自動化できる。
DNSは地味ですが、ここが崩れるとADもファイルサーバーもメールも全滅します。
「たかが名前解決」と侮らず、冗長化とセキュリティをしっかり設計してくださいね。
特にDNSポリシーは、クラウド移行過渡期の複雑なルーティング要件を解決する切り札になりますよ。
さて、インフラの基礎(クラスタ、ネットワーク)が整いました。
次は、セキュリティの中核となる「PKI(公開鍵基盤)」のお話です。
社内システムのHTTPS化、Wi-Fiの証明書認証、VPN接続……これらを支える「オレオレ認証局」ではない、本格的な認証局(CA)を構築します。
次回、第4回は「証明書基盤 (AD CS)。OpenSSL使いが知るべきエンタープライズPKI」です。
OpenSSLコマンドでチマチマCSRを作っていた日々とはおさらば。
ADと連携した証明書の自動配布(オートエンロールメント)の世界へご招待します。お楽しみに!
▼ DNS環境を構築して実験しよう ▼
スプリットブレインを試す
「おすすめVPS」
インフラ設計の要になる
「ITエンジニア転職」


コメント