問題の本質は、大規模な組織がdhcp-relayと構成を迅速に同期する機能を備えたフェールセーフDHCPサーバーを必要としていたことです。 主なポイントは、私が見つけたほとんどのマニュアルでは、フェイルオーバーまたはdhcp-relayオプションのいずれかが考慮されており、構成同期の便利な方法とともに両方のオプションが考慮されている場所はないということです。 突然、私の記事は少し役立ちますか?
問題の本質は次のとおりです。大企業、1000台以上のコンピューターのネットワーク、単一のVLAN、2つのドメインコントローラーがあり、ネットワークにdhcpがありません(!)。 以前の管理者はこれを行う方法を知っていましたが、これは別の話であり、Habrの話ではありません。
最初のタスクがネットワークの近代化、つまりvlanでのセグメンテーションとdhcpの導入であることは明らかです。 タスクを分析するとき、次の要件が作成されました。
- 耐障害性-鉄からの独立性
- ネットワークセグメンテーションの計画を考えると、サーバーはどのVLANをどのアドレッシングに提供するかを知っている必要があります。
- 「レプリケーション」-dhcpの「バインディング」をMACで広く使用する予定の場合、これらの「バインディング」が常に機能する必要があります(ネットワークプリンタなど)
- 逆引きDNSゾーンの自動メンテナンス
さまざまな記事やマニュアルの長い考えや読み方については説明しませんが、最終的な作業ソリューションを示します。
- 2つの異なるハイパーバイザー上の2つの仮想マシン
- マシンではcentos7およびisc-dhcpdです
- DHCPで、フェールオーバー、動的ゾーン更新、およびオプション82認識が構成されます
- 要求の送信元であるVLANのラベルが付いたオプション82、サーバーにはすべてのVLANが解決されるL3 +中央スイッチが与えられます
- ほとんどの管理者はlinuxとvimの指向が不十分であるため、静的バインディングと構成複製メカニズムを追加するプロセスの自動化が必要です。
ネットワーク図:

私たちが持っています:
- DNSサーバーが構成されたDC0およびDC1、10.1.2.2および10.1.2.3
- DHCP0およびDHCP1、10.1.2.4および10.1.2.14
- ユーザーVLAN:10、11、20、21
- ドメインcorp.example.ru
- 追加のDNSゾーン(Linuxサーバー用) -example.lan
- dhcpオプション82をサポートするL3ベースのルーター。 すべてのVLANに、OSPF経由で接続された最初のIPアドレスがあります
いくつかの事柄は非常に些細であり、インターネット上で複数回説明されているので、私はそれらを詳細に説明しません。
- まず、Windows DNSでは、すべてのVLANに対してすべての逆ゾーンを作成し、ゾーンの安全でない更新を許可します。
- 仮想マシンに最小centos 7をインストールし、dhcpパッケージをインストールします。
- 管理対象スイッチのインターフェースでDHCPリレーを構成します。 同時に、ストリング「VLAN10」などがcircuit-idとして来ます。
- /etc/dhcp/dhcpd.confの編集
# DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # # ddns-update-style interim; # ddns-domainname "corp.example.ru"; # update-static-leases on; # local-address 10.1.2.4; # # , DHCP-relay if exists agent.circuit-id { log ( info, concat( " Accepted DHCP RELAY request for ", binary-to-ascii (10, 8, ".", leased-address), " Network segment: ", option agent.circuit-id, " DHCP Agent: ", option agent.remote-id)); } # this DHCP server to be declared valid authoritative; # failover peer "dhcp-failover" { primary; # address 10.1.2.4; # port 519; # peer address 10.1.2.14; # DHCP peer port 520; # DHCP # max-response-delay 30; max-unacked-updates 10; load balance max seconds 3; mclt 1800; split 128; # DHCP # , # "" . auto-partner-down 86400; # @baf28 } # option domain-name "corp.example.ru"; # DNS- option domain-name-servers 10.1.2.2, 10.1.2.3; # DNS-. Windows- option domain-search "example.lan corp.example.ru"; # default-lease-time 604800; # 7 days max-lease-time 2419200; # 4 weeks # default netmask /24 option subnet-mask 255.255.255.0; # Servers vlan - DHCP subnet 10.1.2.0 netmask 255.255.255.0 { } # VLAN' include "/etc/dhcp/dhcpd.d/vlan10.conf"; include "/etc/dhcp/dhcpd.d/vlan11.conf"; include "/etc/dhcp/dhcpd.d/vlan20.conf"; include "/etc/dhcp/dhcpd.d/vlan21.conf";
- 次に、各VLANの構成ファイルを追加します(たとえば/etc/dhcp/dhcpd.d/vlan10.conf )
# zone 10.1.10.in-addr.arpa. { primary 10.1.2.2; secondary 10.1.2.3; } # DHCP-relay class "VLAN10" { match if option agent.circuit-id = "VLAN10"; } # subnet 10.1.10.0 netmask 255.255.255.0 { option routers 10.1.10.1; pool { failover peer "dhcp-failover"; # , failover range 10.1.10.51 10.2.56.254; # allow members of "VLAN10"; # } # === Static hosts # Admin host admin { hardware ethernet 01:23:45:67:89:ab; fixed-address 10.1.10.20; } # Admin's printer host admin { hardware ethernet cd:ef:01:23:45:67; fixed-address 10.1.10.21; } # , # # Insert automatic text above this }
- 2番目のDHCPサーバーについても、同様の構成を作成し、メインファイルでのみ修正します。
failover peer "dhcp-failover" { secondary; # address 10.1.2.14; # port 520; # peer address 10.1.2.4; # DHCP peer port 519; # DHCP # max-response-delay 30; max-unacked-updates 10; load balance max seconds 3; # DHCP # , # "" . auto-partner-down 86400; # @baf28 }
2台のdhcpサーバーがあり、そのうちの1台が切断された場合、2台目のサーバーが機能を取得し、両方がdhcpリレーエージェントからの要求に応答し、dhcpオプション82の回線ID文字列(この場合、VLAN名)に基づいて各セグメントを提供その範囲。
サーバーを複製するには、「/ etc / dhcp / dhcpd.d /」ディレクトリ内のファイルを同期し、その後dhcpデーモンを再起動するスクリプトを記述するだけで十分です。 ひざと非常に急いで手に書かれた非常に「松葉杖」のコードのため、スクリプト自体を引用しません。 csync2やrsyncなどのユーティリティを使用して、構成を同期することができます。
静的バインディングを追加するために、別のスクリプトも作成されましたが、同じ理由でここで引用することを恥ずかしく思います。 誰でも自分でこれを楽しんだり、静的バインディング「ハンドル」を追加したりできます。
唯一の「しかし」-新しいVLANを追加するとき、メイン構成ファイル「/etc/dhcp/dhcpd.conf」をハンドルで編集する必要があります。特定のファイルのみにディレクトリ全体を含めることはできませんでした。
おそらく、これは二重インクルードによってバイパスできます。最初にメインファイルで補助に、補助で特定のVLANファイルに、次に補助を同期しますが、気にしませんでした。
繰り返しますが、私が説明した情報のほとんどはインターネット上に大量にありますが、フェールオーバー、dhcp-relayを組み合わせて同期に便利にする方法はどこにもありません。 コメントや提案を待っています