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
から起動するのが良い。
- --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
ypserv(8),
makedbm(8),
yppush(8),
ypxfr(8)
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]>