AD レプリケーション エラー 8589 のトラブルシューティング: DS はサービス プリンシパル名 (SPN) を派生できません

この記事では、Win32 エラー 8589 で AD 操作が失敗した場合の症状、原因、解決の手順について説明します。

注:

ホーム ユーザー: この記事は、テクニカル サポート エージェントと IT プロフェッショナルのみを対象としています。 問題のヘルプをお探しの場合は、 Microsoft コミュニティにお問い合わせください

適用対象: Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
元の KB 番号: 2703028

現象

エラー 8589: "DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

シンボリック エラー: ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF

Active Directory レプリケーションのトラブルシューティング時に、次のいずれかのエラー/警告が表示されます。

  1. DCDIAG は、Active Directory レプリケーション テストがエラー状態 (8589) で失敗したことを報告します。ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、DS はターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

    DCDIAG のサンプル エラー テキストを次に示します。

    テスト サーバー: <サイト><DC 名>

    テストの開始: レプリケーション

    * レプリケーションの確認

    [レプリケーションチェック,<[DC 名>] 最近のレプリケーション試行が失敗しました。

    ソース DC から<宛先 DC> へ<>

    名前付けコンテキスト: DC=<DN パス>

    レプリケーションでエラーが生成されました (8589)。

    DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

    エラーは日付><時刻>に<発生しました。

    最後に成功したのが (never)| <date>.

  2. DCDiag.exe には、次の警告が表示されます。

    警告イベントが発生しました。 EventID: 0x80000785

    生成された時間: <DateTime>

    イベント文字列: 次の書き込み可能なディレクトリ パーティションのレプリケーション リンクを確立できませんでした。
    ディレクトリ パーティション:
    DC=ForestDnsZones,DC=contoso,DC=com
    ソース ドメイン コントローラー:
    CN=NTDS 設定,CN=DCSRV01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=contosoDC=com
    ソース ドメイン コントローラー アドレス:

    <source DC NTDS Settings Obejct GUID>._msdcs.contoso.com
    サイト間トランスポート (存在する場合):
    この問題が修正されるまで、このドメイン コントローラーはソース ドメイン コントローラーでレプリケートできません。

    ユーザー操作
    ソース ドメイン コントローラーにアクセスできるかどうかを確認するか、ネットワーク接続を使用できるかどうかを確認します。

    追加データ
    エラー値:
    8589

    DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

  3. REPADMIN.EXE は、最後のレプリケーション試行が状態 8589 で失敗したことを報告します

    REPADMIN 一般的に 8589 状態を引用するコマンドには、次のものが含まれますが、これらに限定されません。

    • REPADMIN /SHOWREPL
    • REPADMIN /SHOWREPS
    • REPADMIN /REPLSUM
    • REPADMIN /SYNCALL

    Repadmin /showrepl は次のエラーを返します。

    ソース: <サイト名>\<DC 名>

    <n> 日付 & 時刻以降<の連続するエラー>

    最後のエラー: 8589 (0x218d):

    DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

  4. エラー状態 8589 を引用する Directory Services イベント ログ内のイベント

    一般的に 8589 状態を引用するイベントには、次のものが含まれますが、これらに限定されません。

    イベント ソースとイベント ID メッセージ文字列
    NTDS レプリケーション / ActiveDirectory_DomainService 1411 Active Directory は、次のドメイン コントローラーの相互認証サービス プリンシパル名 (SPN) を構築できませんでした。
    NTDS レプリケーション 2023 ローカル ドメイン コントローラーは、次のディレクトリ パーティションの次のリモート ドメイン コントローラーに変更をレプリケートできませんでした。
    NTDS KCC 1925 次の書き込み可能なディレクトリ パーティションのレプリケーション リンクを確立できませんでした。

原因

このイベントは、レプリケーション パートナーがエンド ツー エンド レプリケーションの完了を許可する前に強制的に降格され、再プロモートされた後、DC で最も一般的に発生します。 これは、ドメイン コントローラーの名前を変更し、serverReference 属性が更新されない場合にも発生する可能性があります。 このインスタンスの serverReference 属性は、Active Directory サイトおよびサービス MMC (adsiedit.msc) で表示できる Server オブジェクトです。 サーバー オブジェクトは、ドメイン コントローラーの NTDS Settings オブジェクトの親オブジェクトです。

解決方法

serverReference 属性が見つからないか、正しくない値に設定されていることを確認し、正しい値に更新します。

  1. イベント ID 1411 で参照されているドメイン コントローラーを見つけます。 これを見つけるために使用できるオプションがいくつかあります。 簡単なのは、ping (オプション A) を使用することです。 ping が失敗した場合は、PowerShell (オプション B) を使用します。 PowerShell がオプションでない場合は、ldp.exe (オプション C) を使用できます。 (注: DC が 2003 で PowerShell をインストールできない場合は、Windows 7 ドメイン参加済みクライアントまたは Windows 2008 または Windows 2008 R2 サーバーから PowerShell を使用できます)

    オプション A
    NSLookup または ping を使用して、ソース DC NTDS 設定 Obejct GUID>._msdcs.contoso.com に<一覧表示されている DC を見つけます。

    例:

    ping 3dab7f9b-92e7-4391-b8db-71df532c1493._msdcs.contoso.com

    Pinging DCSRV02.contoso.com [IP] with 32 bytes of data :
    
    Reply from [IP]: bytes=32 time<1ms TTL=128
    Reply from [IP]: bytes=32 time<1ms TTL=128
    Reply from [IP]: bytes=32 time<1ms TTL=128
    Reply from [IP]: bytes=32 time<1ms TTL=128
    

    オプション B
    PowerShell を使用して、参照されている DC を検索します。 使用できる PowerShell メソッドは 2 つあります。 これを行うには、"active Directory Module for Windows PowerShell" を開きます

    方法 1: 次の 2 つの PowerShell コマンドレットを実行します。 最初のコマンドレットで、パーティション名 CN=Configuration,DC=contoso,DC=com を構成パーティションの DN に置き換えます。 サーバー名 DCSRV01.contoso.com をドメイン コントローラーの名前に置き換えます。 2 番目のコマンドレットで、GUID 3dab7f9b-92e7-4391-b8db-71df532c1493 をイベント ID 1411 の GUID に置き換えます。

    $list = Get-ADObject -Filter 'ObjectClass -eq "ntdsdsa"' -SearchBase '*CN=Configuration,DC=contoso,Dc=com*' -Server *DCSRV01.contoso.com*  
    -includedeletedobjects -Properties *
    
    foreach ($dc in $list) {if ($dc.ObjectGUID -match "*3dab7f9b-92e7-4391-b8db-71df532c1493*") {Echo $dc.DistinguishedName }}  
    

    方法 2: もう 1 つの PowerShell オプションは、次を実行し、出力テキスト ファイルを検索することです。 を DCSRV01.contoso.com 環境内の DC に置き換えます。

    Get-ADObject -Filter 'ObjectClass -eq "ntdsdsa"' -SearchBase 'CN=Configuration,DC=contoso,Dc=com' -Server DCSRV01.contoso.com -includedeletedobjects > C:\NTDSDSA.txt
    

    次に、イベント ID 141 で参照されている GUID の NTDSA.txt を検索します

    オプション C

    Ldp.exe を使用する

    1. [スタート] をクリックし、[実行] をクリックします。
    2. 「LDP.exe」と入力し、Enter キーを押します。
    3. [Connections] メニューの [バインド] をクリックし、[OK] をクリックします。
    4. [表示] メニューの [ツリー] をクリックします。
    5. BaseDN で、ドロップダウン リストの矢印をクリックし、構成パーティションの識別名をクリックし、[OK] をクリックします。
    6. [オプション] メニューの [コントロール] をクリックします。
    7. [コントロール] ダイアログ ボックスで、[定義済みの読み込み] メニューを展開し、[削除されたオブジェクトを返す] をクリックし、[OK] をクリックします。

      注:

      1.2.840.113556.1.4.417 コントロールが [Active Controls] リストに表示されます。

    8. [参照] メニューの [検索] をクリックします。
    9. [ベース DN] ボックスに、次のように入力します。CN=Sites, CN=Configuration,DC=contoso,DC=com (contoso と com を適切なドメイン名に置き換えます)。
    10. [フィルター] ボックスに「(objectClass=ntdsdsa)」と入力します。
    11. [スコープ] ボックスで、[サブツリー] を選択します。
    12. [属性] ボックスに「 * (アスタリスク)」と入力します。
    13. [実行] をクリックします
    14. 右側で objectGUID 属性の GUID を検索して、参照しているサーバーを見つけます。

    オプション D

    1. 8589 状態を報告する出力を宛先 DC から取得 repadmin /showrepl します。
    2. 前の手順で取得した repadmin /showrepl 出力を使用して、出力内の 8589 レプリケーションの状態を特定し、最後の試行メッセージに続く日付とタイムスタンプを文書化します。
    3. 前の手順の日付とタイムスタンプを使用して、宛先 DC の Directory Services イベント ログで対応するイベント ID 1411 を見つけます。 出力に一覧表示されている repadmin /showrepl DSA オブジェクト GUID は、イベント ID 1411 で報告される GUID とは異なっていることに注意してください。以下のシナリオ例を参照してください)
    4. 次に、NTDS 設定の [プロパティ] [全般] タブをオンにするか、イベント ID の GUID に ping を実行して、イベント ID 1411 に一覧表示されているドメイン コントローラーを見つけます。
    5. ADSIEDIT または Active Directory ユーザーとコンピューターを使用してソース DC にバインドし、[属性] エディターを開き、serverReference の値をコピーします。 オブジェクトのコピー先 DC に、この属性の値を貼り付けます。 (手順 2)
  2. 上記のいずれかの方法を使用して参照されているサーバーを見つけたら、次の操作を行います。

    1. [スタート] をクリックし、[実行] をクリックします。
    2. 「ADSIEDIT.msc」と入力し、Enter キーを押します
    3. [ADSI Edit]\(ADSI 編集\) を右クリックし、[接続]を選択します。"
    4. [接続ポイント] の下の [よく知られている名前付けコンテキストを選択する]: [構成] を選択し、[OK] をクリックします。
    5. 左側のウィンドウで、[構成] を展開します。
    6. 次に、"CN=Configuration,DC=contoso,DC=com" を展開します
    7. 次に[CN=Sites]\(CN=Sites\) を展開します
    8. [CN=Sites] で、サーバーが配置されている サイト を展開します。 例: Default-First-Site-Name
    9. そのサイトの [CN=Servers] を展開します。 例: DCSRV02が Contoso.com の Default-First-Site-Name サイトにある場合は、CN=DCSRV02、CN=Servers、CN=Default-First-Site-Name、CN=Sites、CN=Configuration、DC=contoso、DC=com になります。
    10. ドメイン コントローラー (オプション A、B、または C を使用して検出) を右クリックし、[プロパティ] を選択します。
    11. [属性エディター] タブで、serverReference 属性まで下にスクロールします。
    12. serverReference は CN=DCSRV02、OU=Domain Controllers、DC=Contoso、DC=com に似ています。欠落しているか正しくない場合は、正しい値に変更してください。
    13. ADSIEDIT.msc を閉じる

