Scientific Linux 6.x の Diskless Client ネットブート時に rpcbind のエラーで止まる
Scientific Linux 6.x で Diskless Client を作成していて、ネットブートで起動しようとしたら下記のような rpcbind のエラーで止まった。
rpcbind: cannot create socket for udp6
rpcbind: cannot create socket for tcp6
IPv6 は無効化しているはずなので、なんで IPv6 で通信しようとしてるんだろうと思ったら、RHEL 6 以降は NFS マウントのポートマッピングに portmap ではなく rpcbind を使用しているため、rpcbind で IPv6 を使用しない設定をする必要があるようだ。
rpcbind の IPv6 無効化は /etc/netconfig で設定する。
他に rpcbind 用の個別の設定ファイルで設定できないかと思ったが、どうも rpcbind では /etc/netconfig を直接 (?) 見ているようなのでここで設定する。*1
具体的には、
# cat /etc/netconfig ... 省略 ... udp6 tpi_clts v inet6 udp - - tcp6 tpi_cots_ord v inet6 tcp - - ... 省略 ...
をコメントアウトする。
# cat /etc/netconfig ... 省略 ... #udp6 tpi_clts v inet6 udp - - #tcp6 tpi_cots_ord v inet6 tcp - - ... 省略 ...
あとは、rpcbind (と、関連するサービス) を再起動させて設定を反映する。
これでエラーが出ずに起動するようになった。
あと書いてて思ったけど、rpcbind restart じゃなくて reload とかでもいけたのかな?
設定反映はとりあえず restart で! みたいな習慣あんまり良くないのかも。
社会人になって会社とかでサーバのサービス restart するときは申請書を書かないといけないとか聞いたことあるし…… [要出典]
*1:TI-RPC / rpcbind support: http://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php