Windows Server 2016のDHCPv6 Option23でRA競合を回避しADのIPv6 DNSを配布する方法

IPv6環境でActive Directory(AD)のローカルDNSを自動配布したいのに、Router Advertisement(RA)を有効にするとISP側DNSが優先され、無効にするとデフォルトゲートウェイが消えて通信できない――。DHCPv6とRAの役割分担を整理し、Windows Server 2016で確実に解決する手順をまとめます。

目次

起きている現象を「競合」として言語化する

まず大前提として、IPv6の自動設定はRA(ルーター広告)とDHCPv6の両方が関わります。ここを曖昧にしたまま設定を触ると、今回のように「どちらかを止めると別の要素が壊れる」状態になりがちです。

質問の状況を、クライアント目線で整理すると次の通りです。

状態クライアントに起きること結果
RAを無効DHCPv6でアドレス等は取れても、デフォルトルート(ゲートウェイ)が入らない/他情報も不完全になりやすい外へ出られず、名前解決も不安定
RAを有効デフォルトルートは入るが、ルーター側が配る外部DNSが混ざる/優先されるローカルドメイン名がIPv6で解決できない

つまり本質は「RAとDHCPv6が同じ領域(DNSなど)に手を出して、クライアント側のDNS設定が意図しない順番になる」ことです。ここを解けば、RAは止めずに、ローカルDNSを確実に優先させられます。

結論:RAとDHCPv6は役割分担が前提

結論から言うと、実運用で一番トラブルが少ないのは次の分担です。

  • RA:デフォルトルート(ゲートウェイ)とプレフィックス(SLAACの材料)
  • DHCPv6:DNS(Option 23)など追加情報

今回の「RAを止めるとゲートウェイが消える」は、まさにこの設計思想ど真ん中の挙動です。DHCPv6は万能ではなく、IPv6はまずRAありきでネットワークが成立するように作られています。

配布したい情報得意な仕組み備考
デフォルトゲートウェイ(デフォルトルート)RAIPv6ではこれが基本。RA停止は基本的に非推奨
アドレス(SLAAC)RA端末が自分でアドレス生成。RAのプレフィックス情報が必要
アドレス(DHCPv6)DHCPv6Stateful DHCPv6。運用ポリシー次第
DNSサーバーDHCPv6(Option 23)またはRA(RDNSS)競合しやすい。どちらで配るかを決めて一本化が安全
ドメイン検索サフィックスDHCPv6(Option 24)またはRA(DNSSL)短いホスト名解決を安定させたいなら重要

「Windows Server 2016のDHCPv6はDNS/ゲートウェイを配れないの?」への答え

まず誤解が起きやすいポイントを分けます。

  • DNSは配れます。Windows Server 2016のDHCPv6でも、Option 00023(DNS Recursive Name Server)で配布できます。
  • デフォルトゲートウェイは基本的にDHCPv6で配りません。仕様というより、IPv6の設計として「デフォルトルートはRAで広告する」のが基本です。

そのため「RAを止めたらゲートウェイが入らない」は自然で、DHCPv6側の欠陥ではありません。逆に言うと、RAを生かしたままDHCPv6でDNSだけ配る構成に寄せるのが最短ルートです。

最初にやるべき前提確認:ローカルDNS(AD DC)がIPv6で“本当に”使えるか

外部DNSが優先される問題を直しても、ローカルDNS(ADドメインコントローラー)がIPv6で正常応答していなければ同じように詰みます。設定に入る前に、次を押さえてください。

DC/DNSサーバー側のチェック

  1. DNSサーバー自身に安定したIPv6アドレスがあるか
    可能なら固定(静的)にします。少なくともサーバー再起動や回線再接続で変わらない設計にします。
  2. DNSサービスがIPv6で待ち受けできているか
    WindowsのDNSは通常IPv6でも待ち受けますが、セキュリティ製品やFWでIPv6の53番が落ちているケースがあります。
  3. 内部向けDNSとして「外部も引ける」状態にしておく
    クライアントから見たDNSは原則DCだけにします。外部名解決はDC側のフォワーダーでISPやパブリックDNSへ転送します。

疎通と名前解決の簡易テスト

DC上、または同一セグメントの端末上で、以下のような確認をします(例)。

ipconfig /all
nslookup yourdc.example.local
nslookup -type=AAAA yourdc.example.local
nslookup -type=SRV _ldap._tcp.dc._msdcs.example.local

