Home

技術系のメモと日々の雑感

NFS と TCP Wrapper (Part2)

CentOS 5.3 でサーバ全体のレスポンスが極端に悪くなることがあった。
Domain-U に作った環境だったので最初は Xen を疑ったけど、結局は NFS の設定が不完全なのが原因だった。
現象が出たとき NFS サーバ側の dmesg には次のようなメッセージが出ていた。

lockd: server XXX.XXX.XXX.XXX not responding, timed out

表示されている IP アドレスは NFS クライアントのもの。
同様に NFS クライアント側の dmesg にも

statd: server localhost not responding, timed out
lockd: cannot monitor XXX.XXX.XXX.XXX
lockd: failed to monitor XXX.XXX.XXX.XXX

というメッセージが出ていた。
こっちに表示されている IP アドレスは NFS サーバのものだ。
これを見て nfslock サービスの問題だと気づいたんだけど、前に設定したときは nfs と portmap しか気にしてなかったはず。
不思議だ。
サーバとクライアントの両方で nfslock を無効にしていたら関係ないのかなぁ。
原因が分かったとはいえ、TCP Wrapper で制限をかけているので、ここからさらに試行錯誤が必要だった。
結果をまとめておくと、NFS サーバ側は portmapnfsnfslock を有効にして、/etc/hosts.allow には

portmap:[NFSクライアントのIP]
mountd:[NFSクライアントのIP]

と書く。
NFS クライアント側は portmapnfslock を有効にして、/etc/hosts.allow に

portmap:[NFSサーバのIP]

と書けばよかった。
ちなみに、iptables ではサーバとクライアント間は IP アドレスだけで制限して、ポートは NFS に限らずすべて許可している。
iptables で NFS(v3) のポートをきっちり制限するのは難しいので、現時点では TCP Wrapper と組み合わせるのがベストかと。
そういえば nfs と nfslock のサービスが分けられているのがちょっとした疑問だったんだけど、これってクライアント側でも nfslock を使うからなんだね。
今頃気づいてる自分って・・・。

この記事に対するトラックバック

この記事のトラックバックURL

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する