😸

AD 参加してる一部のマシンに条件付きフォワーダーを設定するみたいなやつ

2024/06/14に公開

TL;DR

  • AD 環境の一部のマシンに対して条件付きフォワーダーを設定し隊
  • OU を分け、NRPT の GPO を設定することで、一部のマシンにのみ条件付きフォワーダー的なものを設定できる
  • PoC とかで十数台に設定を適用したいけど hosts を変更するのはめんどい、みたいなケースで使えるかも

はじめに

ということで、前回の Windows Client OS で条件付きフォワーダー的なことをやってみる に引き続き条件付きフォワーダーをいろいろやってみようシリーズです。
今回は、Active Directory (AD) 環境を前提として、Group Policy Object (GPO) を使うことで一部のマシンにのみ条件付きフォワーダーを設定する、みたいな感じをやってみます。

前提条件

  • AD サーバがある
  • Windows 11 の Azure VM を 2 台用意し、それぞれ AD に参加させておく
    • この 2 台は AD とは別の VNet に作成してある
    • この VNet の DNS サーバーは、AD 参加の前提条件となるため AD サーバーの IP アドレスになっている
    • 2 台のうち、1 台を別の Organization Unit (OU) に移動しておく
  • 適当な Storage Account を作成する
    • Public Access を無効化する
    • blob.core.windows.net に対して Azure Private Endpoint を作成する、エンドポイントは Windows 11 のある VNet の subnet に作成する
    • つまり AD サーバーの VNet とは Private DNS Zone の VNet link がなく、AD サーバーからは Storage Account の Azure Private Endpoint の名前解決はできない

GPO を作成する

ということで、2 台の Windows 11 マシンの 1 台を対象とする GPO を作成するため、分けておいた OU を選択した状態で GPO を作成します。
作成した GPO を編集し、Computer Configuration > Policies > Windows Settings > Name Resolution Policy に移動します。
Suffix として「blob.core.windows.net」を追加し、その下のタブは Generic DNS Server を選択し「168.63.129.16」を追加します。

前回の記事と違って Azure Private DNS Resolver (ADPR) を利用せず、Windows 11 側の VNet に Private DNS Zone の VNet link があることを利用しています。
この設定により、Windows 11 マシンから「*.blob.core.windows.net」に対して問い合わせがあった場合、AD サーバーではなく 168.63.129.16 に DNS 問い合わせが行われます。

動作確認する

あっさりいきますが、左上が AD サーバー、右上が GPO による設定対象の Windows 11 (vm-spkcli01)、下が GPO による設定対象 の Windows 11 (vm-spkcli02) です。
dsregcmd /status により vm-spkcli01 と vm-spkcli02 が AD 参加していることを示したうえで、Test-NetConnection により Storage Account の名前解決を行います。

vm-spkcli01 では Test-NetConnection の出力に含まれる名前解決の結果が private IP アドレスであることが確認できます。
これが、Name Resolution Policy Table (NRPT) による効果です。
一方で、vm-splcli02 では NRPT を設定する GPO が適用されてないため、AD サーバーへと DNS 問合せし、public IP アドレスが返ってきています。

念のため、Get-DnsClientNrptPolicy により NRPT の設定を出力すると、右上の vm-spkcli01 のみが対象であることが確認できます。

まとめ

ということで、同じ AD サーバーに所属している 2 台の Windows 11 マシンのうち、1 台のみを対象として条件付きフォワーダーを設定した、ような環境を実現できました。
名づけるのであれば「選択的条件付きフォワーダー」みたいなものでしょうか。
条件付きフォワーダーを設定すると AD サーバーを DNS サーバーとして指定しているマシンすべてに影響が及びますが、この方法を使うことでその一部にのみ影響を与えることができます。
PoC として一部のマシンにのみ Azure Private Endpoint を使った構成を試したい、でも十数台に hosts を編集するのはめんどい、どうにかして一部のマシン群にのみ条件付きフォワーダーを設定できないか、というケースには役に立つかと思います。

参考

  • The NRPT

    GPO の書き方はここに載ってるものを参考にしています。

https://learn.microsoft.com/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn593632(v=ws.11)?wt.mc_id=MVP_391314

  • Add-DnsClientNrptRule

https://learn.microsoft.com/powershell/module/dnsclient/add-dnsclientnrptrule?view=windowsserver2022-ps?wt.mc_id=MVP_391314


Update log

  • tag の追加とか - 2024/07/14

Discussion