詳細

例のシナリオ

  1. 8589 状態を報告する宛先 DC から repadmin /showrepl 出力を取得します。

  2. 前の手順で取得した repadmin /showrepl 出力を使用して、出力内の 8589 レプリケーションの状態を特定し、最後の試行メッセージに続く日付とタイムスタンプを文書化します。

    Repadmin /showrepl 出力:

    リヴァプール\LIVCONTOSODCDSA オプション: IS_GC
    サイト オプション: (なし)
    DSA オブジェクト GUID: <GUID>

    DSA の呼び出し ID: <InvocationID>

    ==== 受信ネイバー ======================================

    DC=Contoso、DC=com

    RPC 経由の Charlotte\CONTOSOROOTDC1

    DSA オブジェクト GUID: <GUID>

    最後の試行 @ <DateTime> が成功しました。

    CN=Configuration,DC=Contoso,DC=com

    RPC 経由のヒューストン\5THWARDCORPDC

    DSA オブジェクト GUID: <GUID>

    最後の試行 @ <DateTime> が失敗しました。結果は 8589 (0x218d):

    DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

    1700 の連続したエラー。

    最後の成功 @ (なし)。

前の手順の日付とタイムスタンプを使用して、宛先 DC の Directory Services イベント ログで対応するイベント ID 1411 を見つけます。 repadmin /showrepl 出力に一覧表示されている DSA オブジェクト GUID は、イベント ID 1411 で報告される GUID とは異なっていることに注意してください。

