ファイアウォールを越えての NFS マウント (2009/04/18)

(追記 2009/04/18) サーバ移行で下記の lockd のポート設定を忘れていました.この状態でも一応 NFS マウントできます.しかし,ファイヤウォール越しで NFS マウントしたクライアントは,lockd による NFS サーバとの通信ができなくなり,ファイルサーバのファイルなどは見えていましたが,TAB によるファイル名補完が効かなくなったり,ウェブの CGI が動かなくなったり,メーリングリストのコマンドが効かなくなったりしてしまいました.

ファイアウォールを介したプライベートネットワーク間で NFS マウントしました.ここでのファイアウォールの設定は,全てを禁止した上で,必要なポートを許可するというものです.なお,ファイアウォールを越えて NFS マウントすることは,あまり薦められませんので,注意して下さい.

NFS では通常,ポートマッパが NFS マウントに必要なサービスのポートを空いているポートから割り当てるので,やっかいです.そこで,ここでは,NFS サーバが利用する NFS 関連のポートを固定することについて述べます.

NFS サーバで提供するサービスは,portmap, nfsd, lockd, mountd, statd などです.portmap のポートは 111,nfsd のポートは 2049 で固定ですが,その他は空いているポートが割り当てられます.ここでは,lockd, mountd, statd のポートの固定方法について述べます.なお,ここでのポート番号はポート固定の説明のためによく使用されているものを選びました.実際に使用したポート番号とは別です.

statd のポートは,/etc/default/nfs-common に statd のオプションを指定する項目があります.これにより,/etc/init.d/nfs-common の起動時よりポートの固定ができます.具体的には,/etc/default/nfs-common の STATDOPTS に次を指定します.

STATDOPTS="--port 32765 --outgoing-port 32766"

これにより,statd は 32765 でブロードキャストして,32766 で待機します./etc/init.d/nfs-common を再起動すれば,ps コマンドで次のように確認できます.

/sbin/rpc.statd --port 32765 --outgoing-port 32766

ちなみに,statd のポート番号は,1024 以下のシステムポートは割り当てることができないかも知れません.1024 以下を指定して再起動しても,statd は動作しませんでした.

mountd のポートは,/etc/default/nfs-kernel-server の RPCMOUNTDOPTS で指定します.

RPCMOUNTDOPTS="--port 32767"

/etc/init.d/nfs-kernel-server を再起動すれば,ps コマンドで次のように確認できます.

/usr/sbin/rpc.mountd --port 32767

lockd は,まず,kernel に組み込まれているか,モジュールとしてビルドされているかによって方法が異なります./boot/config-2.6.15-1-686 を見ると

CONFIG_LOCKD=m
とありますので,モジュールとしてビルドされたときの方法について説明します./etc/modprobe.d/local.conf を次の内容で作成します.(追記 2009/04/18) 以前は /etc/modprobe.d/local で作成していましたが,"WARNING: All config files need .conf: /etc/modprobe.d/local, it will be ignored in a future release." というメッセージが出ましたので,ファイル名 local.conf としました.

# lockd (nlockmgr) : tcp port and udp port
options lockd nlm_udpport=32768 nlm_tcpport=32768

システムを再起動すれば (モジュールを再登録すればいいのかも知れないが,試していない),コマンド rpcinfo -p で nlockmgr が 32768 で起動していることが確認されます.

後は,ファイアウォールの設定で,ポート番号 111, 2049, 及び 32765 から 32768 を許可すれば,NFS マウントが可能です.


梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp
Last modified: 2020/05/01 15:37
Total Access Count