認証されているドメインコントローラ(ログオンサーバー)を見つける方法

Windowsマシンがどのドメインコントローラーと通信しているかを知ることは、時に非常に役立ちます。特にグループポリシーやログインの問題が発生した場合はなおさらです。マシンの設定ミスやネットワークの問題が発生すると、間違ったドメインコントローラーや低速なドメインコントローラーに接続され、ログインが遅くなったり、ポリシーがすぐに適用されなかったりする可能性があります。確かに技術的な話に聞こえますが、ログを調べたり頭を悩ませたりすることなく、簡単に原因を特定できる方法がいくつかあります。これらの方法のほとんどはコマンドや環境変数の確認だけですが、コンピューターが正しいドメインコントローラーに接続されているかどうか、あるいは裏で何かおかしなことが起こっているかどうかを明らかにすることができます。

コンピュータがどのDCに認証されているかを識別する方法

ログオンサーバーがわかれば、ログイン速度の低下やGPOの不具合のトラブルシューティング、あるいはマシンが正しいドメインコントローラーで動作しているかどうかの確認に役立ちます。通常は、コマンドプロンプトやPowerShellでいくつかのコマンドを実行するか、環境変数を確認するだけで済みます。あるマシンでは正しいドメインコントローラー名が表示されるのに、別のマシンでは表示されないというケースはよくあります。特にDNSやネットワークの調子が悪い場合は、そうはいかないでしょう。重要なのは、見慣れないドメインコントローラー名が表示された場合は、ネットワーク設定やDNS設定を見直す価値があるということです。

方法1: コマンドプロンプトまたはPowerShellを使用する

  • コマンドプロンプトまたはPowerShellを開きます(可能であれば管理者として実行してください)。以下を入力してください。 echo %logonserver% ログインセッションが関連付けられているドメインコントローラーが表示されます。例えば、\\MUN-DC02 のような名前が表示されることがあります。名前が間違っている、または古い場合は、DNSまたはネットワーク設定を確認する必要があるかもしれません。
  • この情報は、以下のコマンドでも確認できます。 systeminfo | find /i "logon server" このコマンドは、似たような名前の行を出力します。ただし、環境によっては、特にマシンの速度が遅い場合やネットワークに問題がある場合、このコマンドが実行できなかったり、遅延したりすることがあります。

方法2: PowerShellの環境変数

  • PowerShell を起動して次のように入力してください。 $env:LOGONSERVER 同じ情報が表示されますが、より分かりやすく表示されます。\\WOSHUB-DC のような表示が出れば問題ありません。空白、または期待通りでない場合は、マシンが別の DC または古い DC に接続されているか、DNS が正しく解決されていない可能性があります。

方法3: gpresultを使用する

  • 実行: gpresult /r 「グループポリシーの適用元:」という行を探してください。多くの場合、ポリシーを適用したDCが正確に示されています。そのDCが想定と異なる場合、速度低下やポリシーの問題が発生する可能性があります。あるいは、ネットワークの構成ミスが明らかになるだけかもしれません。

方法4: nltestを使用する

  • この便利なツールは、マシンがどのドメインコントローラーに対して認証を行っているかを表示し、信頼関係も確認できます。実行: <domain> を実際のドメインにnltest /DSGETDC:yourdomain.com 置き換えてくださいyourdomain.com。DC名、サイト情報、ステータスが表示されます。応答に間違ったDCが表示されたり、エラーが表示されたりした場合は、ログイン速度の低下やグループポリシーの失敗の原因となっている可能性があります。
  • 手動で別の DC をリセットまたは切り替える別のコマンド: nltest /SC_RESET:DOMAIN\DCName 例: nltest /SC_RESET:WOSHUB\MUN-DC02.woshub.com 指定された DC に到達できない場合は、ERROR_NO_LOGON_SERVERS のようなエラーが発生することに注意してください。

Windowsが最も近いドメインコントローラを見つける方法

少し奇妙に思えますが、Windowsはログイン時に最適なDCを見つけるためにNetLogonサービスを使用します。このサービスは起動時にDNSにDCを問い合わせ、IPアドレスとサイト情報を比較し、最も近いDC情報をキャッシュすることで、毎回同じ処理を実行する手間を省きます。NetLogonが機能していない、または正しく設定されていない場合、最適なDC(遠く離れたDCや接続状態が悪いDCなど)に接続されてしまう可能性があり、これもログインやGPOの処理速度低下につながります。

NetLogon が実行されているかどうかを確認します。

get-service netlogon

停止している場合は問題があります。次のコマンドで再起動してください。

Start-Service netlogon

基本的に、Windows が DC を見つけるために実行する手順は次のとおりです。

  1. NetLogon は、すべてのドメイン コントローラを見つけるために DNS クエリを送信します (を参照_ldap._tcp.dc._msdcs.yourdomain.com)。
  2. DNS は DC のリストを返します。
  3. Windows は IP をチェックし、DC にサイトについて問い合わせます (LDAP クエリ経由)。
  4. 最も近いサイト情報は、将来の検索を高速化するためにレジストリ ( HKLM\System\CurrentControlSet\Services\Netlogon\Parameters) に保存されます。
  5. Windows はそのサイト内のすべてのローカル DC に接続し、最初に応答した DC がログオン サーバーになります。

問題のために Windows に特定の DC を手動で強制的に使用させる必要がある場合は、次のコマンドを実行できます。

nltest /SC_RESET:yourdomain.com\DCName

問題が解決するかどうか確認してください。ただし、DC にアクセスできない場合は、NERR_Success などのエラーが表示されず、最終的には「利用可能なログオンサーバーがありません」というメッセージが表示されて停止してしまうことに注意してください。

事態が本当にうまくいかない場合は、PowerShell の AD モジュールに次のようなコマンドがあります。

Get-ADDomainController -Discover -NextClosestSite

これは、サイト階層に基づいて、マシンが接続すべき最適なDCを教えてくれます。もちろん、そのためにはAD PowerShellモジュールがインストールされている必要がありますが、DC接続の問題をトラブルシューティングする際に役立つ情報です。

まあ、時々ちょっと面倒なこともありますが、これらのコマンドとチェックを使えば、マシンが正しいDCに接続されているか、あるいはネットワークの基盤に何らかの問題があって問題が発生しているかをすぐに判断できます。なぜうまくいく時とうまくいかない時があるかは分かりませんが、まあ、分かっていればそれで十分ですからね。

まとめ

  • echo %logonserver%現在の DC を確認するために使用します。
  • に確認してくださいsysteminfo | find /i "logon server"
  • PowerShell$env:LOGONSERVERも便利です。
  • 実行しgpresult /rて適用されたポリシーのソースを確認します。
  • nltest を試して接続をテストし、リセットしてください。
  • Get-ADDomainController最適な DC を動的に見つけるには、PowerShell コマンドを使用します。

まとめ

これらのコマンドの使い方を覚えてしまえば、マシンがどのDCに接続しているかを調べるのはそれほど難しくありません。DNSやネットワークの問題で全てが台無しになることもありますが、ほとんどの場合は簡単なチェックと、DNSフラッシュやNetLogonサービスの再起動だけで済みます。これらのコマンドは、あらゆる種類のログインに関する問題やGPOアプリケーションの低速化の診断に役立ちます。もちろん、ネットワークの速度低下やグループポリシーの混乱をトラブルシューティングする際にも、知っておくと役立ちます。少しでも時間の節約になれば幸いです!