NIS スレーブサーバ
ypbind-mt, ypserv, yp-tools, rpcbind をインストールし、/etc/defaultdomain と /etc/yp.conf でドメインとマスタサーバを指定する。rpcbind, ypbind, ypserv は systemd で管理する。ypinit -s でマスタサーバからマップを取得し、ypxfr のタイマーとファイアウォールを設定する。マスタサーバ側では /var/yp/Makefile の NOPUSH と ypinit -m によりスレーブを登録する。
NIS はマップを平文で配布するため、LAN 内からの問い合わせにのみ応答し、LAN 外からの問い合わせには応答しないように設定する。
事前に調べておく事項
以下の事項を事前に調べておく。NIS は名前解決に DNS を使わないため、関連するすべての NIS サーバ(マスタ、スレーブ)の IP アドレスとホスト名を、各サーバの /etc/hosts に記載しておく。
- NIS ドメイン名(DNS ドメイン名とは別のもの)
- NIS マスタサーバのホスト名と IP アドレス
- NIS スレーブサーバの IP アドレス
(ip addrコマンドで調べる) - NIS スレーブサーバのホスト名
(hostnameコマンドで調べる)
NIS スレーブサーバ上での設定
-
/etc/hostsの設定マスタサーバとスレーブサーバの IP アドレスとホスト名を
/etc/hostsに記載する。1 つの IP アドレスに対して、FQDN、ホスト名の順に書く。sudo vi /etc/hosts記載例:
192.168.1.10 cent1.db.is.kyushu-u.ac.jp cent1 192.168.1.11 cent2.db.is.kyushu-u.ac.jp cent2127.0.0.1 の行にはこのマシンのホスト名を含めない。含めると NIS サーバが自分自身を localhost として通知し、マップの転送に失敗することがある。
-
必要なパッケージのインストール
NIS スレーブサーバとして動作させるために必要なパッケージをインストールする。
sudo apt update sudo apt -y install ypbind-mt ypserv yp-tools rpcbindUbuntu 24.04 LTS では、NIS クライアントのデーモン
ypbindはypbind-mtパッケージに含まれる。ypservパッケージは、マスタサーバからマップを取得するypinitやypxfr、および問い合わせに応答するypservを提供する。nisパッケージはこれらをまとめて導入するためのメタパッケージである。 -
NIS ドメイン名の設定
NIS ドメイン名を
/etc/defaultdomainに設定する。この設定はシステム起動時に読み込まれる。sudo vi /etc/defaultdomainファイルに NIS ドメイン名のみを 1 行で書く。NIS ドメイン名は大文字と小文字を区別する。
mydb.is.kyushu-u.ac.jp/etc/default/nisのNISSERVER変数は、systemd で各サービスを管理する場合には使用されない。旧来の SysV init スクリプト用に残されているだけであり、設定する必要はない。 -
マスタサーバの指定
問い合わせ先の NIS サーバを
/etc/yp.confに設定する。sudo vi /etc/yp.confファイルに以下の行を追加する。
<NISドメイン名>と<NISマスタサーバのホスト名またはIPアドレス>には実際の値を記載する。domain <NISドメイン名> server <NISマスタサーバのホスト名またはIPアドレス>例:
domain mydb.is.kyushu-u.ac.jp server cent1.db.is.kyushu-u.ac.jpホスト名で指定する場合は、そのホスト名を
/etc/hostsに記載しておく。記載がないと、起動時に名前解決ができず、サービスの起動が待たされる。IP アドレスで指定してもよい。 -
アクセス制限の設定
スレーブサーバも NIS の問い合わせに応答するため、応答を許可するネットワークを
/var/yp/securenetsに設定する。このファイルが存在しない場合、すべてのホストからの問い合わせに応答する。sudo vi /var/yp/securenetsネットマスクとネットワークアドレスの組を 1 行ずつ書く。127.0.0.1 の行は必須である。
host 127.0.0.1 255.255.255.0 192.168.1.0 -
NIS データの作成は行わない
スレーブサーバでは passwd, group, hosts などの NIS マップを作成しない。マップは NIS マスタサーバから転送されてくるものを使用する。マスタサーバのように
/var/ypディレクトリでmakeを実行する必要もない。 -
rpcbindサービスの起動と有効化NIS は RPC (Remote Procedure Call) を利用するため、ポートマッパーである
rpcbindが動作している必要がある。サービスを起動し、システム起動時に自動実行されるように設定する。sudo systemctl enable rpcbind sudo systemctl start rpcbindステータスを確認する。
systemctl status rpcbind -
ypbindの起動と有効化NIS クライアント機能である
ypbindを起動し、システム起動時に自動実行されるように設定する。sudo systemctl enable ypbind sudo systemctl start ypbindステータスを確認する。
systemctl status ypbind結合先のサーバを確認する。
ypwhich -
ypservの起動と有効化スレーブサーバはクライアントからの問い合わせに応答するため、
ypservを起動し、システム起動時に自動実行されるように設定する。sudo systemctl enable ypserv sudo systemctl start ypservステータスを確認する。
systemctl status ypserv -
ypinit -sの実行NIS マスタサーバからマップを取得するため、
ypinitを実行する。<NISマスタサーバのホスト名>には実際のマスタサーバのホスト名を記載する。この手順は、マスタサーバ側でスレーブサーバを登録した後に実行する。cd /var/yp sudo /usr/lib/yp/ypinit -s <NISマスタサーバのホスト名>例:
sudo /usr/lib/yp/ypinit -s cent1.db.is.kyushu-u.ac.jpマップの転送が終わると、
/var/yp/<NISドメイン名>ディレクトリにマップファイルが作成される。 -
マップの定期転送の設定
スレーブサーバの停止中にマスタサーバでマップが更新されると、その更新は配布されない。
ypxfrのタイマーを有効にすると、マップが定期的に取得され、内容のずれが修正される。sudo systemctl enable --now ypxfr_1perhour.timer sudo systemctl enable --now ypxfr_1perday.timer sudo systemctl enable --now ypxfr_2perday.timer -
ファイアウォールの設定
ufw を使用している場合は、LAN 内からの RPC ポートマッパー (111/tcp, 111/udp) への接続を許可する。
<LANのネットワークアドレス>には実際の値を記載する。sudo ufw allow from <LANのネットワークアドレス> to any port 111 proto tcp sudo ufw allow from <LANのネットワークアドレス> to any port 111 proto udp例:
sudo ufw allow from 192.168.1.0/24 to any port 111 proto tcp sudo ufw allow from 192.168.1.0/24 to any port 111 proto udpypservとypbindは既定では動的な RPC ポートを使用する。使用中のポート番号は次のコマンドで確認できる。rpcinfo -pポート番号を固定するには、
ypservを-pオプション付きで起動するように systemd のユニット設定を上書きし、固定したポートをファイアウォールで許可する。
NIS マスタサーバ上での設定
ここからの手順は、NIS スレーブサーバではなく NIS マスタサーバ上で実行する。
-
/var/yp/Makefileの書き換え/var/yp/Makefileを編集し、スレーブサーバへのマップの自動転送を有効にする。cd /var/yp sudo vi Makefile以下の行を探す。
NOPUSH=trueこの行を以下のように変更する。
NOPUSH=falseこの変更により、マップが更新されたときに
yppushが実行され、スレーブサーバに転送される。マスタサーバでcd /var/yp && sudo makeを実行すると、マップの再作成と転送が行われる。 -
ypinit -mによるスレーブサーバの登録NIS マスタサーバとして
ypinit -mを実行し、スレーブサーバを登録する。ypinitは/usr/lib/yp/ypinitにある。cd /var/yp sudo /usr/lib/yp/ypinit -m次のように表示される。
servers. cent1.db.is.kyushu-u.ac.jp is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: cent1.db.is.kyushu-u.ac.jp next host to add:プロンプトに対して、NIS スレーブサーバのホスト名を 1 行に 1 つずつ入力する。
入力が終わったら
Ctrl+Dで入力を終了する。登録された NIS サーバの一覧が表示されるので、スレーブサーバが含まれていることを確認し、「y」を入力して終了する。