ServerフリーのDHCPサーバとして利用される事もあるソフトウェア。DNSサーバのBINDで有名なISCが開発を行っている。DHCPの方が良いと思われる。2.65以上が必要になる。事前に最新版のautoconfを導入しておく。v4.4.1以下では下記のビルドエラーが発生する。configureスクリプトの"-Werror"を削除する事でもビルドを通す事が可能だが、ソース改変によって根本的なエラー対策が可能なのでソース改変を行う。1参考情報を元に、"dhcp-4.4.1"をオリジナル、"dhcp_4.4.1_gcc"を修正後としてディレクトリパッチを作成。実際には3ファイルのみ修正する簡単な物なので、パッチ適用が面倒ならファイル毎に書き換える。ビルド・インストール事前にソースコードをダウンロードしておく。今回は稼働テストなので出来る限り多くのオプションを付与しておく。DHCPのビルドに失敗するので、autoreconfを実行しautomakeの参照先を書き換えておく。DISCOVERを待ち受けるインターフェースを指定する。起動スクリプトの作成ソースコードには起動スクリプトが同梱されていないので自作する必要がある。今回は従来通りのinitスクリプトで起動を行う。サービスの実行ユーザ設定などは、上記のsysconfigファイルで行い、initスクリプトはプロセスの起動・停止に特化したスクリプトとする。実行ユーザの準備やiptablesのポート開放を設定する。DHCPサーバ宛はUDP:67、DHCPクライアント宛はUDP:68を使う点に注意。下記の内容は例なので、自環境に合わせてチューニングした上で設定を行う。DHCP設定ファイルクライアントセグメントの外にDHCPサーバを設置し、複数セグメントのDHCPサーバを集約管理する時の設定。DHCPサーバ設置セグメントにDHCPでIPアドレスを払い出さない場合でも、サーバ自体が所属するサブネットについて設定を入れないと、プログラムが起動しなくなる点に注意する。下記の設定内容では、サーバセグメントにはDHCPで払い出しを行わないが、サーバを起動させる為に、何も払い出さない設定を追加してある。DISCOVERがDHCPサーバまで届かなくなるので、クライアントのデフォルトルートとなるルータに、DHCPリレー設定を入れておく。DHCPサーバの2重化(failover)の設定Aの内容でDHCPサーバを冗長構成にした場合の設定サンプル。今回はDHCPサーバのFailover機能を使って、lease情報の共有を行い冗長化をする。DISCOVERが届くように設定する必要がある。CISCOルータの場合、1つのインターフェースに複数のリレー先を設定出来るが、1812J-IOSv15でテストした所、設定したリレー先全てにDISCOVERが転送される事が確認出来た。払い出し範囲を分割する事で冗長化している場合、もしかしたら不具合が起きるかもしれない。#自サーバのFailoverプロトコル待ち受けポート。プロトコルはTCPのみ。#ピアサーバのFailoverプロトコル待ち受けポート。プロトコルはTCPのみ。#Primary限定。#自サーバIPアドレス。#ピアサーバのIPアドレス。excerptIPv6環境用のDHCPv6を構成する為の設定サンプル。最近はRAによるEUI-64生成が多いが、DNSサーバなどの付加情報を付与するにはDHCPv6が必要となる。下記コンフィグではRAによるIPv6アドレス配布を前提としている。dhcpdはオプション無しで起動するとIPv4動作となる為、DHCPv6用で動かす為に、起動スクリプト内のARGS先頭に"-6"を付与してDHCPv6モードに切り替える。#DNSサーバアドレス。DHCPに実装されていない為、フェールオーバーを用いたDHCPv6サーバ冗長化が出来ない。DHCPでフロントエンドを増やす事が多いが、構成の複雑化がネックとなる。複数台のサーバを構築してもアドレス衝突が発生しなくなり、結果としてDHCPv6サーバの冗長化を行う事が出来る。通常のソースビルドではEUI-64方式でのアドレッシングに対応していない為、ヘッダーを書き換えてEUI-64オプションを有効化した後、ソースをリビルドする必要がある。