ALL : localhost 127.0.0.1 : allow
を書いておかないと nis クライアントが正しく動作しなかったりするので気をつけましょう、という話。
自分が設定した後に管理を他人に任せていたLinux機 ( debian ) がありました。管理者がいなくなって放置されていたため、回収してOSを更新していたのですが、何故かNISサーバに接続出来ないのです。
# /etc/init.d/nis restart [....] Stopping NIS services: ypbindstart-stop-daemon: warning: failed to kill 4164: No such process [ ok rv ypppasswdd ypxfrd. [....] Starting NIS services: ypbind[....] binding to YP server.................[FAIL.....................failed (backgrounded). . ok
ypbind で何かが起こっているらしく、起動しない、じゃなくて、NISサーバに接続出来ない。ypbind をデバッグモードで起動してみます。
# ypbind -debug 4447: parsing config file 4447: Trying entry: ypserver 192.168.1.111 4447: parsed ypserver 192.168.1.111 4447: add_server() domain: lo_nis_domain, host: 192.168.1.111, slot: 0 4447: [Welcome to ypbind-mt, version 1.20.1] 4447: ping interval is 20 seconds 4449: NetworkManager is running. 4449: Are offline 4449: interface: org.freedesktop.DBus, object path: /org/freedesktop/DBus, method: NameAcquired サービスを登録できません: RPC: 認証エラーです; why = クライアントの信任が弱すぎます 4447: Unable to register (YPBINDPROG, YPBINDVERS, udp).
何故だー? と思ってエラーメッセージを元に検索してみたら…
tcpwrapperを設定しているのが原因。きりんメモ@GIFU( http://giraffeforestg.blog.fc2.com/blog-entry-44.html )
あれ?と思って /etc/hosts.allow を見ると
ALL: 192.168.1. :allow ALL: deny
確かにlocalhostの記述がない…セグメント丸ごとALLにして満足していたのか、昔の自分。
ALL: localhost 127.0.0.1 : allow ALL: 192.168.1. :allow ALL: deny
と修正して nis を再起動してみると、
# service nis restart [....] Stopping NIS services: ypbindstart-stop-daemon: warning: failed to kill 4447: No such process [ ok rv ypppasswdd ypxfrd. [ ok ] Starting NIS services: ypbind.
あっさり解決。(IPv6の人は[::1]も書いた方がいいのかも?)
/etc/hosts.allow は portmap, rpcbindが参照しているので nis や nfs といったrpc絡みのサービスに影響するのに、油断していたなあ、という話でした。