【Windows】nltestコマンドでドメインコントローラーとの接続を確認する方法

未分類

今回は、Windows環境でドメインコントローラー(DC)との接続状態を確認できる「nltest」コマンドについて詳しく解説します。

グループポリシーが適用されない、ログオンに時間がかかる、信頼関係のエラーが発生するなど、Active Directory環境で発生するトラブルの多くは、クライアントPCとドメインコントローラー間の通信に起因しています。nltestコマンドを使いこなすことで、これらの問題を効率的に切り分けることができます。

nltestコマンドとは

nltestは、Windows Server および Windows クライアントOSに標準搭載されているコマンドラインツールです。Netlogonサービスの動作確認やドメインコントローラーとの通信状態の検証に使用します。特に、Active Directory環境におけるトラブルシューティングでは欠かせないツールの一つです。

ヘルプデスクや情シス担当者が「グループポリシーが反映されない」という問い合わせを受けた際、まず確認すべきはクライアントPCがドメインコントローラーと正常に通信できているかどうかです。nltestコマンドは、この切り分けを素早く行うための強力な味方となります。

nltestコマンドの主要オプション一覧

以下の表に、トラブルシューティングで頻繁に使用するnltestの主要オプションをまとめました。

オプション 説明 主な用途
/sc_query:ドメイン名 セキュアチャネルの状態を確認 信頼関係の確認
/sc_verify:ドメイン名 セキュアチャネルの検証と修復確認 信頼関係の詳細検証
/sc_reset:ドメイン名 セキュアチャネルのリセット 信頼関係の修復
/dsgetdc:ドメイン名 利用可能なDCを検索 DC接続先の確認
/dclist:ドメイン名 ドメイン内のDC一覧を表示 DC構成の確認
/dsgetsite クライアントが所属するサイトを表示 サイト構成の確認
/server:サーバー名 特定のサーバーに対して実行 特定DCへの接続確認
/trusted_domains 信頼関係のあるドメイン一覧 フォレスト構成の確認
/user:ユーザー名 指定ユーザーの情報を確認 ユーザー認証問題の調査
/query Netlogonサービスの状態確認 サービス動作確認

基本的な使い方

コマンドプロンプトの起動

nltestコマンドを実行するには、管理者権限でコマンドプロンプトを起動する必要があります。

  1. スタートメニューで「cmd」と入力
  2. 「コマンドプロンプト」を右クリック
  3. 「管理者として実行」を選択

セキュアチャネルの状態確認(/sc_query)

最も基本的な確認方法は、セキュアチャネルの状態を確認することです。セキュアチャネルとは、クライアントPCとドメインコントローラー間で確立される安全な通信経路のことです。

nltest /sc_query:contoso.local

正常時の出力例(OK):

Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\DC01.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully

異常時の出力例(NG):

Flags: 0
Trusted DC Name
Trusted DC Connection Status Status = 1311 0x51f ERROR_NO_LOGON_SERVERS
The command completed with an error

出力結果で「NERR_Success」と表示されれば正常、「ERROR_NO_LOGON_SERVERS」などのエラーが表示された場合は、ドメインコントローラーとの通信に問題があります。

セキュアチャネルの検証(/sc_verify)

/sc_queryよりも詳細な検証を行いたい場合は、/sc_verifyオプションを使用します。

nltest /sc_verify:contoso.local

正常時の出力例(OK):

Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\DC01.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
Trust Verification Status = 0 0x0 NERR_Success
The command completed successfully

異常時の出力例(NG):

Flags: 0
Trusted DC Name \\DC01.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
Trust Verification Status = 1789 0x6fd ERROR_TRUSTED_RELATIONSHIP_FAILURE
The command completed with an error

この例では、DCへの接続自体は成功していますが、信頼関係の検証でエラーが発生しています。このような場合は、コンピューターアカウントのパスワードに問題がある可能性があります。

トラブルシューティング実践

シナリオ1:グループポリシーが適用されない

グループポリシーが適用されない場合、まずドメインコントローラーとの通信状態を確認します。

確認手順:

nltest /sc_query:contoso.local
nltest /dsgetdc:contoso.local

dsgetdcの正常時出力例(OK):

DC: \\DC01.contoso.local
Address: \\192.168.1.10
Dom Guid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Dom Name: contoso.local
Forest Name: contoso.local
Dc Site Name: Tokyo
Our Site Name: Tokyo
Flags: PDC GC DS LDAP KDC TIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE FULL_SECRET WS DS_8 DS_9 DS_10
The command completed successfully

dsgetdcの異常時出力例(NG):

Getting DC name failed: Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN

このエラーが出た場合、DNS設定の問題やネットワーク接続の問題が考えられます。クライアントPCのDNS設定がドメインコントローラーのIPアドレスを参照しているか確認してください。

シナリオ2:ログオンに時間がかかる・失敗する

ログオン遅延や失敗が発生する場合、クライアントが適切なドメインコントローラーに接続できているかを確認します。

確認手順:

nltest /dsgetdc:contoso.local /force
nltest /dsgetsite

/forceオプションを付けることで、キャッシュを使用せずに新たにDCを検索します。

dsgetsiteの正常時出力例(OK):

SiteName: Tokyo
The command completed successfully

dsgetsiteの異常時出力例(NG):

Getting the site name failed: Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN

サイト情報が取得できない場合、Active Directoryサイトとサービスの構成に問題があるか、クライアントのIPアドレスがどのサイトのサブネットにも含まれていない可能性があります。

シナリオ3:特定のクライアントPCだけ認証に問題がある

特定のPCだけで認証問題が発生する場合、そのPCのコンピューターアカウントに問題がある可能性があります。

確認手順:

nltest /sc_verify:contoso.local
nltest /sc_query:contoso.local

信頼関係エラー時の出力例(NG):

Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\DC01.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
Trust Verification Status = 1789 0x6fd ERROR_TRUSTED_RELATIONSHIP_FAILURE
The command completed with an error

このエラーが出た場合、以下の対処法を検討します。

対処法1:セキュアチャネルのリセット

nltest /sc_reset:contoso.local

リセット成功時の出力例(OK):

Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\DC01.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully

対処法2:PowerShellでコンピューターアカウントをリセット

nltestでリセットできない場合は、PowerShellで以下のコマンドを実行します。

Reset-ComputerMachinePassword -Server DC01 -Credential (Get-Credential)

シナリオ4:信頼関係のエラーが発生している

ドメイン間の信頼関係に問題がある場合、信頼されているドメインの一覧を確認します。

確認手順:

nltest /trusted_domains
nltest /dclist:contoso.local

trusted_domainsの正常時出力例(OK):

List of domain trusts:
    0: CONTOSO contoso.local (NT 5) (Forest Tree Root) (Primary Domain) (Native)
    1: PARTNER partner.local (NT 5) (Forest: 2) (Direct Outbound) (Direct Inbound)
The command completed successfully

dclistの正常時出力例(OK):

Get list of DCs in domain 'contoso.local' from '\\DC01.contoso.local'.
    DC01.contoso.local [PDC]  [DS] Site: Tokyo
    DC02.contoso.local        [DS] Site: Osaka
The command completed successfully

dclistの異常時出力例(NG):

Get list of DCs in domain 'contoso.local' from '\\DC01.contoso.local'.
I_NetGetDCList failed: Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN

この場合、DNSの設定やドメインコントローラーへのネットワーク到達性を確認する必要があります。

特定のドメインコントローラーを指定して確認

複数のドメインコントローラーが存在する環境では、特定のDCに対して接続確認を行いたい場合があります。

nltest /server:DC02 /sc_query:contoso.local

正常時の出力例(OK):

Flags: 30 HAS_IP HAS_TIMESERV
Trusted DC Name \\DC02.contoso.local
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully

エラーコード一覧と対処法

nltestコマンドで表示される主なエラーコードと対処法を以下にまとめます。

エラーコード エラー名 主な原因 対処法
0x51f (1311) ERROR_NO_LOGON_SERVERS DCに到達できない ネットワーク接続・DNS設定を確認
0x54b (1355) ERROR_NO_SUCH_DOMAIN ドメインが見つからない DNS設定・ドメイン名を確認
0x6fd (1789) ERROR_TRUSTED_RELATIONSHIP_FAILURE 信頼関係の破損 sc_resetまたはドメイン再参加
0x6fa (1786) ERROR_TRUSTED_DOMAIN_FAILURE 信頼されたドメインへの接続失敗 信頼関係の再構築
0x5 (5) ERROR_ACCESS_DENIED アクセス権不足 管理者権限で実行

まとめ

nltestコマンドは、Active Directory環境におけるトラブルシューティングの第一歩として非常に有効なツールです。本記事で紹介した主なポイントをまとめます。

  • sc_queryでセキュアチャネルの状態を素早く確認できる
  • sc_verifyでより詳細な信頼関係の検証が可能
  • dsgetdcで接続先のドメインコントローラーを特定できる
  • sc_resetで信頼関係の修復を試みることができる
  • エラーコードを理解することで、問題の原因を効率的に特定できる

グループポリシーが適用されない、ログオンに問題があるといったトラブルに遭遇した際は、まずnltestコマンドでドメインコントローラーとの接続状態を確認することで、問題の切り分けを効率的に進めることができます。日々の運用業務にぜひお役立てください。

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

未分類windows
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。
得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。
※サーバ運用費がかかっているので、広告を掲載させて頂いてます。

StarTellerをフォローする
シェアする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました