書式
/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]>