Windows クライアントで NIC の DNS サーバー設定を変更せずに特定ドメインの名前解決のみ利用する DNS サーバーを指定する方法

Windows クライアントで特定ドメインの名前解決のみ利用する DNS サーバーを指定する方法

はじめに

自宅ラボ環境に Active Directory ドメインを構築しており、自宅ラボへのアクセスは Windows クライアントから行っている。
Windows クライアントは自宅ラボ以外の用途にも利用していることからインターネットの名前解決と自宅ラボ環境ドメインの双方の名前解決を行いたいと考えた。

自宅ラボ環境のドメインの名前解決に都度、 Windows クライアントの DNS サーバー設定は変更したくなく、 hosts も利用したくない。
また、自宅ラボ環境の DNS サーバーに DNS フォワーダを設定し、 Windows クライアントの DNS サーバーとして利用することで実現もできるが、インターネットの名前解決が遅くなるため、その手段も取りたくない。

そんな中で Windows クライアントの設定でやりたいことを実現したため、備忘のため記事に残す。


この記事を読んで欲しい人

  • プロバイダ・ルーター等の DNS でインターネット向けの名前解決を行いつつ、自宅ラボ・検証環境向けの名前解決も行いたい人
  • 自宅ラボ・検証環境向けの名前解決のために Windows クライアントの DNS サーバーの設定を変更したくない人

特定ドメインの名前解決のみ利用する DNS サーバーを指定

今回、 .lab.local ドメインの名前解決のみ 192.168.1.200 の DNS サーバーを利用する設定を行う。
この手順で事前に準備すべき各パラメータを以下に記載する。

パラメータ手順上の設定値備考
特定ドメイン.lab.local手順上は < domain > で記載
特定ドメインの名前解決をする DNS サーバーアドレス192.168.1.200手順上は < nameserver_address > で記載

設定追加

  1. キーボードの Windows + X でシステムメニューを開き、 A を押下し、ターミナルを管理者として起動する

  2. ターミナルがコマンド プロンプトで起動している場合、以下のコマンドで PowerShell を起動する

    powershell
    
  3. PowerShell にて以下のコマンドを実行し、特定ドメインの名前解決のみ利用する DNS サーバーを指定する

    Add-DnsClientNrptRule -Namespace "< domain >" -NameServers "< nameserver_address >"
    

    ※ < domain > は .lab.local 、 < nameserver_address > は 192.168.1.200 を以下の実行例の通り指定

    Add-DnsClientNrptRule -Namespace ".lab.local" -NameServers "192.168.1.200"
    

    ※ 実動作は Ping コマンドで動作確認が可能


設定削除

  1. PowerShell にて以下のコマンドを実行し、現在の設定を確認する

    Get-DnsClientNrptRule
    

    Name : {1C135080-49E5-432B-912E-567095F6FD67}
    Version : 2
    Namespace : {.lab.local}
    IPsecCARestriction :
    DirectAccessDnsServers :
    DirectAccessEnabled : False
    DirectAccessProxyType :
    DirectAccessProxyName :
    DirectAccessQueryIPsecEncryption :
    DirectAccessQueryIPsecRequired :
    NameServers : 192.168.1.200
    DnsSecEnabled : False
    DnsSecQueryIPsecEncryption :
    DnsSecQueryIPsecRequired :
    DnsSecValidationRequired :
    NameEncoding : Disable
    DisplayName :
    Comment :

  2. PowerShell にて以下のコマンドを実行し、設定を削除する

    Remove-DnsClientNrptRule -Name "< Name >" -PassThru
    

    ※ < Name > は今回の場合、以下の実行例の通り {1C135080-49E5-432B-912E-567095F6FD67} を指定

    Remove-DnsClientNrptRule -Name "{1C135080-49E5-432B-912E-567095F6FD67}" -PassThru
    

  3. 以下の確認メッセージが表示されるため、 Y を入力し、 ENTER を押下

    確認
    名前空間 .lab.local の NRPT ルールを削除します。各値は次のとおりです
    DAEnable: 無効
    DnsSecValidationRequired: 無効
    NameEncoding: Disable
    NameServers: 192.168.1.200
    続行しますか?
    [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は “Y”):

  4. PowerShell にて以下のコマンドを実行し、設定が削除されていることを確認する

    Get-DnsClientNrptRule
    

環境

  • Windows 11 Home 24H2 ( Build:26100.2605 )
  • PowerShell 5.1.26100.2161