RPC.YPXFRD(8) | Reference Manual | RPC.YPXFRD(8) |
rpc.ypxfrd - 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 から起動するのが良い。
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 <wpaul@ctr.columbia.edu>
Linux への実装: Thorsten Kukuk
<kukuk@suse.de>
August 2001 | YP Server |