tail head cat sleep
QR code linking to this page

manページ  — BOOTPD

名称

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

内容

書式


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 を設定します。 例えば、 -d -4-d 4 では、デバッグレベルが 4 に設定されます。 古いバージョンの bootpd との互換性のため、数字のパラメータを省略 (つまり、 -d だけ) すると 単にデバッグレベルを一つだけ増加させます。
-c chdir-path
  クライアントのブートファイルの存在とサイズを検査する間に bootpd で使われるカレントディレクトリを設定します。 クライアントのブートファイルが相対パス名で指定されていて、 bootpd が TFTP サーバと同じカレントディレクトリ (典型的には /tftpboot) を必要とするときに有用です。 このオプションは bootpgw によっては認識されません。
-h hostname
  接続を待っている IP アドレスに対応するホスト名を指定します。 デフォルトでは bootpdgethostname(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 で使われる典型的カレントディレクトリ。

バグ

各々のホストエントリは 1024 文字を越えてはいけません。

功労者

この配布版は現在、 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>.

関連項目

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


BOOTPD (8) February 10, 2004

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
— Maurice Wilkes