rpc.ypxfrd(8) NIS マップ転送サーバー

書式

/usr/sbin/rpc.ypxfrd [ -d path ] [ -p port ] [ --debug ]
/usr/sbin/rpc.ypxfrd --version

説明

rpc.ypxfrd は非常に大きな NIS マップを NIS マスターから NIS スレーブサーバーに 転送する際に、転送を高速化するために用いられる。 NIS スレーブサーバーは、新しいマップがあるというメッセージを 受け取ると、そのマップを取得するために ypxfr を起動する。 ypxfr は yp_all() 関数を用いてマップの内容をマスターサーバーから 読み込もうとする。この情報はデーターベースライブラリを 通して保存されるため、マップのサイズが非常に大きくなると、 このプロセスは数分もかかってしまうことがある。

rpc.ypxfrd サーバーは、 NIS スレーブサーバーにマスターのマップファイルを 単純にコピーさせ、転送プロセスを高速化する。スレーブサーバーが ゼロからマップを生成するのに比べ、これはずっと短時間ですむ。 rpc.ypxfrd は RPC ベースの転送プロトコルを用いるので、新しいマップを 生成する必要はなくなる。

rpc.ypxfrd は inetd から起動することもできるが、起動には時間がかかるので、 ypserv の後に /etc/init.d/ypxfrd から起動するのが良い。

オプション

--debug
サーバーをデバッグモードで起動する。 デバッグモードでは、サーバーはバックグラウンドへ待避せず、 アクセス要求を受けるたびに細かなステータスメッセージを 標準エラー出力に表示する。
-d directory
/var/yp の代わりに rpc.ypxfrd が用いるディレクトリを指定する。
-p port
rpc.ypxfrd がバインドするポート番号を指定する。このオプションを用いると、 ルータに NIS ポートへのパケットをフィルタリングさせ、 インターネットからの NIS サーバーへのアクセスを制限できる。
--version
バージョン番号を表示する。

セキュリティ

rpc.ypxfrd はホストのチェックに ypserv と同じ機能を用いる。まず rpc.ypxfrd は要求元のアドレスを /var/yp/securenets または tcp wrapper でチェックする。ホストのサーバーへの接続が 許されている場合には、 rpc.ypxfrd/etc/ypserv.conf から要求されたマップのルールをチェックする。マップの名前が ルールにマッチしない場合には、 rpc.ypxfrd はそのマップの YP_SECURE キーを調べる。キーが存在していると、 rpc.ypxfrd は特権ポートからの要求だけを許可する。

ファイル

/etc/ypserv.conf /var/yp/securenets

バグ

FreeBSD の ypxfrd プロトコルは SunOS のものとは互換性がない。これは残念なことではあるが、 不可避なものであった。 Sun のプロトコルはフリーに入手できるものでは なかったし、仮に入手ができたとしても有用なものにはなりえなかったろう。 後者の理由は、 SunOS NIS v2 の実装がマップのデーターベースにオリジナルの ndbm パッケージを用いているのに対し、他の実装では GNU DBM や Berkeley DB を用いているからである。これらのパッケージはまったく異なったファイル フォーマットを用いている上、 ndbm と gdbm ではバイトオーダーンの違いを 賢く扱うことができない。したがって big endian なシステムで生成された gdbm や ndbm のデーターベースは、 little endian なシステムでは読むことが できないのである。 FreeBSD の ypxfrd プロトコルは、マスターとスレーブの両方が同じデーターベースパッケージを 使っているかどうかを、また必要に応じて、両システムでのバイトオーダーが等しいか どうかをチェックする。

作者

ypxfrd プロトコルと FreeBSD への実装: Bill Paul <[email protected]>
Linux への実装: Thorsten Kukuk <[email protected]>