2010-06-04

OpenBSDでdhcpサーバを冗長化する

DHCPDの冗長構成

OpenBSDのdhcpd(8)にSYNCHRONISATIONという章がある。どうやら、dhcpdで払い出したアドレスを複数のホスト間でリアルタイムに同期できるらしい。この記述を参考にして冗長構成をとるように設定する。

/etc/dhcpd.conf

全てのホストで同一のdhcpd.confを保持する必要がある。

/etc/rc.conf と dhcpd の起動オプション

dhcpd の起動オプションに -Y と -y という同期のためのオプションが用意されている。それぞれの意味は下記のとおり。

-Y 同期メッセージを受信するためのNIC、もしくはIPv4アドレスを記述する。コロンで区切ればマルチキャスト用TTLを指定できる。TTLを記述していない場合はデフォルト値の1が適用される。 -y 同期メッセージを送信するためのNIC、もしくはIPv4アドレスを記述する。コロンで区切ればマルチキャスト用TTLを指定できる。TTLを記述していない場合はデフォルト値の1が適用される。

したがって、dhcpdの同期用NICがfxp0の場合は下記のようになる。

dhcpd -Y fxp0 -y fxp0

また、上記の場合の /etc/rc.conf の記述は下記のとおり dhcpd_flag="-Y fxp0 -y fxp0"

/var/db/dhcpd.key

/var/db/dhcpd.key が存在する場合、ファイルのチェックサムの計算や同期メッセージの認証を行なう。このファイルは全てのホストで共有する必要がある。

dhcpd.key の作成例は下記のとおり。 # dd if=/dev/arandom of=/var/db/dhcpd.key bs=2048 count=1