‘Active Directory ドメインコントローラーに連絡できません’

すべてのActive Directory環境でマシンを管理するIT管理者は経験があるでしょう。Active Directory(AD)ドメインにコンピュータを追加しようとすると、「Active Directoryドメインコントローラに接続できませんでした」という恐ろしいエラーが表示されます。この記事では、この問題を診断し(および解決する)ための手順を学びましょう。

A FREE read only tool that scans your AD and generates multiple interactive reports for you to measure the effectiveness of your password policies against a brute-force attack. Download Specops Password Auditor now!

An Active Directory Domain Controller Could not be Contacted

このエラーはDNS関連です。主な問題は、コンピュータがADドメインに参加するために必要な適切なSRV DNSレコードを見つけることに失敗したことです。

I’ve put together a few steps for you to follow to fix this error and get your computer joined to your domain.

最初に、最初に正しいDNSサーバーを使用していることを確認してください。深く掘り下げる前に、

兎穴に入り込まないように、まず正しいDNSサーバーを使用していることを確認してください。

Active DirectoryとDNSには特別な関係があります。ドメインコントローラは、自分が知っているDNSサーバーに特定のレコードを登録します。これらは_ldap._tcp.dc.msdcs.<domainname>ゾーンに存在し、ドメインコントローラのようなリソースをADに参加したデバイスが見つけるのに役立ちます。SRVレコードは、AD統合されていないDNSサーバーには存在しません。

この問題を解決するには、次のいずれかを使用する必要があります:

  • AD統合DNSサーバー
  • A DNS server that replicates records from an AD aware DNS server
  • A DNS server that has forwarding set up to query either an AD-integrated DNS server or a DNS server with replicated records

使用しているDNSサーバーが上記のいずれかであることを確認するには、既存のドメイン参加コンピュータ上でPowerShellセッションで次のコマンドを実行します。

PS C:\> Get-DnsClientServerAddress

InterfaceAlias               Interface Address ServerAddresses
                             Index     Family
--------------               --------- ------- ---------------
Ethernet                             9 IPv4    {10.0.0.101}
Ethernet                             9 IPv6    {}
Loopback Pseudo-Interface 1          1 IPv4    {}
Loopback Pseudo-Interface 1          1 IPv6    {fec0:0:0:ffff::1, fec0:0:0:ffff::2, fec0:0:0:ffff::3}

ServerAddesses列の下で受け取る応答は、そのコンピュータで使用されているDNSサーバーです。他のドメインクライアントを持っていない場合は、この情報を確認するためにネットワークチームに連絡する必要があります。

コンピュータのDNSクライアント設定を変更するには、PowerShellのSet-DnsClientServerAddressコマンドレットを使用するか、コンピュータのネットワークカードのIPv4プロパティダイアログボックスを使用します。これは、コントロールパネル -> ネットワーク -> インターネット -> ネットワーク接続に移動してアクセスできます。

ネットワーク接続ウィンドウに入ったら、ネットワークカードを右クリックしてプロパティを選択し、インターネットプロトコルバージョン4(TCP/IPv4)を選択し、プロパティをクリックします。

IPv4 properties dialog

ネットワークが動的ホスト構成プロトコル(DHCP)を使用している場合は、IPアドレスを自動的に取得するオプションとDNSサーバーアドレスを自動的に取得するオプションが選択されていることを確認してください。

ネットワークがDHCPを使用していない場合は、優先DNSサーバー代替DNSサーバーの値を、先ほど取得した正しい値に更新してください。

真のエラーを見つける

コンピュータが正しいDNSサーバーを持っていることを確認した場合、もう少し詳しく調べる必要があります。

コンピュータをドメインに参加させようとすると、「Active Directoryドメインコントローラーに接続できませんでした」というエラーが表示されますが、これは「真の」エラーメッセージではありません。もう少し探求する必要があります。

エラーダイアログには、詳細>>ボタンが表示されます。それをクリックしてください。これにより、より詳細な情報が表示され、エラーのトラブルシューティングがより容易になります。

Expanded details view of the error dialog

テキストボックスの内容を選択してコピー&ペーストできます。また、同じ情報はC:\windows\debug\dcdiag.txtファイルにもあります。このファイルは、Windowsがエラーが発生したときに作成されます。

エラーテキストにはいくつかの重要な情報が含まれています。以下の例では、それぞれの情報に番号と太字を付けました:

  • マシンが指定されたドメイン名(1)
  • エラーコード(2)
  • 行われたDNSクエリ(3)
  • マシンがクエリしたDNSサーバー(あれば)(4)

注意:この情報はネットワーク管理者向けです。ネットワーク管理者でない場合は、この情報が記録されたファイルC:\windows\debug\dcdiag.txtをネットワーク管理者に通知してください。

次のエラーが発生しました。ドメイン”carisbrookelabs.local”の Active Directory ドメインコントローラ(AD DC)を検索するために使用されるサービス位置(SRV)リソースレコードのDNSクエリ時に発生しました。(1):

エラーは「DNS名が存在しません」です。
(エラーコード0x0000232B RCODE_NAME_ERROR)(2)

クエリは、_ldap._tcp.dc._msdcs.carisbrookelabs.localのSRVレコードでした。(3)

このエラーの一般的な原因は次のとおりです:

ドメインのAD DCを検索するために必要なDNS SRVレコードがDNSに登録されていません。これらのレコードは、AD DCがドメインに追加されると自動的にDNSサーバーに登録されます。これらはAD DCによって一定の間隔で更新されます。このコンピューターは、次のIPアドレスを持つDNSサーバーを使用するように設定されています:

8.8.4.4
8.8.8.8 (4)

次のゾーンのいずれかには、その子ゾーンへの委任が含まれていません:carisbrookelabs.local

local
(ルートゾーン)

0x0000267C DNS_ERROR_NO_DNS_SERVER

このエラーは、クエリを試みるためにDNSサーバーが見つからなかったことを示しています。チャンスすらありませんでした。これは通常、DNSサーバーへのネットワーク接続がないためです。

ネットワーク接続なしでコンピューターを参加させることもできますが、それはこの記事の範囲外です。

ネットワーク接続のトラブルシューティング

このエラーメッセージが表示された場合、ネットワークのトラブルシューティングを開始する必要があります。

  1. ネットワークアダプターが有効になっていること、他のネットワークリソースに接続できることを確認してください。
  2. IPアドレスとDNSサーバーが設定されていることを確認してください。

IPアドレスとDNSサーバーを確認するには、ipconfig /allを実行します。

IPアドレスがあり、他のネットワークリソースにアクセスできる場合、コンピュータとDNSサーバーの間の接続をテストする必要があります。

そのために、pingとPowerShellのTest-Connectionコマンドレットを使用することができます。これらのユーティリティのいずれかを使用して、DNSサーバーへの接続をテストしてください。もしInternet Control Message Protocol(ICMP)トラフィックがネットワークで許可されている場合、応答を受け取るはずです。エラーやタイムアウトが発生した場合、おそらくルーティングなどのネットワーキングの問題があります。問題を解決するためにネットワーキングチームと話し、再度参加を試みてください。

DNSの接続性をチェックする

ネットワーク接続が機能していることを確認したら、次にコンピュータがDNSサーバーにTCP/53で接続できることを確認する必要があります。

試しに、参加しようとしているドメインのFQDNを使用して、Resolve-DNSName PowerShellコマンドレットを使用してみてください。これにより、1つ以上のDNSサーバーレコードが返されるはずです。

PS C:\> Resolve-DNSName carisbrookelabs.local


Name                                           Type   TTL   Section	IPAddress
----                                       	----   ---   -------	---------
carisbrookelabs.local                      	A  	600   Answer 	10.0.0.103
carisbrookelabs.local                      	A  	600   Answer 	10.0.0.102
carisbrookelabs.local                      	A  	600   Answer 	10.0.0.101

エラーが表示された場合は、マシンとDNSサーバーの間のIPトラフィックでポート53(DNSトラフィックに使用されるポート)がブロックされていないかどうかを確認する価値があります。

ポート53の接続性を簡単にチェックするには、Test-NetConnectionコマンドレットを使用できます(Test-Connectionコマンドレットとは異なることに注意してください)。

PS C:\> Test-NetConnection -Port 53 -ComputerName <DNSSERVERHERE>
True

接続が成功する場合はTrueという応答が返され、失敗する場合はFalseとなります。接続の失敗は、DNSサーバー上のネットワークまたはホストベースのファイアウォールのためかもしれません。

0x0000232B RCODE_NAME_ERROR

このエラーは、DNSサーバーを見つけることはできたがSRVレコードが見つからなかったことを意味します。このエラーは少しトラブルシューティングが必要です。

ドメインの完全修飾ドメイン名(FQDN)が正しいことを確認してください。

単純なことですが、入力した名前が参加しようとしているドメインの完全修飾ドメイン名(FQDN)と一致しているか確認してください。これはサーバー名ではなく、ドメイン名のみを使用する必要があります。たとえば、carisbrookelabs.localを使用し、WIN-3467RQTHJH5.carisbrookelabs.localを使用しないでください。

疑わしい場合は、既存のドメインクライアントのドメイン名を確認してください。適切なドメイン名は、既存のドメインクライアントでこのPowerShellコマンドを実行することで見つけることができます。

PS51> (Get-CimInstance Win32_ComputerSystem).Domain
carisbrookelabs.local

NETBIOS名(contoso)ではなくFQDN(contoso.local)を使用しようとする場合、コンピュータードメインを見つけるかもしれませんが、Windowsは名前を常にFQDNとして扱います。

NETBIOS 名を入力して、WINS インフラストラクチャがない場合、修正しようとしているエラーが発生します。常に FQDN を使用し、NETBIOS 名を使用しないでください。

Typing an FQDN in the Computer/Domain Changes dialog

DNS レコードを確認します。

このステップでは、Resolve-DNSName を再度使用します。今回は、マシンをドメインに参加させようとした際に取得できなかった正確なDNS レコードを使用します。導入で言及された dcdiag.txt ファイルまたは以前に取得したエラーテキストからコピーして貼り付けてください。これにより、アンダースコアやダッシュの入力ミスが回避されます。

コマンドは次のようになります:

PS C:\> Resolve-DNSName _ldap._tcp.dc._msdcs.carisbrookelabs.local


Name                    	Type TTL   Section	PrimaryServer           	NameAdministrator       	SerialNumber
----                    	---- ---   -------	-------------           	-----------------       	------------
_msdcs.carisbrookelabs.loca SOA  3600  Authority  WIN-3467RQTHJH5.carisbrooke hostmaster.carisbrookelabs. 419
l                                             	labs.local              	local

無料の Specops Password Auditor ツールを使用して、Active Directory をスキャンし、約 9億3000万件の既知の侵害されたパスワードを特定します。今すぐダウンロード!

このコマンドの応答としてDNS 名が存在しないと表示される場合、問題は DNS にあります。

  • 正しい DNS サーバーを使用していることを確認してください。
  • 関連するレコードが削除されていないことを確認してください。

Resolve-DNSName _msdcs.<domainname> に対して正の応答が得られるが、Resolve-DNSName _ldap._tcp.dc._msdcs.<domainname> から DNS 名が存在しない と返ってくる場合、レコードが欠落している可能性があります。

各ドメインコントローラでコマンド ipconfig /registerdns を使用してドメインコントローラの DNS レコードを再登録してください。 レコードが表示されるまで数分かかる場合があります。

Resolve-DNSName を使用して必要な DNS レコードの存在を確認できるようになったら、問題なく進めるはずです。

概要

この記事では、「Active Directory ドメインコントローラに連絡できませんでした」というエラーのトラブルシューティング手順をいくつか紹介しました。このような記事ではすべてのシナリオを網羅することは不可能ですが、この手順が役立ち、正しい道に進むことを願っています。

さらなる情報

Source:
https://adamtheautomator.com/an-active-directory-domain-controller-could-not-be-contacted/