ISC DHCPメモ

仕様

IPアドレスの動的割当

  • IPアドレスの割当順は何も担保していない(辞書順などではない)ので、割当順に依存してはならない。
  • 1つの物理セグメント上で複数のサブネットを管理することができる。
    • shared-networkで複数のsubnetを包含する。単一のsubnetもshared-network内に1つだけsubnetがある状態として解釈する。
shared-network {
        subnet x.x.x.x netmask m.m.m.m {}
        subnet x.x.x.x netmask m.m.m.m {}
}

複数DHCPサーバ環境

  • DHCPプロトコルIPアドレスを振るまでの流れは下記の4ステップ。
    1. クライアントからDISCOVERパケットをブロードキャスト
    2. DHCPサーバからOFFERパケットをクライアントへ返す(複数のDHCPサーバからOFFERが送られる可能性がある)
    3. クライアントはOFFERから(通常は最初の)1つを選んで、REQUESTパケットをブロードキャスト(ブロードキャストすることで、採用されなかったDHCPサーバ側が採用されなかった事を認識できるから?)
    4. DHCPサーバからPACK(OKの場合)/PNAK(NGの場合)をクライアントへ返す(PNAKの場合は最初からやり直す)
  • 複数DHCPサーバがいた場合でも、クライアント側が1サーバからのOFFERしか選ばないため2つアドレスが振られることは避けられる。

IPアドレスの衝突防止(IP ADDRESS CONFLICT PREVENTION)

  • dhcpdがリース可能と判断したIPアドレスについて、実際にクライアントに割り当てるまえに ping で応答がないことをチェックする。
    • 1秒以内に応答がなければ衝突していないと判断する。
    • 応答があった場合には使えないアドレス(abandoned IP addresses)としてマークする。
      • 使えないアドレスとしてマークされたものは通常時の割当可能なアドレスの検索の対象からは外される。
      • 通常の検索で割当可能なアドレスがみつからなかった場合、使えないアドレスとしてマークされたものから1つ選ばれ、ping 応答をチェックする。応答が無ければ当該のアドレスを返す。応答があれば、他のマークされたアドレスはチェックせずに、割当不可として振る舞う。

DHCPフェイルオーバー

failover peer "foo" {
         primary; 
         address anthrax.rc.vix.com;
         port 647;
         peer address trantor.rc.vix.com;
         peer port 847;
         max-response-delay 60;
         max-unacked-updates 10;
         mclt 3600;
         split 128;
         load balance max seconds 3;
       }

動的DNS更新(DYNAMIC DNS UPDATES)

  • 方法が2つある。RFC 2136 準拠。
    • ad-hoc DNS update mode
    • interim DHCP-DNS interaction draft update mode
  • ad-hoc方式はdeprecatedで使うべきでない。今後のリリースでサポートしなくなる見込み。
  • ddns-update-style オプションで設定する。
  • DHCPサーバとDNSサーバで共通鍵を持ちセキュリティを確保する。