AD環境ではSRVレコードが引けることが重要です。IPv6で運用する以上、クライアントがAAAA(IPv6)を選びやすくなるため、IPv6でDNSが不安定=AD全体が不安定になりがちです。

解決策の中核:Windows Server 2016 DHCPv6でローカルDNSを配布する

ここが今回の一番のポイントです。DHCPv6のGUIはIPv4より馴染みが薄く、設定箇所を見落としやすいため、手順を具体的に書きます。

前提:DHCPサーバーが正しく稼働しているか

  • DHCPサーバー役割がインストールされている
  • Active Directory環境では、DHCPサーバーが承認(Authorize)されている
  • DHCPv6のスコープが作成・有効化されている(Stateless運用でも、オプション配布の単位としてスコープを使うことが多い)

「DHCPv6は動いている(アドレスは取れている)のにDNSだけ入らない」という場合、ほとんどがOption 23未設定です。

設定するのはOption 00023(DNS Recursive Name Server)

DHCPv6でDNSサーバーを配る標準のオプションがOption 00023です。ここにローカルDNS(DC)のIPv6アドレスを入れます。

DHCP管理コンソールでの設定手順

  1. DHCP管理コンソールを開く
  2. IPv6を展開し、対象サーバー配下のServer Optionsを開く
  3. Configure Optionsを開く
  4. Option 00023(DNS Recursive Name Server)にチェックを入れる
  5. 下の一覧にローカルDNS(DC)のIPv6アドレスを追加する

サーバー全体に効かせたくない場合は、サーバーオプションではなくスコープ(IPv6 Scope)のScope Optionsに同じOption 23を入れる運用もできます。拠点ごとにDNSを出し分けたい場合はこちらが便利です。

項目推奨理由
Option 00023(DNS Recursive Name Server)ローカルDNS(DC)のIPv6を指定クライアントがADドメインを確実に解決できる
Option 00024(Domain Search List)必要に応じてADドメインを指定短い名前(host名だけ)での解決を安定させる

よくある落とし穴:DHCPv6を配っているのが“別の機器”になっている

RAを有効にした途端に外部DNSが入る場合、クライアントが受け取っているDNS情報は次のどれかです。

  • ルーターがRAでDNS(RDNSS)を広告している
  • ルーターがDHCPv6サーバーとして動いており、そこで外部DNSを配っている
  • ルーター自体をDNSとして配り、ルーターが外部DNSへフォワードしている

この状態でWindows ServerのDHCPv6を設定しても、そもそもクライアントがWindows Server側のDHCPv6を使っていなければ効果が出ません。次章の「RA側の調整」は、まさにこの競合を潰す作業です。

RA側の調整:デフォルトルートは維持しつつ、DNS広告の競合を止める

今回の症状は「RAを有効にすると外部DNSが優先される」なので、RA側でDNSを広告しない/ローカルDNSを広告するのが王道です。

まず理解しておきたい:RAは“ゲートウェイだけ”を配るとは限らない

RAはデフォルトルートやプレフィックスを配りますが、実装によってはDNSサーバー(RDNSS)やドメイン検索サフィックス(DNSSL)も配れます。つまり、ルーター設定のどこかに「IPv6 DNS配布」や「RDNSS」相当の項目があるなら、それが競合の原因になり得ます。

ルーターで見るべき設定項目(一般形)

設定項目(名称は機種で異なる)推奨設定狙い
RAのDNS広告(RDNSS / IPv6 DNS Advertisement)無効またはローカルDNS(DC)を指定外部DNSが混ざるのを根本から止める
RAのフラグ(Managed / Other)DNSをDHCPv6で配るならOther(O)を有効「追加情報はDHCPv6で取ってね」を端末に示す
DHCPv6サーバー機能(ルーター側)Windows Serverで配るなら無効DHCPv6が二重になって情報がブレるのを防ぐ

「HE(Hurricane Electric)のDNSが優先される」という状況は、ルーターが外部DNSを配っている可能性が高いです。ルーターがトンネルブローカーの設定テンプレートに従って外部DNSを設定している場合、内部DNS(AD DNS)に置き換えるだけで状況が一気に改善します。

RAとDHCPv6の併用パターン(おすすめの選び方)

ネットワーク内の端末種類で、最適解が変わります。Windows中心の社内LANだけならDHCPv6寄りが扱いやすいですが、スマホやIoTが混ざるとRA DNS(RDNSS)が必要な場面もあります。

