スクリプトからのISC DHCPd 4.xの管理

1つのプロバイダーのネットワークでIP発行の管理を実装し、アカウンティングシステムやその他の「トリック」とリンクさせる必要がありました。 DHCPサーバーが9番目のUbuntuサーバー上にISC DHCP 4.xを立てていたため。



DHCPdの場合、以下を実装する必要がありました。

  1. 新しい静的予約の追加(ポピーまたはスイッチポート-オプション82による)、
  2. 静的な予約に動的に(つまり、空きIPのプールから)発行されたIPを持つユーザーの「バインド」
  3. 静的予約の削除
  4. 予約の有効期限前の動的なlizの削除
  5. サブネット、ポピーアドレス、空き時間情報アドレスに関するさまざまなレポート


実装プロセス中に収集した情報を共有したいと思います。これは、つまずいた落とし穴、回避方法、回避しなかった方法です。 おそらく、誰かが数時間の時間を節約するでしょう。

すぐに予約してください:この投稿は決して究極の真実であり、唯一の正しい決定の指示であり、実際にあらゆる指示です。 これは単なる作業情報のセットです。 特定の問題を解決する方法と同様に、それを使用するかしないか、それを信じるかどうか、そして誰もが自分の状況の文脈で自分で決定できるようにします。 私のソリューションは、私の場合は便利でしたが、それ以上ではありませんでした。 だから:

  1. ISC DHCPdはサポートしておらず、近い将来、SIGHUPまたはその他のシグナルによる構成の更新をサポートしません。 彼らの保証によると、これは「あまりにも深刻な作業が必要であり、彼らには時間がなく、予見される時間がない」
  2. すべての静的構成は、dhcpd.conf、すべての動的dhcpd.leasesに保存されます。 最初に書き込まれたリースで、ディスク上でフラッシュが行われ、その後、応答がクライアントに送信されます。 一緒に、これらの2つのファイルには必要な情報がすべて含まれているため、サーバーを再起動すると、サーバーは以前とまったく同じ状態に戻ります。
  3. dhcpdが構成に書き込まれ、バリエーション、競合(MACによる静的IP予約など)を含まない何かを行う場合-dhcpd.leasesには何も書き込まれません。
  4. その結果、特定のIPが最後にMACに静的に接続されたときにトレースする唯一の方法:ログ分析:dhcpd.leasesにはこの情報が含まれず、サーバーは構成にも何も書き込みません。
  5. dhcpdには独自のAPIがあり、これを使用して、理論的にはリアルタイムでサーバーを管理できます。 また、このAPIを使用するomshellコマンドラインユーティリティ。 これにより、理論的には、ダウンタイムなしでサーバーを制御できます。 さらに、コマンドのシーケンスをSTDINに送信する機能をサポートしているため、多くのタスクに非常に便利なツールになっています。 すべてのデータはdhcp.leasesに書き込まれ、構成には影響しません。
  6. omshellでは、何かのリストを取得する方法はありません。 すべての作業には、1つの一意のオブジェクトが付属しています。 リストを取得するには、設定ファイル/リースを解析する必要があります。
  7. omshellは、既存のリースの削除をサポートしていません、と「実装されていません」と言います。 さらに、テストの1つで、dhcp.leasesファイルが破損し(内部に奇妙なゴミが出現しました)、このためdhcpdは再起動しませんでした。 状況を再現することはできませんでしたが、リスクを冒さないことを決定し、omshellを放置しました。
  8. 4番目のバージョンでは、複数の共有サブネットからのアドレスの動的発行を制御する方法はありません。 タイプオプションは、メインネットワークにすべてのクライアントのパブリックアドレスと、現在メインネットワークに空きアドレスが残っていない場合にのみ、他のNATのプライベートアドレスを提供することです。 dhcpdの便利な順序で両方から発行されます。
  9. IP-macバインディングは、このIPが要求され、IPが空いている場合にのみ、このIPが与えられることを意味します。 しかし同時に、このIPは、現在無料の場合、非静的に登録されたクライアントにIPを発行することができ、十分な空きアドレスがないプールにある誰かに発行できます。
  10. Webからisc dhcd 4.xを管理し、多かれ少なかれ拡張可能な既製の明確に機能するツールを見つけることができませんでした。 多かれ少なかれ効率的であるのは、バージョン3用です。
  11. dhcpd.confとdhcpd.leasesを保存するためのバックエンドとして、完全に実装されたSQL接続プロジェクトは見つかりませんでした。 私が見たすべてのプロジェクトは、構成を再作成し、dhcpd.leasesを読み書きし、dhcpdを再起動します


さらに、私の場合、いくつかのサブタスクを解決しました。




All Articles