dhcpd(8) dhcpd(8)
名前
dhcpd - Dynamic Host Configuration Protocol (動的ホスト設定プロトコル)
サーバ
書式
dhcpd [ -p port ] [ -f ] [ -d ] [ -q ] [ -cf config-file ] [ -lf lease-
file ] [ if0 [ ...ifN ] ]
説明
Internet Software Consortium DHCP サーバである dhcpd は、 Dynamic Host
Configuration Protocol (DHCP) と Internet Bootstrap Protocol (BOOTP) と
を 実装したものである。 DHCP を用いると、 TCP/IP ネットワーク上のホスト
は IP アドレスを要求して割り当ててもらうことができ、また接続したネッ ト
ワークの情報を取得できます。 BOOTP も同様の機能を持っていますが、少々制
限があります。
動作
DHCP プロトコルは、ネットワーク管理者が知らないホストに対して、予めその
ネ ットワークで用意された IP アドレスの範囲 (pool) から、自動的に新しい
IP アドレスを割り当てます。この機構を動作させるには、ネットワーク管理者
は ア ド レ ス の 範 囲 を 各 サ ブ ネ ットごとに割り当てておき、それを
dhcpd.conf(5) に書いておかなければなりません。
dhcpd は起動すると dhcpd.conf ファイルを読み、各サブネットごとに利用 で
き るアドレスのリストをメモリに保存します。クライアントが DHCP プロトコ
ルを用いてアドレスを要求すると、 dhcpd はそのクライアントにアドレスを割
り 当てます。各クライアントに貸し出されたアドレスは、管理者が決めておい
たある期間が経過すると期限切れになります (デフォルトでは 1 日)。貸し 出
し を受けたクライアントは、そのアドレスの利用を継続するために、貸し出し
が期限切れになる前に更新を行うことになります。貸し出しが期限切れにな る
と 、その貸し出しアドレスを割り当てられていたクライアントは、もうそれ以
上貸し出されていた IP アドレスを利用できなくなります。
システムやサーバが再起動した場合に貸し出し情報を保持しておくた め に 、
dhcpd は割り当てた貸し出しの記録を dhcpd.leases(5) ファイルに保持してい
ます。dhcpd はホストに貸し出しを行う前に、その貸出記録をこのファイル に
記 録し、ファイルの内容を確実にディスクにフラッシュします。これによって
、システムがクラッシュした場合でも、 dhcpd は割り当てた貸し出しのことを
確実に覚えておけます。 dhcpd は、起動して dhcpd.conf ファイルを読んだあ
と、 dhcpd.leases ファイルを読んで、現在の貸し出し情報をメモリに書き 込
みます。
新たな貸出記録は dhcpd.leases ファイルの末尾に追加されます。 dhcpd は、
貸し出しデータベースが際限なく大きくなるのを防ぐため、時々内部に持っ て
い る貸し出しデータベースから新しい dhcpd.leases ファイルを生成します。
このファイルがディスクに書き込まれると、古いファイルは dhcpd.leases~ と
名 前が変更され、新しいファイルが dhcpd.leases になります。システムがこ
の処理の途中でクラッシュしても、いずれかの dhcpd.leases ファイルが残 っ
て いて、そこにはすべての貸し出し情報が残っているはずです。従って特殊な
クラッシュリカバリ処理は必要ありません。
このサーバは BOOTP もサポートしています。 DHCP とは異なり、 BOOTP プ ロ
ト コルは動的に割り当てられたアドレスが不要になったとき、それを復帰させ
るプロトコルが存在しません。 BOOTP クライアントに動的にアドレスを割り当
て ることは可能ですが、アドレスを回収して再割り当て可能にするような管理
処理が必要になります。デフォルトでは、BOOTP クライアントへの貸し出し は
永 続的なものですが、ネットワーク管理者は (それが意味があれば) 中断をよ
り早くしたり、貸し出し期間を短くできます。
BOOTP クライアントに、古い標準的な方法でアドレスを取得させることもで き
ます。これには dhcpd.conf ファイルに各 BOOTP クライアント用の宣言を書い
て、各クライアントへ永続的にアドレスを割り当てます。
dhcpd.conf ファイルに変更を行ったときは、 dhcpd は再起動しなければな り
ません。これには SIGTERM (シグナル 15) を /var/run/dhcpd.pid に保存され
ているプロセス ID に送り、dhcpd を再び起動します。 DHCP サーバのデー タ
ベースは BOOTP のデータベースほど軽量ではないので、 dhcpd は dhcpd.conf
ファイルが変更されたことを知っても、自動的に自分自身を再起動すること は
ありません。
注 意: これにはたくさん文句が来ています。サーバに SIGHUP を送るとデータ
ベースをリロードしてくれれば良いだろうな、とは我々も認識しています。 こ
れ は技術的には不可能ではありませんが、非常に多くの作業を必要とします。
我々のリソースは非常に限られており、それらは他のところに振り向けられ て
い ます。どうかメーリングリストに文句をいうのはご遠慮ください。この機能
を実装するプロジェクトへの資金を提供してくださるとか、あなた自身が実 装
してくださるのならもちろん話は別ですが。
コマンドライン
dhcpd がブロードキャストを待ち受けるネットワークインターフェースの名前
は、コマンドラインで指定できます。ブロードキャストでないインターフェ ー
スを dhcpd 自身が特定できないような状況下ではこれを行うべきですが、そう
でなければ指定しなくてもかまいません。インターフェースの名前がコマン ド
ラインにひとつも指定されなければ、 dhcpd はすべてのネットワークインター
フェースが通信状態にあるとみなし、可能ならブロードキャストでないイン タ
ー フェースを対象から外し、各インターフェースで DHCP ブロードキャストを
待ち受けます。
dhcpd に標準のポート (ポート 67) 以外で待機させたい場合は -p フラグで指
定 できます。この後には dhcpd を待機させる udp のポート番号を書きます。
これはデバッグの用途に特に便利です。 -p フラグが指定されると、サーバ は
指定した番号よりも 1 つ大きなポート番号を用いてクライアントに返事を送り
ます。つまり -p 67 を指定した場合は、サーバはポート 67 を聴き、ポ ー ト
68 に返事を送ります。中継エージェントを経由しなければならないデータグラ
ムは -p フラグで指定したポートに送信されます。もし別のポートを使いた い
場 合は、中継エージェントを設定して、同じく別のポートを使わせるようにし
なければなりません。
dhcpd をバックグラウンドでデーモンとして動作させるのではなく、フォア グ
ラ ウンドプロセスとして実行するには -f フラグを指定します。これは dhcpd
をデバッガの下で動作させたり、 System V システムの inittab 以外から動作
させる場合に便利です。
dhcpd のログを標準エラー出力に出したい場合は、 -d フラグを指定します。
これはデバッグの時に便利かもしれません。また dhcp の動作記録を完全に 記
録しておきたいが、 syslogd が信頼できなかったり使えないような場合にも便
利でしょう。通常 dhcpd は、すべてのログ出力を syslog(3) 機能を用いて 出
力します。facility は LOG_DAEMON に設定されます。
dhcpd に標準以外の設定ファイルを読み込ませるには -cf フラグを用います。
また別の貸し出しファイルを指定するには -lf フラグを使います。実用の現場
では、 dhcpd の実行時には、毎度同じ貸し出しデータベースを用いさせること
が重要です。したがってこれらのオプションは、貸し出しファイルやデータ ベ
ースファイルを、実用でない環境でテストするような場合に限るべきです。
dhcpd をシステムのスタートアップスクリプト (/etc/rc など) から起動する
ときには、コピーライトメッセージ全部を出力したくないこともあるかもし れ
ま せん。このメッセージを表示させたくない場合は、 -q フラグを指定します
。
設定
dhcpd.conf(5) ファイルの文法は別に説明されてます。この節は設定作業を 概
観するだけに使い、詳細なリファレンス情報は dhcpd.conf(5) のマニュアルペ
ージにあたってください。
サブネット
dhcpd は、サービスを提供するすべてのサブネットに対して、サブネット番 号
とネットマスクを知らなければなりません。さらに dhcpd が動的にアドレスを
割り当てるには、各サブネットごとに 1 つ以上のアドレス領域をあてがわれて
おく必要があります。クライアントホストが起動するごとに、 dhcpd はこの領
域からアドレスを順番に割り当てます。よって、DHCP サポートを提供する非常
に簡単な設定は次のようになります。
subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.250;
}
次のように複数のアドレス領域を指定することもできます。
subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.107;
range 239.252.197.113 239.252.197.250;
}
BOOTP サービスだけを提供し、動的なアドレス割り当ては提供しない場合は、
アドレス範囲の項目は省略し、subnet 文だけを書いておけば OK です。
貸し出し期間
DHCP 貸し出し期間は、0 秒から無限までの、ほとんどあらゆる長さにできます
。 あるサブネットに対して、あるいは導入されたシステムに対して、どのよう
な長さが良いかは、サービスを受けるホストの種類によって異なります。
例えば、システムが時々追加/削除されるが、移動することはあまりないような
オフィス環境では、貸し出し期間は 1 か月より長くしておくのが良いでしょう
。組み立てフロアの最終テスト環境では、最大貸し出し期間は 30 分程度 ( す
な わち出荷前の簡単なネットワーク動作確認テストに充分なくらい) にしてお
くのがいいでしょう。
貸し出し期間を 2 種類指定することもできます。クライアントが特に貸し出し
期 間に関する要望を送ってこなかった場合のデフォルトの期間と、最大貸し出
し期間とです。これらは subnet コマンドの内部項目として指定します。
subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.107;
default-lease-time 600;
max-lease-time 7200;
}
この subnet 宣言では、デフォルトの貸し出し期間を 600 秒 (10 分)、最大貸
し 出し期間を 7200 秒 (2 時間) にしてあります。他に良く使われる値として
は、86400 (1 日)、604800 (1 週間)、 2592000 (30 日) などがあります。
各サブネットに別々の貸し出し期間を指定してもかまいません。オフィス環 境
と 組み立て環境とを同じ DHCP サーバにサービスさせるような場合には、各サ
ブネットのデフォルト/最大貸し出し期間それぞれに、大きく異なる値を指定す
るのが良いこともあるでしょう。
BOOTP サポート
BOOTP クライアントは、それぞれ dhcpd.conf ファイルに明示的に宣言してお
く必要があります。もっとも基本的な宣言では、クライアントのネットワー ク
イ ンターフェースのハードウェアアドレスと、そのクライアントに割り当てる
IP アドレスとを指定します。クライアントがサーバから起動ファイルをロード
で きるようにしたい場合は、そのファイル名も指定しなければなりません。簡
単な bootp クライアント宣言は次のようになります。
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 239.252.197.9;
filename "/tftpboot/haagen.boot";
}
オプション
DHCP では (およびベンダによる拡張のなされた BOOTP でも)、クライアントで
の ネ ットワークインターフェースの設定情報 (例えばサブネットマスクなど)
とか、クライアントからネットワークサービス (DNS や IP ルータなど) に ア
クセスするための情報などを、サーバから提供する機構を備えています。
これらのオプションはサブネット単位で指定できます。 BOOTP クライアントに
対しては、クライアント単位でも指定できます。 BOOTP クライアント宣言でオ
プ ション指定がされていて、かつそのサブネット宣言でもオプション指定がさ
れている場合は、クライアント宣言でのオプションが優先されます。ほぼ完 全
な DHCP 設定は、次のようになるでしょう。
subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.250;
default-lease-time 600 max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 239.252.197.255;
option routers 239.252.197.1;
option domain-name-servers 239.252.197.2, 239.252.197.3;
option domain-name "isc.org";
}
BOOTP ホストがこのサブネットにあって、これを別のドメインにし、別のネー
ムサーバを利用させたい場合には、次のように宣言することになるでしょう。
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 239.252.197.9;
filename "/tftpboot/haagen.boot";
option domain-name-servers 192.5.5.1;
option domain-name "vix.com";
}
dhcpd.conf ファイルの文法に関するより完全な記述は、 dhcpd.conf(5) で 提
供されています。
ファイル
/etc/dhcpd.conf, /var/state/dhcp/dhcpd.leases, /var/run/dhcpd.pid,
/var/state/dhcp/dhcpd.leases~.
関連項目
dhclient(8), dhcrelay(8), dhcpd.conf(5), dhcpd.leases(5)
著者
dhcpd(8) は Ted Lemon
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa