BOOTPTAB(5)

名称
bootptab - インターネットブートストラッププロトコルサーバのデータベース

解説
bootptab ファイルは、 bootpd(8) すなわちインターネットブートストラッププロトコルサーバの 設定データベースファイルです。 このフォーマットは termcap(5) のものに似ており、2 文字の大文字小文字を区別するタグシンボルが ホストパラメータを表現します。 これらのパラメータ宣言はコロン (:) によって分けられ、次のような形式になります。

    hostname:tg=value. . . :tg=value. . . :tg=value. . . .

ここで hostname は実際の bootp クライアントの名前 (もしくは「ダミーエントリ」) であり、 tg は 2 文字のタグシンボルです。 ダミーエントリは不正なホスト名 ("." を最初の文字とする名前) を持ち、 tc=.dummy-entry 機構を介して他のエントリにデフォルト値を提供します。 ほとんどのタグの後には、上記のように等号と値を続ける必要があります。 value (i.e. :tg: の形式です)。 現在、認識されるタグを示します:

bf  ブートファイル
bs  512 オクテットブロックでのブートファイルの大きさ
cs  クッキーサーバのアドレスリスト
df  メリットダンプファイル
dn  ドメイン名
ds  ドメインネームサーバのアドレスリスト
ef  拡張ファイル
gw  ゲートウェイのアドレスリスト
ha  ホストのハードウェアアドレス
hd  ブートファイルのホームディレクトリ
hn  クライントのホスト名をクライアントに送る
ht  ホストのハードウェアタイプ (Assigned Numbers RFC を参照)
im  インプレスサーバのアドレスリスト
ip  ホストの IP アドレス
lg  ログサーバのアドレスリスト
lp  LPR サーバのアドレスリスト
ns  IEN-116 ネームサーバのアドレスリスト
nt  NTP (時刻) サーバ (RFC 1129)
ra  返答アドレスの上書き
rl  リソースロケーションプロトコルサーバのアドレスリスト
rp  ルートとしてマウントするルートパス
sa  クライアントが使用すべき TFTP サーバのアドレス
sm  ホストのサブネットマスク
sw  スワップサーバのアドレス
tc  テーブル継続 (同様の「テンプレート」ホストエントリを指します)
td  「安全な」 TFTP サーバが使用するルートディレクトリ
to  秒で表現した UTC からのオフセット
ts  タイムサーバのアドレスリスト
vm  ベンダマジッククッキーセレクタ
yd  YP (NIS) のドメイン名
ys  YP (NIS) のサーバアドレス

包括的な Tn タグもあります。ここで n は RFC1084 のベンダフィールドタグ番号です。 これにより、まず bootpd を変更しなくとも、 RFC1084 に対する将来の拡張の利点をすぐに利用することができます。 包括的なデータは、 16 進数のストリームもしくはクォートされた ASCII 文字列として表現されます。 包括的なデータの長さは自動的に判定され、 RFC1084 スタイルのブートストラップリプライの適切なフィールドに挿入されます。

以下のタグは空白で区切られた IP アドレスのリストを取ります: cs, ds, gw, im, lg, lp, ns, nt, ra, rl, ts 。また ip, sa, sw, sm, ys タグはそれぞれ単一の IP アドレスを取ります。 IP アドレスは全て標準のインターネット「ドット」表記で指定されます。 10 進数、8 進数、16 進数のいずれも使用可能です (8 進数は 0 から始まり、16 進数は '0x' または '0X' から始まります)。 IP アドレスは代りにホスト名で指定可能です。 この場合、 bootpd はそのホスト名の IP アドレスを得るために gethostbyname(3) を使用します。 もし ip タグが指定されなかった場合、 bootpd はエントリ名をホスト名とすることにより IP アドレスを判定します。 (ダミーエントリは不正なホスト名とすることにより、 自動的な IP 検索を避けます)

ht タグは、10 進数・8 進数・16 進数の符号無し整数、 もしくは以下のいずれかのシンボル名をもって、 ハードウェアタイプコードを指定します。 ethernet, ether は 10Mb イーサネットを、 ethernet3, ether3 は 3Mb の実験的イーサネットを、 ieee802, tr, token-ring は IEEE 802 ネットワークを、 pronet は Proteon ProNET Token Ring を、 chaos, arcnet, ax.25 は Chaos, ARCNET, AX.25 Amateur Radio networks を、それぞれ表現します。 ha タグは、ホスト名もしくは数値形式で、ハードウェアアドレスを指定します。 数値形式は 16 進数で指定する 必要があります 。可読性のためにピリオドを付けたり、前に '0x' を付けても良いです。 ha タグの前に ht タグがある必要があります (明示的でも暗黙的でもかまいません。後述の tc 参照)。ハードウェアアドレスが指定されない場合、指定されたタイプが "ethernet" もしくは "ieee802" の場合、 bootpd は ether_hostton(3) を使用してハードウェアアドレスを決定しようとします。

ホスト名・ホームディレクトリ・ブートファイルは ASCII 文字列であり、 ダブルクォート (") で括ることもできます。 クライアントのリクエストおよび hd シンボルと bf シンボルの値は、bootp リプライパケットのブートファイルフィールドを サーバがどのように埋めるかを決定します。

クライアントがファイル名を指定した場合、それはそのまま残されます。 そうでない場合は、 bf オプションが指定されていれば、その値がリプライパケットにコピーされます。 もし hd オプションも指定されている場合には、 その値がリプライパケットにコピーされるブートファイルの前に付きます。 ブートファイルの存在確認は bs=auto オプションが使用されているときのみ行われます (ブートファイルサイズ確認のためです)。 ブートファイルが存在しようとしまいと、リプライは送られます。

新しいバージョンの tftpd(8) では、 chroot(2) システムコールを使用してルートディレクトリを変更するという セキュリティ機能を提供します。 td タグは、 tftpd が使用するこの特殊ルートディレクトリを bootpd に通知するために使用します。 (代りに bootpd -c chdir オプションを使用したいかもしれません。) 実際、 hd タグは td タグにより指定されるルートディレクトリからの相対指定です。 例えば、BOOTP クライアントブートファイルの現実の絶対パスが /tftpboot/bootfiles/bootimage であり、 tftpd が ~ /tftpboot を「安全な」ディレクトリとする場合、 bootptab では次のように指定します。

-:td=/tftpboot:hd=/bootfiles:bf=bootimage:

ブートファイルを直接 /tftpboot に置く場合には次のようにします。

    :td=/tftpboot:hd=/:bf=bootimage:

sa タグは、あなたがクライアントに使用させたい特定の TFTP サーバの IP アドレスを 指定するために使用します。 このタグを指定しないと、 bootpd が実行されているのと同じマシンに対して TFTP を行うように、 bootpd はクライアントに指示します。

時刻オフセット to は、クライアントの UTC からのタイムゾーンオフセットを秒で表現した 符号付き 10 進数、 またはサーバのタイムゾーンオフセットを使用することを意味するキーワード auto です。 to シンボルをブール値として指定することは、 auto を値として指定するのと同じ効果があります。

ブートファイルサイズ bs は、10 進数・8 進数・16 進数の整数で ブートファイルのサイズを 512 オクテットブロックで表現したもの、 またはサーバが各リクエストに際して ブートファイルサイズを自動的に計算することを示すキーワード auto です。 時刻オフセットと同じく、 bs シンボルをブール値として指定することは、 auto を値として指定するのと同じ効果があります。

ベンダマジッククッキーセレクタ ( vm タグ) は以下のキーワードのいずれかを取ります。 auto (ベンダ情報をクライアントリクエストから判別)、 rfc1048 または rfc1084 (常に RFC1084 スタイルのリプライを強制)、または cmu (常に CMU スタイルのリプライを強制) です。

hn タグは厳密にブール値のタグです。通常の等号および値を取りません。 このタグが存在すると、ホスト名を RFC1084 クライアントに送ることを意味します。 bootpd は、設定ファイルで指定されるホスト名全体を送ろうとします。 リプライパケットに収まらない場合、 名前は (存在するならば最初のピリオドまでの) ホストフィールドのみに縮められ、 再度試されます。 任意の長さに縮められたホスト名が送られてしまうということはありません (収まるものがない場合には、なにも送られません)。

しばしば、多くのホストエントリが特定のタグの共通の値を共有します (ネームサーバなど)。 これらのタグを何度も書くのではなく、 全体仕様を 1 つのホストエントリに記述してこれを tc (テーブル継続) 機構を介して共有することができます。 多くの場合、このテンプレートエントリは実際には存在しないダミーホストであり、 bootp リクエストを送ることはありません。 この機能は、 termcap(5) で似た端末を記述するための tc 機能に似ています。 termcap では最後のタグでなければなりませんが、 bootpd では tc タグシンボルがホストエントリ中のどこにあらわれても良いことに注意してください。 ホストに対して明示的に指定した情報は、エントリ中の tc タグシンボルの位置にかかわらず、これにより暗黙に指定される情報を上書きします。 tc タグの値はホスト名もしくは設定ファイルで前に記述されている IP アドレスです。

tc タグで暗示された特定のタグの削除が必要になることがあります。 これは tag@ 構造を使用することにより、 termcap(5) の場合と同様に tag の効果を削除することにより実現できます。 例えば、IEN-116 ネームサーバ仕様を完全に無効にしたい場合には、 設定ファイルのエントリの適切な位置に :ns@: を置きます。 @ を使用して削除を行った後には、 tc 機構を使用してそのタグを再度設定することができます。

設定ファイル中の、空行および "#" で始まる行は無視されます。 ホストエントリは改行で分けられます。 単一のホストエントリは、 行がバックスラッシュ (\) で終る場合に複数行にまたがることができます。 行が 80 文字を越えることも許されます。 タグは任意の順序で現われてかまいませんが、次のような例外があります。 ホスト名はエントリの最初のフィールドである必要があり、 ハードウェアタイプはハードウェアアドレスの前に指定する必要があります。

/etc/bootptab ファイルの例を示します:

    # Sample bootptab file (domain=andrew.cmu.edu)
    .default:\
    	:hd=/usr/boot:bf=null:\
    	:ds=netserver, lancaster:\
    	:ns=pcs2, pcs1:\
    	:ts=pcs2, pcs1:\
    	:sm=255.255.255.0:\
    	:gw=gw.cs.cmu.edu:\
    	:hn:to=-18000:
    carnegie:ht=6:ha=7FF8100000AF:tc=.default:
    baldwin:ht=1:ha=0800200159C3:tc=.default:
    wylie:ht=1:ha=00DD00CADF00:tc=.default:
    arnold:ht=1:ha=0800200102AD:tc=.default:
    bairdford:ht=1:ha=08002B02A2F9:tc=.default:
    bakerstown:ht=1:ha=08002B0287C8:tc=.default:
    # Special domain name server and option tags for next host
    butlerjct:ha=08002001560D:ds=128.2.13.42:\
    	:T37=0x12345927AD3BCF:\
    	:T99="Special ASCII string":\
    	:tc=.default:
    gastonville:ht=6:ha=7FFF81000A47:tc=.default:
    hahntown:ht=6:ha=7FFF81000434:tc=.default:
    hickman:ht=6:ha=7FFF810001BA:tc=.default:
    lowber:ht=1:ha=00DD00CAF000:tc=.default:
    mtoliver:ht=1:ha=00DD00FE1600:tc=.default:

関連ファイル
/etc/bootptab

関連項目
bootpd(8), tftpd(8)
DARPA Internet Request For Comments RFC951, RFC1048, RFC1084, Assigned Numbers