DHCP フェールオーバーにより、2 台の Microsoft DHCP サーバーが可用性情報を共有できるようになり、プライマリ サーバーとそのフェールオーバー パートナー間で IP アドレスのリースと設定を複製することで高可用性が確保されます。
アクティブなリースを含むすべてのスコープ情報は、2 つの DHCP サーバー間で共有されます。 これにより、もう一方のサーバーが利用できなくなった場合に、いずれかの DHCP サーバーが DHCP クライアントの責任を引き継ぐことができます。
この記事では、DHCP フェールオーバーの概要について説明します。
DHCP フェールオーバーの概要
DHCP フェールオーバーを使用すると、DHCPv4 スコープがプライマリ DHCP サーバーからパートナー DHCP サーバーに複製され、DHCP サービスの冗長性と負荷分散が可能になります。 フェールオーバー対応の DHCP スコープを共有する DHCP サーバーは、フェールオーバー パートナーと呼ばれています。 Microsoft の DHCP フェールオーバーの実装は、Internet Engineering Task Force (IETF) DHCP Failover Protocol draft に基づいています。
2 台の DHCP サーバーがフェールオーバー用に構成されている場合、それらのサーバーはすべてのアクティブなリースを含むスコープ情報を共有します。 これにより、両方の DHCP サーバーが負荷分散または冗長性の目的で同じサブネットにリースを提供できるようになります。 スコープ設定は、DHCP フェールオーバーを最初に構成するときに複製され、構成が変更された場合は後で再度複製できます。
次の図は、フェールオーバー対応 DHCP スコープのコンポーネントと設定が 2 台の DHCP サーバー間でどのように共有されるかを示しています。
DHCP フェールオーバー用に構成された DHCP サーバーで使用されるスコープと設定は、DHCP フェールオーバー関係と呼ばれる新しいオブジェクトを使用して共有されます。 DHCP フェールオーバーではいくつかの構成オプションが利用できます。 DHCP サーバー上に存在するすべてのスコープ、または一部のスコープに対してのみフェールオーバーを構成できます。 また、同じフェールオーバー関係にスコープを追加することで、多くのスコープに対して同じ DHCP フェールオーバー設定を簡単に使用することもできます。 フェールオーバー関係は常に 2 つの DHCP サーバー間のみで確立されます。 ただし、サーバーは複数のフェールオーバー関係を持つことができ、各フェールオーバー関係は異なる DHCP サーバーと関係を持つことができます。
重要
フェールオーバー対応スコープに変更が加えられた場合は、両方の DHCP サーバー上のスコープを同期するために、これらの変更をパートナー サーバーに手動で複製する必要があります。 レプリケーションは、レプリケーションが開始された DHCP サーバーからパートナー サーバーにスコープ設定をコピーし、パートナー サーバーの設定を上書きします。 したがって、使用したい DHCP スコープ設定を持つサーバーから常にレプリケーションを開始することが重要です。
DHCP フェールオーバー仕様
次の仕様が DHCP フェールオーバーに適用されます。
DHCP スコープ:
DHCP スコープで DHCP フェールオーバーを構成して 2 台を超える DHCP サーバーを含めることはできません。
DHCP フェールオーバーは、 DHCPv4 スコープのみをサポートします。 DHCPv6 スコープは、フェールオーバー対応にはできません。
フェールオーバー対応スコープのパラメーターを変更する場合は、これらの設定を手動でパートナー DHCP サーバーにレプリケートする必要があります。
スコープ設定のレプリケーションは、いずれかの DHCP サーバーからフェールオーバー パートナー サーバーに開始できます。
DHCP クライアント/サーバー:
DHCP クライアントは、直接または DHCP リレーを使用して、両方の DHCP フェールオーバー パートナー サーバーと通信できる必要があります。
DHCP フェールオーバーが有効になっている場合、DHCP クライアント リースは、最初に発行したサーバーとは別のサーバーによって更新できます。
2 つの個別の同期されたクライアント リース データベースは、各 DHCP フェールオーバー パートナー サーバーによって独立して維持されます。
フェールオーバー パートナーとして構成された DHCP サーバーは、異なるサブネットに配置できますが、これは必須ではありません。
クラスター化された DHCP は、DHCP フェールオーバーと組み合わせてサポートされます。 フェールオーバーの目的では、DHCP クラスターは単一の DHCP サーバーとして扱われます。
DHCP フェールオーバーを構成し、DHCP サーバー サービスを一時停止、停止、または再起動することなく設定を変更できます。
DHCP フェールオーバー パートナー:
両方の DHCP フェールオーバー パートナーは、少なくとも Windows Server 2016 を実行している必要があります。
フェールオーバー パートナーとして構成された 2 台の DHCP サーバーは、永続的な TCP/IP 接続を維持しようとします。
フェールオーバー パートナーとして構成された DHCP サーバーは、他のサーバーの DHCP サービスの状態を認識しており、その状態の変化が最小限の遅延で通知されます。
フェールオーバー パートナーとして構成された 2 つの DHCP サーバーが通信できない場合は、同じ IP アドレス リースが 2 つの異なる DHCP クライアントに発行されないように予防措置が講じられます。
DHCP サーバーが、フェールオーバー パートナーとすべての DHCP クライアント情報を正常に同期する前に使用できなくなった場合、DHCP クライアントの DHCP リースの継続性を確保するための予防措置が講じられます。
2 つの個別の同期されたクライアント リース データベースは、各 DHCP フェールオーバー パートナー サーバーによって独立して維持されます。
重要
異なるオペレーティング システム バージョンを持つ DHCP フェールオーバー パートナー サーバー間で設定を複製する場合は、常に設定を変更し、より新しいオペレーティング システム バージョンを持つ DHCP サーバーから複製を開始します。 これにより、設定が両方のフェールオーバー パートナーによって認識され、一貫して複製されるようになります。
DHCP フェールオーバーは、サーバー マネージャーまたは Windows PowerShell を使用して構成できます。 Windows PowerShell の使用に関する詳細は、「Windows PowerShell の DHCP サーバー コマンドレット」を参照してください。 サーバー マネージャーで DHCP を構成する手順については、こちらの「段階的ガイド」を参照してください。
DHCP フェールオーバーおよび IPv6
DHCP は、Internet Protocol version 6 (IPv6) スコープをサポートしません。 IPv6 を使用するネットワーク アダプターは通常、ステートレス IP 自動構成を使用して独自の IPv6 アドレスを決定します。 このモードでは、DHCP サーバーは DHCP オプション構成のみを提供し、リース状態の情報を一切管理しません。 ステートレスな DHCPv6 の高可用性展開は、同一のオプション構成を持つ 2 台のサーバーをセットアップするだけで実現できます。 ステートフルな DHCPv6 展開の場合も、スコープのアドレス使用率は高くならないので、高可用性のソリューションとして分割スコープを利用できます。
DHCP フェールオーバー モード
DHCP フェールオーバー関係を作成するときに使用できる 2 つの DHCP フェールオーバー モードがあります。
ホット スタンバイ モード: このモードは、DHCP サービスに冗長性を提供します。
負荷分散: このモードでは、DHCP クライアント リースを 2 台のサーバーに割り当てます。
必要に応じてホット スタンバイ モードと負荷分散モードを切り替えることができますが、1 つの DHCP スコープで一度に使用できるモードは 1 つだけです。 複数のフェールオーバー関係を構成する場合は、同じ DHCP サーバーで両方のモードを使用することもできます。 ネットワークの物理アーキテクチャに基づいてデプロイをカスタマイズします。
ホット スタンバイ モード
ホット スタンバイ モードでは、2 台のサーバーはフェールオーバー リレーションシップで動作して、アクティブなサーバーがスコープまたはサブネット内のすべてのクライアントに対して IP アドレスおよび構成情報をリースします。 パートナー サーバーはスタンバイ ロールを引き受け、アクティブ サーバーが使用できなくなった場合にのみ DHCP クライアントにリースを発行する責任があります。 ホット スタンバイ モードは、アクティブ サーバーが使用できない場合にのみフェールオーバー パートナーを一時的に使用するシナリオに最適です。
フェールオーバー関係のコンテキストでは、サーバーはアクティブまたはスタンバイになります。 たとえば、特定の関係に対してアクティブの役割を持つサーバーは、別の関係に対してはスタンバイ サーバーになることができます。 デフォルトでは、フェールオーバー関係を作成するために使用されるサーバーはアクティブ サーバーですが、これは必須ではありません。
ホット スタンバイを選択する場合は、アクティブ サーバーが応答しない場合にスタンバイ サーバーで使用するために予約されているアクティブ サーバー上の IP アドレスの割合も構成する必要があります。 デフォルトでは、この予約率は 5% です。
予約率は新しい DHCP リースに使用されます。 DHCP クライアントが、アクティブ サーバーに接続できないスタンバイ サーバーとの DHCP リースを更新しようとすると、DHCP クライアントに以前割り当てられたのと同じ IP アドレスが更新されます。 このような状況では、全スコープのリース期間ではなく、最大クライアント リード タイム (MCLT) 期間にわたって一時リースが付与されます。
MCLT の有効期限が切れる前に、スタンバイ サーバーが利用可能なすべての予約率リースを新しい DHCP クライアントに発行すると、スタンバイ サーバーは新しい DHCP リースの発行を拒否し、既存のリースの更新を継続します。 MCLT の有効期限が切れると、スタンバイ サーバーは新しい DHCP リースに使用可能な IP アドレス プール全体を使用できるようになります。 サーバーがまだ通信中断状態にある場合、新しい DHCP リースに使用可能な IP アドレス プール全体は使用されません。
ホット スタンバイ モードでは、通常、中央オフィスまたはデータ センターのサーバーがスタンバイ バックアップ サーバーとして機能します。 このサーバーは、DHCP クライアントに直接サービスを提供するリモート サイトのローカル DHCP サーバーに冗長性を提供します。 このようなデプロイでは、スタンバイ サーバーは、ローカル DHCP サーバーが利用できなくなった場合にのみクライアントにサービスを提供する必要があります。
負荷分散モード
負荷分散モードは、デプロイのデフォルト モードです。 このモードでは、 2 台の DHCP サーバーが同時に、特定のサブネット上のクライアントに IP アドレスとオプションを提供します。 DHCP クライアント要求は、2 台の DHCP サーバー間で負荷分散され、共有されます。 2 台のサーバー間のデフォルトの負荷分散比率は 50:50 ですが、0% から 100% までの任意の比率にカスタマイズできます。
負荷分散のメカニズムは、RFC 3074 で定義され当て折り、ハッシュは、各 DHCP クライアント リクエストに含まれる MAC アドレスから計算されます。 設定された負荷分散率に基づいて、ハッシュ値の範囲 (ハッシュ バケットとも呼ばれます) が各 DHCP サーバーに割り当てられます。 サーバーは、割り当てられたハッシュ バケットに基づいて、クライアントに応答するように指定されているかどうかを判断します。
負荷分散モードでは、DHCP サーバーがフェールオーバー パートナーとの接続を失うと、すべての DHCP クライアントにリースを付与し始めます。 フェールオーバー パートナーに割り当てられている DHCP クライアントからリース更新要求を受信すると、MCLT の期間中、同じ IP アドレス リースを一時的に更新します。 以前にリースが割り当てられていなかったクライアントから要求を受信した場合、空き IP アドレス プールが使い果たされるまで、空き IP アドレス プールから新しいリースを付与し、その後、フェールオーバー パートナーの空き IP アドレス プールの使用を開始します。 DHCP サーバーがパートナー ダウン状態になった場合、MCLT 期間を待ち、その後 IP アドレス プールの 100% の責任を引き継ぎます。
負荷分散モードの動作は、フェールオーバー リレーションシップにある両方のサーバーが同じ物理サイトにある展開に最適です。 2 台のサーバーは、管理者が構成した負荷分散率に基づいて、DHCP クライアントの要求に応答します。
DHCP フェールオーバーおよび Windows フェールオーバー クラスタリング
DHCP フェールオーバーは、次の構成のクラスター化された DHCP でサポートされます。
単一の DHCP サーバーは、DHCP フェールオーバー クラスターとフェールオーバー関係を持つことができます。
DHCP フェールオーバー クラスターは、別の DHCP フェールオーバー クラスターとフェールオーバー関係を持つことができます。
どちらの場合も、クラスター ノードの名前または IP アドレスではなく、クラスターの名前または IP アドレスを使用するように DHCP フェールオーバーを構成する必要があります。 個々のクラスター ノードがフェールオーバー パートナーとして構成されている場合、DHCP サーバー サービスがクラスター内の別のノードに移動すると、プライマリ サーバーは通信中断状態になります。
重要
共有シークレットを使用する場合は、共有シークレットをすべてのクラスター ノードに手動で複製する必要があります。 Set-DhcpServerv4Failover の PowerShell コマンドレットを使用すると、アクティブなクラスタノードで共有シークレットを複製できます。
DHCP フェールオーバーおよび DNS 動的更新
DHCP サーバーがクライアント コンピュータに代わって DNS 動的更新を実行するように構成されている場合、DHCP フェールオーバー関係にある両方の DHCP サーバーは同じ DNS 資格情報を使用して DNS レコードを更新する必要があります。 フェールオーバー パートナーが別の資格情報を使用して DNS リソース レコードを更新しようとすると、この更新は失敗します。
次の手順では、クライアント コンピューターが別の DHCP サーバーを使用している場合に DNS 動的更新が失敗する可能性について説明します。
Windows DHCP サーバーは、DHCP クライアントに代わって動的更新を実行します。
DHCP サーバーはクライアントの DNS 名を作成し、その名前の所有者になります。
これで、DHCP サーバー自体のみがクライアントの名前の DNS レコードを更新できるようになりました。
元のサーバーに障害が発生すると、2 番目のバックアップ DHCP サーバーがオンラインになります。2 番目のサーバーは名前の所有者ではないため、クライアント名を更新できません。
このシナリオの詳細については、「DNS レコードの所有権および DnsUpdateProxy グループ」を参照してください。
デプロイに関する考慮事項
DHCP フェールオーバーをデプロイする前に、次の点を考慮します。
時刻同期
DHCP フェールオーバーが正しく機能するには、フェールオーバー リレーションシップの 2 台のサーバー間で時刻の同期が保たれている必要があります。 時刻の同期は、ネットワーク タイム プロトコル (NTP) か、NTP と同様のメカニズムを展開して管理できます。 フェールオーバーの構成ウィザードを実行すると、フェールオーバー用に構成されるサーバーでの現在時刻が比較されます。 サーバー間の時間差が 1 分を超える場合、フェールオーバー セットアップ プロセスは重大なエラーで停止し、サーバーの時間を同期するように要求します。
各フェールオーバー プロトコル メッセージには、ソース サーバーがメッセージを送信した時点の協定世界時 (UTC) が入力される [時間] フィールドが含まれています。 各メッセージの場合、受信サーバーはパケット内の [タイムスタンプ] フィールドと受信サーバーの時刻との間の時間差を確認します。 この時間差が 1 分を超えると、受信サーバーは 2 つのサーバーの時間が同期されていないことを示す重大なイベントを記録します。
ポリシー ベースの割り当て
Windows Server には、ポリシー ベースの IP アドレス割り当て機能が含まれており、Windows DHCP 管理者は、ベンダー クラス、ユーザー クラス、クライアント ID、MAC アドレスなどのクライアントの特定の属性ごとに DHCP クライアントをグループ化できます。 管理者はこれらの属性に基づいてクライアントをグループ化し、IP アドレス、デフォルト ゲートウェイ、DNS サーバー、その他の DHCP オプションなどのパラメータを特定のクライアント グループに割り当てることができます。 これにより、管理者はエンド ホストに配信される構成パラメーターをより詳細に制御できるようになります。 この機能により、単一のスコープ内に複数の IP アドレス範囲の概念が導入されます。 これに対応するために、負荷共有モードでの DHCP フェールオーバー アドレス配信は、IP アドレス範囲ごとに実行されます。
Windows ファイアウォール
DHCP フェールオーバーは、TCP ポート 647 を使用して、2 つのフェールオーバー パートナー サーバー間のフェールオーバー メッセージをリッスンします。 Windows ファイアウォールによって許可されるトラフィックの場合、次の受信および送信ファイアウォール ルールが追加され、DHCP サーバー ロールがインストールされます。
Microsoft-Windows-DHCP-フェイルオーバー-TCP-In
Microsoft-Windows-DHCP-フェイルオーバー-TCP-Out
リレー エージェント
最初の DHCPDISCOVER メッセージは、DHCP クライアントによって、それらが属するサブネット上でブロードキャストされます。 通常、ルーターはブロードキャスト トラフィックを転送しないため、DHCP サーバーが同じサブネット上にない場合は、DHCP クライアントが DHCP サーバーと通信できるようにするメカニズムが必要です。 リレー エージェント (通常はルーター上に提供) は、この機能を実行するように設計されており、異なるサブネット上のクライアントとサーバー間で DHCP および BOOTP メッセージを中継します。 リレー エージェントは通常、ネットワーク デバイス上で構成されますが、リモート アクセス ロールがインストールされた Windows Server 上で DHCP リレーを構成することもできます。 詳細については、「DHCP リレー エージェント」を参照してください。
DHCP リレーがネットワーク デバイスで構成されている場合は、ベンダーのドキュメントで詳細をご確認ください。
helper-address コマンドは、ネットワーク デバイス上の DHCP リレーを構成するためによく使用されます (例: ip helper-address 10.0.1.1
)。
DHCP フェールオーバーを展開する場合、DHCP クライアントは常にプライマリ DHCP サーバーとフェールオーバー パートナー サーバーの両方と通信できる必要があるため、単一の DHCP リレー アドレスでは不十分な場合があります。 両方の DHCP サーバーが DHCP クライアントとは異なるサブネット上にある場合は、少なくとも 2 つの DHCP リレー エージェントが必要です。 例: ip helper-address 10.0.1.1
, ip helper-address 10.0.1.2
。
この例では、両方の DHCP サーバーは同じサブネット (10.0.1.0/24) 上にあります。 プライマリ DHCP サーバーの IP アドレスは 10.0.1.1 で、フェールオーバー パートナー サーバーの IP アドレスは 10.0.1.2 です。 両方の DHCP サーバーが同じサブネット上にある場合は、サブネット ブロードキャスト アドレス (例: 10.0.1.255) を単一の DHCP リレーとして設定することもできます。 DHCP サーバーが別々のサブネットにある場合、サブネット ブロードキャスト アドレスを単一の DHCP リレーとして使用することはできません。
リレー エージェントを複製する
Virtual Router Redundancy Protocol (VRRP) は、ネットワーク デバイスの冗長性を有効にするために使用される別のフェールオーバー プロトコルです。 VRRP の例として、Cisco 独自の VRRP である Hot Standby Router Protocol (HSRP) が挙げられます。 1 つ以上の DHCP リレーが設定されているネットワーク デバイスで VRRP/HSRP が設定されている場合、同じ DHCP フェールオーバー サーバーに重複した DHCP リレー メッセージが送信される場合があります。
DHCP フェールオーバー用に構成された単一の DHCP サーバーが重複したリース要求を受信すると、クライアントのリース期間に一貫性がなくなり、クライアントが他のクライアントに属する IP アドレスをリースする場合があります。 ルーターの冗長プロトコルで DHCP リレーをサポートするために特定の構成が必要かどうかを確認するには、ベンダーのドキュメントを参照してください。 たとえば、Cisco は仮想ルータ グループを使用して HSRP プロトコルの DHCP リレー サポートを提供します。