U*X ライク OS 用の DHCP サーバはいくつか存在します。 商用のものもフリーのものもあります。フリーの DHCP サーバの中で よく使われているものは Paul Vixie の ISC DHCPd でしょう。 現在の最新版は 1.0 (ほとんどのユーザはこちらが良いでしょう) ですが、 2.0 もβテストの段階です。これらは ftp://ftp.isc.org/isc/dhcp/ から入手できます。
ダウンロードして展開し、配布ソースのディレクトリに cd して、 以下を実行します。
./configure
設定にはしばらく時間がかかるでしょう。終わったら、
make
続いて
make install
します。
インストールが終わったら、 ifconfig -a と入力してください。 以下のような表示が出るはずです。
eth0 Link encap:10Mbps Ethernet HWaddr 00:C0:4F:D3:C4:62
inet addr:183.217.19.43 Bcast:183.217.19.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2875542 errors:0 dropped:0 overruns:0
TX packets:218647 errors:0 dropped:0 overruns:0
Interrupt:11 Base address:0x210
MULTICAST という文字が現れない場合はカーネルを設定しなおして multicast のサポートを追加する必要があります。ほとんどのシステムでは これは不要でしょう。
次に行うことは 255.255.255.255 への経路の追加です。 DHCPd の README から引用します。
"dhcpd を細かいことにうるさい DHCP クライアント (Windows 95 のこと) と正しく動作させるには、dhcpd は destination address が 255.255.255.255 の IP パケットを送ることができるように なっている必要があります。残念ながら Linux は 255.255.255.255 をローカルなサブネットのブロードキャスト (ここでは 192.5.5.223) に変換してしまうのです。 この結果は DHCP プロトコルに違反することになります。 たいていの DHCP クライアントはこれに気がつきませんが、 気がつくもの (Microsoft の DHCP クライアント全部) もあります。 後者の様なクライアントはサーバからの DHCPOFFER メッセージを 受信する事ができないのです。"
次のように入力しましょう。
route add -host 255.255.255.255 dev eth0
もしも
"255.255.255.255: Unknown host"
のようなメッセージが出力された場合は、 次の様なエントリを /etc/hosts ファイルに追加する必要があります。
255.255.255.255 all-ones
追加したら
route add -host all-ones dev eth0
あるいは
route add -net 255.255.255.0 dev eth0
としてください。もちろん eth0 が使おうとしている ネットワークデバイス名です。異なる場合は適宜変更してください。
ここで DHCPd を設定しなければなりません。 /etc/dhcpd.conf を作成します。
一番普通なのは IP アドレスをランダムに割り当てることでしょう。 これには以下のような設定を用います。
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
こうすると DHCP サーバがクライアントに与える IP アドレスは 192.168.1.10-192.168.1.100 または 192.168.1.150-192.168.1.200 の範囲となります。特にクライアントからの時間枠の要求がなければ、 600 秒の間 IP アドレスが貸し出されます。要求があった場合に 最大限許される貸し出し時間は 7200 秒です。またサーバは クライアントに 255.255.255.0 をサブネットマスクとして用い、 192.168.1.255 をブロードキャストアドレスとして用い、 192.168.1.254 をゲートウェイとして用い、 192.168.1.1 か 192.168.1.2 を DNS サーバとして用いるように 「アドバイス」します。
特定の IP アドレスをクライアントの Ethernet アドレスに応じて 割り当てることもできます。
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
このようにすると IP アドレス 192.168.1.222 が Ethernet アドレス 08:00:2b:4c:59:23 を持ったクライアントに 割り当てられます。
これらを適当に混ぜる事もできます。つまり特定のクライアントには スタティックな IP アドレスを与え (サーバなど)、他には 動的な IP を与える (ラップトップユーザなど) ことができます。 他にもたくさんのオプションがあります。 wins サーバのアドレスを 与えたり、タイムサーバを教えたり、などです。これらが必要な 場合は dhcpd.conf のマニュアルページを読んでください。
いよいよ DHCP サーバを起動できます。単に以下のように入力 するだけです (あるいはブートアップスクリプトに書きます)。
/usr/sbin/dhcpd
ちゃんと動作しているかどうかを確かめたい場合は、 まずデバッグモードをオンにしてサーバをフォアグラウンドで 実行してみましょう。以下のようにします。
/usr/sbin/dhcpd -d -f
そしてどれかクライアントを一つブートしてみて、 サーバのコンソールを確認しましょう。 たくさんのデバッグメッセージが現れるはずです。