パターンアドレス配布DNS配布向いている環境
SLAACのみRA手動 or RA(RDNSS)小規模、固定DNSで良い、ADなし
SLAAC + Stateless DHCPv6RADHCPv6(Option 23)今回の解決に最も近い。RAでゲートウェイ維持、DNSはDHCPv6で統一
Stateful DHCPv6DHCPv6DHCPv6(Option 23)アドレス管理を厳密にしたい。端末がDHCPv6対応であることが前提

今回の要件「ADのローカルDNSを自動配布して、ローカルドメイン名をIPv6で解決したい」に最短で効くのは、SLAAC + Stateless DHCPv6(RAで経路、DHCPv6でDNS)です。

パケットで“どこからDNSが来ているか”を一発で確認する

GUIだけ見ていると迷子になりやすいので、可能ならWiresharkで確認するのが最短です。見るべきパケットは2種類だけです。

  • RA(Router Advertisement):ICMPv6 Type 134
  • DHCPv6:UDP 546/547(Solicit/Advertise/Reply、またはInformation-request/Reply)

フィルタ例を置いておきます。

icmpv6.type == 134
dhcpv6

RAの中にRDNSS(DNSサーバー情報)が入っているなら、そこが外部DNS混入の入口です。逆にRAにDNSが無く、DHCPv6 ReplyにOption 23が入っているなら、DHCPv6側でDNSを配れている証拠になります。

ルーター側が調整できないときの現実的な回避策

家庭用ルーターやISP貸与機器だと、RAのDNS広告を細かく制御できない場合があります。その場合でも、AD環境を守るための逃げ道があります。

  • 内側に自前ルーター(pfSense/OPNsense/MikroTik等)を置き、そちらでRAとDHCPv6を制御する
    上流は単にIPv6疎通させるだけにして、LAN側の配布情報は自前機器で統一します。
  • スイッチでRA Guardを有効化し、意図しないRAを遮断する
    「勝手にRAを出す機器」がいると、デフォルトルートやDNSがぐちゃぐちゃになります。企業LANなら特に有効です。
  • どうしても最後の手段:GPOやスクリプトでDNSを強制する
    DHCP/RA設計を直すのが本筋ですが、短期的な暫定回避としては有効です。

特に複数ルーター環境(仮想基盤、テザリング、ICSなどが混在)では、意図しないRAが混入しやすいので「RAを誰が出しているか」を最優先で疑うと解決が早いです。

参考:radvdを使う場合の設定例

自前ルーター(Linuxなど)でRAを制御できる場合は、次の考え方が分かりやすいです。環境に合わせてプレフィックスやDNSは読み替えてください。

interface eth0 {
  AdvSendAdvert on;

# Stateless DHCPv6を使う想定:アドレスはSLAAC、追加情報はDHCPv6

AdvManagedFlag off;
AdvOtherConfigFlag on;

prefix 2001:db8:1234:5678::/64 {
AdvOnLink on;
AdvAutonomous on;
};

# もしRAでDNSを配るなら、外部DNSではなくローカルDNSを指定する

# RDNSS 2001:db8:1234:5678::53 { };

# DNSSL example.local { };

}; 

クライアント(Windows)での確認ポイント

設定を入れたら、必ずクライアント側で「何が配られているか」を確認します。DHCP側が正しくても、RA側が外部DNSを出し続けていれば再発します。

確認コマンド

ipconfig /all
route print -6
netsh interface ipv6 show dnsservers
powershell -Command "Get-DnsClientServerAddress -AddressFamily IPv6"
powershell -Command "Get-NetIPConfiguration"

期待する状態

  • IPv6のデフォルトルート(::/0)が存在し、次ホップがルーターになっている(RAで入る)
  • DNSサーバー一覧にローカルDNS(DC)のIPv6が入っている
  • 外部DNSが混ざっていない、または混ざっていてもローカルDNSが先頭
  • ローカルドメイン名(例:host.example.local)がAAAAで解決できる

名前解決の実地テスト

nslookup host.example.local
nslookup host.example.local <DCのIPv6アドレス>
ping -6 host.example.local

2行目のように、DNSサーバーを明示したnslookupで成功するのに、明示しないと失敗する場合は、DNSサーバーの優先順位・混在が原因です。RA/DHCPv6のどちらがDNSを出しているかに戻って確認します。

それでも直らないときの原因切り分け

IPv6は「ICMPv6を止めると壊れる」世界です。特にRA関連のICMPv6がフィルタされていると、DHCPv6だけ頑張っても不安定になります。トラブルシュートは、症状から逆引きするのが早いです。

症状ありがちな原因対処
RAを有効にすると外部DNSが入るルーターがRA(RDNSS)またはDHCPv6で外部DNSを配布ルーターのDNS広告を無効化/ローカルDNSに変更。DHCPv6二重起動を解消
RAを止めるとデフォルトルートが消える想定通り(IPv6の基本設計)RAは止めない。必要ならM/OフラグやDNS広告だけ調整する
DHCPv6 Option 23を設定したのに端末が受け取らない端末がそのDHCPv6サーバーを見ていない/Oフラグが無い/FWでUDP 546/547が遮断DHCPv6の到達性を確認。RAのOフラグ設定。FWでDHCPv6を許可
端末はDNSを受け取っているのにローカル名だけ引けない端末が外部DNSへ問い合わせている/検索サフィックスが不足/DC側DNSがそのゾーンを持っていないDNS一覧を内部に統一。Option 24またはGPOでサフィックスを整備。ゾーン/委任を確認
ローカルDNSを使っているのにAD関連が不安定DCのDNSが外部へフォワードできない/DNSゾーンが不整合/IPv6の53番が遮断DNSフォワーダー、ゾーン、FWを点検。IPv6での問い合わせログも確認
端末によって挙動が違うOSがDHCPv6非対応(または限定的)/Wi-Fiと有線で別経路/複数RA混在端末混在を前提に「RA DNSを使う」設計へ寄せるか、RAの出どころを一本化する

AD環境での実践的ベストプラクティス

最後に、単に「繋がる」だけでなく、運用を楽にしてトラブルを減らすためのポイントをまとめます。

クライアントDNSは内部(DC)に一本化する

ADのクライアントが外部DNSを引くと、次の問題が起きます。

  • 内部ドメイン名が解決できず、サインインやGPO、ファイル共有が不安定になる
  • SRVレコード探索が失敗し、「ドメコンが見つからない」系の障害に繋がる
  • 内部名前(ホスト名)が外部へ漏れる(情報漏えい・監査面で嫌われる)

そのため、クライアントへ配布するDNSは原則DCのみ。DC側で外部向けのフォワーダー(ISPやパブリックDNS)を設定して、外部名前解決はサーバー側で制御します。

DNSの“優先順位が勝手に入れ替わる”を防ぐ

端末に複数のDNSサーバーが入っていると、応答が速い側に寄ったり、障害時にフェイルオーバーしたりします。一見便利ですが、AD環境では外部DNSに寄った瞬間に内部名が引けなくなるのが致命傷です。

  • 配布経路を一本化し、端末に外部DNSを入れない(RA/DHCPv6の競合を潰す)
  • 外部DNSはDCのフォワーダーとしてのみ使う
  • 再発防止として、FWでクライアントの外向きDNS(53/853等)を制御するのも有効

IPv6アドレス設計を「変わらない」方向へ寄せる

トンネルブローカーやISPのプレフィックスは、運用によって変わることがあります。内部サービス(DC、ファイルサーバー、認証基盤)のアドレスが変わるとDNS・証明書・固定設定が連鎖的に壊れます。

  • 可能ならDCは静的なIPv6を持たせる(プレフィックスが変わる環境なら、内部用にULAも検討)
  • DNSは「クライアントから見た入口」を固定する(例:DNSは常にDC)
  • ルーターやFWのポリシーに「外部DNSへ直接出ない」制御も入れると再発防止になる

“RAを止める”より、“RAの中身を整える”が近道

IPv6でRAを止めるのは、IPv4でDHCPを止めて「各端末に静的ルート入れて頑張る」に近い無理筋です。RAは活かしつつ、次の2点を整えるのが現実的です。

  • RAはデフォルトルートとプレフィックスだけ(または内部DNSを広告)
  • DHCPv6はDNS(Option 23)を確実に配る(必要ならOption 24も)

まとめ

  • DNSはWindows Server 2016のDHCPv6で配布可能。Option 00023にローカルDNS(DC)のIPv6を設定する
  • デフォルトゲートウェイはDHCPv6ではなくRAで配るのが基本。RAを止めるとゲートウェイが消えるのは自然
  • RA有効時に外部DNSが優先されるなら、ルーター側のDNS広告(RDNSS)やDHCPv6二重配布が原因になりやすい
  • 最終的には「RA=経路」「DHCPv6=DNS」で一本化し、クライアントDNSは内部(DC)に統一するとADが安定する

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次