EN JA
BOOTPD(8)
BOOTPD(8) FreeBSD System Manager's Manual BOOTPD(8)

名称

bootpd, bootpgwインターネットブートプロトコルサーバ/ゲートウェイ

書式

bootpd [ -i | -s][ -c chdir-path][ -d level][ -h hostname][ -t timeout][ bootptab [ dumpfile]]

bootpgw [ -i | -s][ -d level][ -h hostname][ -t timeout] server

解説

bootpd ユーティリティは、RFC951, RFC1532, RFC1533 で定義されたインターネットブートプロトコル (BOOTP) サーバを実装したものです。 bootpgw ユーティリティは、要求と応答を、あるサブネット上のクライアントと、別のサブネット上の BOOTP サーバ (すなわち bootpd) との間で転送するのに使われる、単純な BOOTP ゲートウェイを実装しています。 bootpd または bootpgw は、BOOTREPLY パケットを転送しますが、 bootpgw だけが BOOTREQUEST パケットを転送します。

各々のネットワークセグメントにつき、通常一つのホストで、以下の行のどれかをファイル /etc/inetd.conf に含めることにより、 bootpd または bootpgwinetd(8) から起動されるように設定されます:

bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab
bootps dgram udp wait root /usr/libexec/bootpgw bootpgw server

この動作モードは、「inetd モード」と呼ばれ、ブート要求が到着した時にだけ bootpd (または bootpgw) を開始します。もし最後にパケットを受信してから 15 分以内に別のパケットを受信しないのなら、システムの資源を浪費しないように終了します。 -t オプションがこのタイムアウト時間を制御します (オプション参照)。

他の通常のコマンドのように単にシェルから起動することで、 bootpd (または bootpgw) を「スタンドアローンモード」 ( inetd(8) なし) で実行することも可能です。 bootpd が大きなコンフィギュレーションデータベースのもとで使われる時には、 inetd モードでの起動時の遅延がクライアントの要求に対する素早い応答を妨げるので、スタンドアローンモードは、特に役に立ちます。 (例えば、 /etc/rc.local から bootpd を呼びだすことによって、スタンドアローンモードで自動的に起動することができます。) bootpgw は、設定ファイルを読まないので、起動時の遅延はかなり小さく、スタンドアローンモードは、あまり役に立ちません。

どちらのプログラムも、inetd から呼び出されたかシェルから呼び出されたかを自動的に検出し、自動的に適当なモードを選択します。 -s-i オプションは各々、スタンドアローンモードと inetd モードを強制するのに使います (オプション参照)

オプション

次のオプションが利用可能です:
-t timeout
bootpd または bootpgw プロセスが終了する前に BOOTP パケットを待つ timeout 値 (分単位) を指定します。もし timeout 分内にパケットを受信しなければ、プログラムは終了します。 timeout の値が 0 の場合は「永遠に実行する」という意味です。スタンドアローンモードでは、このオプションは、0 に強制されます。
-d debug-level
生成されるデバッグメッセージの量を制御する変数 debug-level を設定します。例えば、 -d4 や -d 4 では、デバッグレベルが 4 に設定されます。古いバージョンの bootpd との互換性のため、数字のパラメータを省略 (つまり、 -d だけ) すると単にデバッグレベルを一つだけ増加させます。
-c chdir-path
クライアントのブートファイルの存在とサイズを検査する間に bootpd で使われるカレントディレクトリを設定します。クライアントのブートファイルが相対パス名で指定されていて、 bootpd が TFTP サーバと同じカレントディレクトリ (典型的には /tftpboot) を必要とするときに有用です。このオプションは bootpgw によっては認識されません。
-h hostname
接続を待っている IP アドレスに対応するホスト名を指定します。デフォルトでは bootpd は、 gethostname(3) が返すマシンのホスト名に対応する IP アドレスで待ちます。
-i
強制的に inetd モードにします。このオプションは時代遅れですが、古いバージョンの bootpd との互換性のために残してあります。
-s
強制的にスタンドアローンモードにします。このオプションは時代遅れですが、古いバージョンの bootpd との互換性のために残してあります。
bootptab
bootpd がロードする設定ファイルの名前を指定します ( bootpd のみ)。これはあらかじめ知っているクライアントとそのクライアントのオプションに関するデータベースです。
dumpfile
bootpd が、SIGUSR1 シグナルを受信したときに内部データベースをダンプするファイルの名前を指定します ( bootpd のみ)。このオプションは bootpd が -DDEBUG フラグ付きでコンパイルされたときだけ認識されます。
server
bootpgw が受信した全ての BOOTREQUEST パケットを転送する、 BOOTP サーバの名前を指定します ( bootpgw のみ)。

