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
そしてどれかクライアントを一つブートしてみて、 サーバのコンソールを確認しましょう。 たくさんのデバッグメッセージが現れるはずです。