1つのネットワークに複数のDHCPサーバーを配置できますか?


86

これは、冗長DHCPサーバーに関する正規の質問です。

同じLAN上に複数のDHCPサーバーを配置することはできますか?これを行うことの意味は何ですか?

  1. 複数のDHCPサーバーが利用可能な場合はどうなりますか?クライアントはどのクライアントを使用するかをどのように知るのですか
  2. DHCPサーバーが複数のサブネット\ネットワークセグメントにアドレスを提供する方法を教えてください。
  3. 同じサブネットのアドレスを提供するように複数のDHCPサーバーを構成するにはどうすればよいですか。

1
この質問の背景にある考え方は、より一般的なユーザーを夢中にさせる「複数のDHCPサーバーを使用するにはどうすればよいか」という質問すべてに明確な答えを与えることです。これがうまくいけば、私たちの標準的な答え(の一つになるだろうmeta.serverfault.com/questions/1986/...
ロブ・モイア

2
RTFM?tools.ietf.org/html/draft-ietf-dhc-failover-12#section-5.3(およびrfc 3074)はすでにこの動作を定義しており、Linux dhcpdはそれを実装していますmanpages.ubuntu.com/manpages/precise/en/man5/ …
Dani_l 14

2
@Dani_lは、おそらく質問内の「正規の質問」リンクをたどる必要があります。また、RTFMを行う必要があると伝える前に、ここで質問に対する回答の著者を確認する必要があります。
ロブモアー14

2
マニュアルを読むように言っているのではありません。私は単にマニュアルがあることを指摘するだけです。質問は標準的ですが、該当する場合は、「公式の」手順が存在する場合、その手順への参照を含めるべきだと思います。この場合、IETF / RFCが存在しますが、それは入手可能な限り公式です。
Dani_l

回答:


96

DHCPの基本的な知識と、この回答で選択したDHCPサーバーを構成する方法を前提としていますが、同じネットワーク上の複数のDHCPサーバーについて説明する前に、まずクライアントがIPアドレスを受信する方法を簡単に復習しましょう最も基本的なレベルのDHCPから。

単純なネットワーク上のDHCPは、DORAの原理を使用して機能します。

  • 発見-クライアントは、接続されているローカルネットワークセグメントでメッセージをブロードキャストし、利用可能なDHCPサーバーを発見します。

  • 提供-適切に構成されたDHCPサーバーは、クライアントから要求を受信し、使用可能なアドレスのプールからアドレスを提供します。

  • 要求-クライアントはオファーに応答し、オファーで受信したアドレスを要求します。

  • 確認-サーバーは要求を確認し、アドレスのプールで使用されているアドレスをマークし、アドレスリースの有効期間と必要なその他の情報をクライアントに通知します。

ネットワークセグメント上の任意のデバイスをDHCPサーバーにすることができます。ルーターやドメインコントローラー、またはネットワーク上の他の「特別な」デバイスである必要はありません。

ネットワーク上のデバイスは、最初に、彼らは単にDHCPサーバの要求をブロードキャストします、との申し出を受け入れるIPアドレスを要求したり、リースの最後に到達(またはあなたはそれらのリースがまだ有効である確認するためにそれらを強制する)ときに最初に応答するDHCPサーバー。これは、以下の複数のDHCPサーバーのオプションを検討する際に覚えておくことが重要です。

複数のDHCPサーバーPT 1:複数のサブネットにまたがる。

複数のVLANまたは異なるサブネットに分離された物理ネットワークセグメントがあり、それらすべてのサブネットのデバイスにDHCPサービスを提供する場合、これを行うには2つの方法があります。

  1. それらを分離するルーター/レイヤー3スイッチがBOOTP / DHCPリレーエージェントとして機能できる場合、ネットワークの1つまたは2つの中央部分にすべてのDHCPサーバーを保持し続け、DHCPサーバーを複数の範囲のアドレスをサポートします。これをサポートするには、ルーターまたはレイヤー3スイッチがRFC 1542のセクション4で規定されているBOOTPリレーエージェント仕様をサポートする必要があります

  2. ルーターがRFC 1542 BOOTPリレーエージェントをサポートしていない場合、またはネットワークセグメントの一部が低速リンク上に地理的に分散している場合、各サブネットに1つ以上のDHCPサーバーを配置する必要があります。この「ローカル」DHCPサーバーは、自身のローカルセグメントの要件のみを提供し、他のDHCPサーバーとの相互作用はありません。これが必要な場合は、各DHCPサーバーをスタンドアロンサーバーとして構成し、独自のサブネットのアドレスプールの詳細を設定するだけで、ネットワークの他の部分にある他のDHCPサーバーを心配する必要はありません。これは、同じネットワーク上に複数のDHCPサーバーがある最も基本的な例です。

複数のDHCPサーバーPT 2:同じネットワークセグメントにサービスを提供するDHCPサーバー。

ほとんどの人が「同じネットワーク上の複数のDHCPサーバー」について尋ねるとき、通常求めているのはこれです。複数のサーバー間で負荷を分散するため、または1つのサーバーがオフラインの場合に冗長性を提供するために、同じ範囲のネットワークアドレスをクライアントに発行する複数のDHCPサーバーが必要です。

これは完全に可能ですが、いくつかの考えと計画が必要です。

「ネットワークトラフィック」の観点から、この回答の冒頭で概説したDORAプロセスは、ネットワークセグメントに複数のDHCPサーバーが存在する方法を説明しています。クライアントは単にディスカバリー要求をブロードキャストし、オファーで応答する最初のDHCPサーバーが「勝者」です。

サーバーの観点から見ると、各サーバーには、アドレススコープがわかっているクライアントに発行できるアドレスのプールがあります。同じサブネットにサービスを提供するDHCPサーバーは、単一の「共有」スコープを持つべきではなく、「スプリット」スコープを持つべきです。

つまり、192.168.1.100から192.168.1.200までのクライアントに発行するDHCPアドレスの範囲がある場合、両方のサーバーはその範囲の別々の部分を提供するように構成する必要があります。そのため、最初のサーバーは192.168.1.100から192.168.1.150の場合、2番目のサーバーは192.168.1.151から192.168.1.200を発行します。

除外を示すスプリットDHCPスコープ

MicrosoftのDHCPの最近の実装には、このようなスコープを簡単に分割するためのウィザードがあり、Microsoft DHCP実装を使用していない場合でも検討する価値があるTechnetの記事で説明されています。ここで非常にうまく、この答えはすでに十分に長いです。

スコープの分割-ベストプラクティス

ベストプラクティスとして言及されることの1つは、DHCPスコープを分割するための80/20ルールです。つまり、1つのサーバーがそのスコープ内のアドレスの80%を処理し、他のDHCPサーバーは事実上「予約済み」ですアドレスの20%を提供します。

アドレス80/20の分割の背後にある考え方は、使用可能なアドレスの80%がサブネット上で必要なすべてのアドレスに適切であり、DHCPリースは通常数日間発行されるためです。したがって、メインのDHCPサーバーが数時間ダウンした場合、そのサブネット上のマシンの20%以上がダウンタイム中にアドレスを更新する必要がなくなり、20%のアドレスプールで十分になります。

これは依然として妥当なアドバイスですが、次の2つのことを前提としています。

  1. 「メイン」DHCPサーバーの問題を迅速に解決して、予備のDHCPサーバー上の小さなアドレスプールを使い果たすことを回避できること。
  2. 負荷分散に関心がないこと。

最近(私の例からわかるように)50/50分割を好む傾向がありますが、これは上記のポイントに対するより現実的な答えだと思います。

DHCPサーバーでスコープを作成するときに考慮すべきもう1つのことは、各サーバーに完全なスコープを構成し、他のDHCPサーバーによって指定された範囲を除外することです。これには、各DHCPサーバーの完全なサブネットのDHCP情報を「自己文書化」するという利点があります。これにより、何が起こっているかを理解しようとする他のユーザーの明確性が向上し、DHCPサーバーの1つがオフラインになった場合にも、しばらくすると、一時的に他のサーバーの除外範囲を再構成して、スラックを検出できるようにすることができます。

これらのアイデアを組み合わせる

最後に、上記の原則を組み合わせることができることを覚えておく価値があります。すべてのDHCPサーバーを1つ以上の「中央サーバー」VLANに配置し、すべてのルーターでBOOTPリレーエージェントを使用して、非常に大きくセグメント化された集中DHCPサービスへのネットワーク(これは私がしていることです。以下を参照)。または、ネットワーク全体にDHCPサーバーを分散させることができます。ローカルサブネットに「メイン」DHCPサーバーがあり、バックアップとして少量のアドレスを提供する「近接」ネットワークセグメントに「予備」DHCPサーバーがあります。互いに80/20のアドレス範囲を提供するように構成された、独自のネットワークセグメント内の2つのDHCPサーバー。最も賢明な選択は、物理ネットワークと論理ネットワークが相互にどのようにマッピングされるかに依存します。

分割スコープを複数のサブネットに提供するDHCPサーバー


3
スコープを分割する場合:DHCP予約は両方に設定する必要があることに注意してください。頻繁に更新する必要がある場合、それらの同期を維持するのは非常に面倒です。
トニー

4
メインのDHCPサーバーが実行されている限り、予備のDHCPサーバーがヒットしないようにするための手法について詳しく説明できますか?私が読むことができるものから、どちらかのサーバーから応答を受け取る確率が等しい場合、予備サーバーはリースの合計数が予備プールのサイズの2倍を超えるとすぐに統計的にアドレスを使い果たします。これはおそらく、メインのDHCPサーバーがダウンしているときに、新しいクライアントにとって予備サーバーを役に立たないものにします。
ニールズB. 14

3
@NielsB。80/20スプリットのようなことをしている場合は、予備サーバーの応答に遅延を設定できます(blogs.technet.com/b/teamdhcp/archive/2009/01/22/…)。私は自分で50/50スプリットを使用するので、これを気にしませんが、うまくいきます。
ロブモワー14

13

数年前にこのアプローチを採用し、中小規模(500ユーザー)のネットワークに大きなメリットをもたらしました。DHCPは単一障害点ではなくなりました。MACアドレスとIPアドレスを永続的に関連付けることにより、両方のDHCPサーバーが各DHCP要求に対して同じ応答を行うようにしました。また、すべてのネットワーク資産のIPアドレスを知ることでネットワーク管理が簡素化され、DNSが同じデータベースで実行できるようになりました。システムはInternet Software CorporationのBINDおよびDNSを使用し、関連するスクリプトはhttps://web.archive.org/web/20121031051901/http://www.pearbright.com/index.php/download/25-からダウンロードできます。 dns-dhcp-download

代替手段は、真のISC DHCPDフェイルオーバーを使用することです:https : //kb.isc.org/article/AA-00502/0/A-Basic-Guide-to-Configuring-DHCP-Failover.html


2
OPは、この質問に対する説明的な回答を特に求めました。答えを修正して、それを拡張することもできます。
ブレントパブスト

3
ちなみに、この回答は短く、標準的な質問と回答のセットでこれ以上詳細を下げることは決してありませんが、DHCP冗長性を実行するわずかに異なる方法に言及しているので、かなり良いと思いました。
ロブ・モイア

1
@DJ Pon3私は同意します:私はあなたの大きなマルチサイトDHCP(ただしVLANは少ない)と同様のセットアップを実行し、それらのVLANの3/4に対してPeter Talbotと同じアプローチを使用します。
トニー

1
リンクは現在壊れています:(
セルゲイヴラソフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.