操作

bootps ポートに送られたどんなパケットも取り込んでどんな BOOTREPLY パケットも単純に転送するという点で bootpdbootpgw の双方が似た動きをします。 BOOTREQUEST の扱いは違います。

bootpgw は、動作開始時に、コマンド行パラメータとして名前を与えられた BOOTP サーバのアドレスを決めます。 bootpgw が BOOTREQUEST パケットを受信したとき、パケットの「ゲートウェイアドレス」と「ホップ数」フィールドを設定し、パケットを前に決めたアドレスの BOOT サーバへ転送します。要求パケットは、クライアントが少なくとも 3 秒は待っているとパケットが示している時にだけ転送されます。

bootpd は、動作開始時に設定ファイル (通常 /etc/bootptab) を読み込みます。これで、あらかじめ知っているクライアントとクライアントのオプションに関する内部データベースを初期化します。この内部データベースは、 bootpd が回線切断シグナル (SIGHUP) を受信したとき、または設定ファイルが変更されたことを発見したときに、再読み込みが行なわれます。

bootpd が BOOTREQUEST パケットを受信したとき、クライアントの要求に一致するデータベースエントリを探します。もしそのクライアントをあらかじめ知っていれば bootpd は、前に見つけたデータベースエントリを使って BOOTREPLY パケットを構成し、 (ひょっとしたらゲートウェイを使って) クライアントに返答を送ります。もしクライアントが未知ならば、(debug > 0 のときは注意を出して) 要求は捨てられます。

bootpd が -DDEBUG オプションでコンパイルされていれば、 SIGUSR1 シグナルを送ると内部データベースをファイル /tmp/bootpd.dump か、コマンド行パラメータで指定されたダンプファイルにダンプします。

初期化の時どちらのプログラムも、 (普通は /etc/services を使う) getservbyname(3) を呼ぶことで UDP ポート番号を決定します。二つのサービス名 (とポート番号) が使われます:

bootps - BOOTP サーバ待機ポート
bootpc - BOOTP クライアント届け先ポート

もしポート番号が getservbyname(3) を使って決定できないときには、デフォルト値は、bootps=67 と bootpc=68 です。

関連ファイル

/etc/bootptab
bootpd によって読み込まれるデータベースファイル。
/tmp/bootpd.dump
bootpd によって生成されるデバッグダンプファイル。
/etc/services
インターネットサービス番号。
/tftpboot
TFTP サーバと bootpd で使われる典型的カレントディレクトリ。

関連項目

bootptab(5), inetd(8), tftpd(8)

DARPA Internet Request For Comments:

RFC951
Bootstrap Protocol
RFC1532
Clarifications and Extensions for the Bootstrap Protocol
RFC1533
DHCP Options and BOOTP Vendor Extensions

作者

この配布版は、現在、 Walter L. Wimer <walt+@cmu.edu>によって保守されています。

オリジナルの BOOTP サーバは、スタンフォード大学の Bill Croft によって 1986 年 1 月に作成されました。

現在のバージョンの bootpd は、第一に、Carnegie Mellon University の David Kovar, Drew D. Perkins, Walter L. Wimer の仕事によるものです。

機能拡張とバグフィクスは、以下の方の貢献によります:

(アルファベット順)

Danny Backx <db@sunbim.be>, John Brezak <brezak@ch.hp.com>, Frank da Cruz <fdc@cc.columbia.edu>, David R. Linn <drl@vuse.vanderbilt.edu>, Jim McKim <mckim@lerc.nasa.gov>, Gordon W. Ross <gwr@mc.com>, Jason Zions <jazz@hal.com>.

バグ

各々のホストエントリは、1024 文字を越えてはいけません。
February 10, 2004 FreeBSD