今回は、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コマンドを実行するには、管理者権限でコマンドプロンプトを起動する必要があります。
- スタートメニューで「cmd」と入力
- 「コマンドプロンプト」を右クリック
- 「管理者として実行」を選択
セキュアチャネルの状態確認(/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コマンドでドメインコントローラーとの接続状態を確認することで、問題の切り分けを効率的に進めることができます。日々の運用業務にぜひお役立てください。

コメント