Directory Services イベント ログ:

ログ名: ディレクトリ サービス
ソース: Microsoft-Windows-ActiveDirectory_DomainService
Date: <DateTime>
イベント ID: 1411
タスク カテゴリ: DS RPC クライアント
レベル: エラー
キーワード: クラシック
ユーザー: 匿名ログオン
コンピューター: LIVCONTOSODC.Contoso.com
説明:
Active Directory Domain Services、次のディレクトリ サービスの相互認証サービス プリンシパル名 (SPN) を構築できませんでした。

ディレクトリ サービス: <GUID>._msdcs.Contoso.com

呼び出しが拒否されました。 このディレクトリ サービスとの通信が影響を受ける可能性があります。

追加データ
エラー値:
8589 DS は、ローカル DS データベース内の対応するサーバー オブジェクトに serverReference 属性がないため、ターゲット サーバーを相互に認証するサービス プリンシパル名 (SPN) を派生できません。

NTDS 設定が開いている [Active Directory サイトとサービス] ウィンドウプロパティ ウィンドウスクリーンショット。

[キャンセル] をクリックし、サーバー オブジェクトのプロパティを表示します (この例では 5thWardCorpDC) [属性エディター] タブ (Server 2008 以降) を選択するか、ADSIEDIT を使用して Server 2003 でオブジェクトを編集します

次の図では serverReference 属性が設定されていないことに注意してください

serverReference 属性が選択されている 5THWARDCORPDC プロパティ ウィンドウのスクリーンショット。

ADSIEDIT または Active Directory ユーザーとコンピューターを使用してソース DC にバインドし、[属性] エディターを開き、serverReference の値をコピーします。 オブジェクトのコピー先 DC に、この属性の値を貼り付けます。

[Active Directory サイトとサービス] ウィンドウのスクリーンショット。5THWARDCORPDC プロパティ ウィンドウが開き、値を編集するための [文字列属性] エディター ウィンドウが開いています。

ドメイン コントローラーに対して serverReference 属性が正しく設定された後は、次のように表示されます。

[Active Directory サイトとサービス] ウィンドウのスクリーンショット。5THWARDCORPDC プロパティ ウィンドウ開き、serverReference 属性が選択されています。