NIS マスターサーバの設定手順
- 参考 Web ページ:FreeBSD ハンドブック「Network Servers」の NIS の節 https://docs.freebsd.org/en/books/handbook/network-servers/#network-nis
- 参考 Web ページ:ipfw(8) マニュアル https://man.freebsd.org/cgi/man.cgi?query=ipfw&sektion=8
- 参考 Web ページ https://www.kkaneko.jp/tools/freebsd/ipfw.html
新 NIS サーバのセットアップ
NIS サーバ設定
NIS のデータベースの元になるファイルとして、master.passwd, hosts, group の 3 つを作ります。 その後、/etc/hosts, /etc/rc.conf, /etc/master.passwd, /etc/group, /var/yp/securenets, /var/yp/nis.inputs/ypservers, /var/yp/Makefile を設定します。 最後に ypinit -m で NIS サーバとしての設定を行います。作業は root 権限で行います。
- 事前の確認
- NIS サーバ上の /etc/resolv.conf が正しく設定されていること
- NIS サーバ上の /etc/hosts の中身に間違いがないこと
- DNS サーバに、NIS サーバマシンが登録されていることが望ましい
- NIS ファイル用のディレクトリ作成
# mkdir /var/yp/nis.inputs
- NIS 用 master.passwd 作成
フィールドはコロン区切りで、ユーザ名、暗号化パスワード、UID、GID、ログインクラス、 パスワード変更期限、アカウント期限、説明、ホームディレクトリ、シェルの順です。
# vi /var/yp/nis.inputs/master.passwd ----- <ユーザ名>:<暗号化パスワード>:20001:800::0:0:<ユーザの説明>:/home/<ユーザ名>:/bin/tcsh -----
このファイルには暗号化パスワードが含まれるため、パーミッションを 600 にします。
# chmod 600 /var/yp/nis.inputs/master.passwd
- NIS 用 hosts 作成
# vi /var/yp/nis.inputs/hosts ----- 127.0.0.1 localhost.local.www.kkaneko.jp localhost 192.168.33.XXX YYY.local.www.kkaneko.jp YYY -----
XXX は ifconfig で調べる。YYY は hostname で調べる。
# ifconfig # hostname
- NIS 用 group 作成
# vi /var/yp/nis.inputs/group ----- 8th:*:800: -----
- /etc/hosts の編集
# vi /etc/hosts ----- 127.0.0.1 localhost.local.www.kkaneko.jp localhost 192.168.33.XXX YYY.local.www.kkaneko.jp YYY -----
XXX は ifconfig で調べる。YYY は hostname で調べる。
# ifconfig # hostname
- /etc/rc.conf の書き換え
NIS サーバであると同時に、自分自身にバインドする NIS クライアントとしても設定します。 サーバどうしが互いにバインドすると、障害時に復旧が遅れるため、 -S でバインド先を自分自身に固定します。
NIS ドメイン名は事前に決めておきます。DNS のドメイン名とは無関係の文字列でかまいません。
# vi /etc/rc.conf ----- # NIS client rpcbind_enable="YES" nisdomainname="<NISドメイン名>" nis_client_enable="YES" nis_client_flags="-S <NISドメイン名>,localhost" # NIS server nis_server_enable="YES" nis_yppasswdd_enable="YES" nis_yppasswdd_flags="-t /var/yp/nis.inputs/master.passwd" nis_ypxfrd_enable="YES" -----
FreeBSD 5.0 以降、ポートマッパのコマンド名とサービス名は portmap から rpcbind に変更されています。古い解説にある portmap_enable ではなく rpcbind_enable を使用します。
- /etc/master.passwd の変更
/etc/master.passwd の変更では、必ず vipw を用いること ("vi /etc/master.passwd" でなく "vipw")。
NIS クライアントとして機能させるために、次のように変更します。 master.passwd はフィールドが 10 個なので、コロンは 9 個です。
# vipw 最終行に追加 ----- +::::::::: -----
NIS に障害が起きたときに備え、wheel グループに属するローカルアカウントを 最低 1 つ残しておきます。
- /etc/group の変更
NIS クライアントとして機能させます。
# vi /etc/group 最終行に追加 ----- +:*:: -----
- NIS 用 securenets の作成
XXX,YYY,ZZZ の部分は LAN のネットワークアドレス
# vi /var/yp/securenets ----- 127.0.0.1 255.255.255.255 XXX.YYY.ZZZ.0 255.255.255.0 -----
- NIS サーバの一覧ファイルの作成
スレーブサーバを運用する場合は、そのホスト名も 1 行 1 台で追加します。
# vi /var/yp/nis.inputs/ypservers ----- localhost localhost -----
- /var/yp/Makefile を編集
# cp /var/yp/Makefile.dist /var/yp/Makefile # chmod 644 /var/yp/Makefile # vi /var/yp/Makefile (1) TARGETS を変更 TARGETS= servers hosts networks protocols rpc services shells group TARGETS+= ipnodes ↓ TARGETS= servers hosts group #TARGETS+= ipnodes (2) YPSRCDIR を変更 YPSRCDIR= /etc ↓ YPSRCDIR= /var/yp/nis.inputs (3) PASSWD, MASTER, YPSERVERS で $(YPDIR) を $(YPSRCDIR) に変更
スレーブサーバを運用する場合は、あわせて /var/yp/Makefile.local を作成し、 NOPUSH= を記述します。これにより、マップを作り直したときに yppush でスレーブサーバへ更新が通知されます。
# vi /var/yp/Makefile.local ----- NOPUSH= -----
- domainname の設定
NIS ドメイン名は /etc/rc.conf に書いたものとする
# domainname <NISドメイン名>
- ypinit の実行
「非致命的なエラーで中断するか」には n、 NIS サーバの一覧の入力は(スレーブサーバがなければ)そのまま ctrl+D、 一覧の確認には y と答えます。
# service rpcbind start # service ypserv start # cd /var/yp # ypinit -m <NISドメイン名> n ctrl+D y
- make の実行
# cd /var/yp # make
- 再起動
# shutdown -r now
- NIS サーバ上で ypwhich を行う
# ypwhich
(ここで localhost か localhost.<ドメイン名> とでるはず)
- ypcat passwd, ypcat group, ypcat hosts, ypcat ypservers
で動作確認
# ypcat passwd # ypcat group # ypcat hosts # ypcat ypservers
- パスワードのハッシュ形式の設定
NIS サーバマシン上で yppasswd を実行したときに、望むハッシュ形式で登録されるように設定します。 形式は /etc/login.conf の passwd_format で指定します。 指定できる値は des, md5, blf, sha256, sha512 で、現在の FreeBSD の既定値は sha512 です。
:passwd_format=sha512:\
編集後、データベースを作り直します。
# cap_mkdb /etc/login.conf
この変更は既存のハッシュには影響しません。既存のパスワードを新しい形式にするには、 利用者にパスワードを設定し直してもらいます。
現在のハッシュ形式は、master.passwd のパスワード欄の接頭辞で判別します。 $6$ は sha512、$5$ は sha256、$2b$ は blf、$1$ は md5 です。 接頭辞がなく 13 文字の文字列であれば des です。 NIS クライアントが FreeBSD 以外の OS の場合は、そのクライアントが対応している形式を選びます。
設定上の注意
yppasswd でのパスワード変更がうまくできない場合には、
- /etc/login.conf の設定ミス(cap_mkdb /etc/login.conf を実行し忘れていないか)
- /etc/hosts の設定ミス
- ypinit -m; make を実行し忘れている
- NIS 用 hosts ファイルに NIS サーバマシンを登録し忘れている
- rpc.yppasswdd に渡す master.passwd のパス(nis_yppasswdd_flags)が実際のファイルと違っている
を確認してみて下さい。
ipfw 設定
ipfw でフィルタリング の Web ページを見て、 設定を行う。
NIS サーバの移行
旧 NIS サーバと、新 NIS サーバを入れ替えます。作業では、 旧 NIS サーバ, 新 NIS サーバのマシン名, IP アドレスを同じにします。 また、NIS ドメイン名は変更しません。
NIS 設定ファイルの移行
- 旧 NIS サーバ に root でログインし、/var/yp をアーカイブする
# cd /var # tar -cvf /usr/var_yp.backup20041017.tar ./yp
- 新 NIS サーバ に root でログインし、アーカイブを取得して展開する
# sftp <旧NISサーバ> > cd /usr > lcd /var > get var_yp.backup20041017.tar > exit # cd /var # tar -xvf var_yp.backup20041017.tar ./yp/nis.inputs ./yp/Makefile # vi /var/yp/securenets
展開先の /var/yp に古いマップが残っている場合は、 新しいマップを作り直す前に /var/yp/<NISドメイン名> を削除しておきます。
新 NIS サーバで、/etc/rc.conf, /etc/master.passwd, /etc/group の確認
- hostname, ifconfig のエントリを、旧 NIS サーバのものと同じに書き換える。
- nisdomainname が正しい NIS ドメイン名になっていることを確認。
- /etc/master.passwd, /etc/group に、「+」の行があることを確認。
新 NIS サーバで、NIS ドメイン名、ホスト名の変更
# domainname <NISドメイン名> # hostname <変更するホスト名>
新 NIS サーバの立ち上げ
新 NIS サーバマシンで ypinit -m を実行し、NIS サーバを立ち上げます。 スレーブサーバがある場合は、NIS サーバの一覧にそのホスト名を入力します。
# service rpcbind start # service ypserv start # cd /var/yp # ypinit -m <NISドメイン名> はじめの質問は n 次の質問(NIS サーバの一覧)は ctrl+D 次の質問は y # cd /var/yp # make # shutdown -r now
旧 NIS サーバの停止と、NIS スレーブサーバマシンの設定
- 旧 NIS マスターサーバマシンの運転停止
- NIS スレーブマシンにおいて 「ypinit -s <新 NIS サーバマシン名> <NISドメイン名>」を実行
- NIS スレーブマシンの ypbind 再起動(service ypbind restart)
動作確認
NIS のファイルが参照できるかなどの確認
# ypwhich # ypcat passwd # ypcat group # ypcat hosts