9.7.3. ファイアウォール背後での NFS の実行

NFS は rpcbind を必要としますが、これは RPC サービス用のポートを動的に割り当てて、ファイアーウォールルールの設定中に問題を起こす可能性があります。クライアントがファイアウォール背後で NFS 共有にアクセスできるようにするには、/etc/sysconfig/nfs 設定ファイルを編集して必要な RPC サービスが実行するポートを制御するようにします。
/etc/sysconfig/nfs はデフォルトですべてのシステム上には存在していないかも知れません。存在しない場合は、作成して port の部分を未使用のポート番号で入れ替えることで、後に続く変数を追加します。 (別の方法として、ファイルが存在する場合は、デフォルトのエントリーをアンコメント化して必要に応じて変更します)。
MOUNTD_PORT=port
mountd (rpc.mountd) が使用する TCP と UDP ポートを制御します。
STATD_PORT=port
状態 (rpc.statd) が使用する TCP と UDP ポートを制御します。
LOCKD_TCPPORT=port
nlockmgr (lockd) が使用する TCP ポートを制御します。
LOCKD_UDPPORT=port
nlockmgr (lockd) が使用する UDP ポートを制御します。
NFS が開始に失敗した場合、/var/log/messages をチェックします。通常は、すでに使用中のポート番号を指定した場合に NFS は開始に失敗します。/etc/sysconfig/nfs を編集した後に、service nfs restart を使用して NFS サービスを再開始します。rpcinfo -p コマンドを実行すると、その変化を確認できます。
NFS を許可するようにファイアウォールを設定するには、以下のステップを実行します。

手順9.1 NFS を許可するためのファイアウォールの設定

  1. NFS 用に TCP と UDP ポート 2049 を許可します。
  2. TCP と UDP ポート 111 (rpcbind/sunrpc) を許可します。
  3. TCP と MOUNTD_PORT="port" で指定された UDP ポートを許可します。
  4. TCP と STATD_PORT="port" で指定された UDP ポートを許可します。
  5. LOCKD_TCPPORT="port" で指定された TCP ポートを許可します。
  6. LOCKD_UDPPORT="port"で指定された UDP ポートを指定します。

注記

NFSv4.0 コールバックがファイアウォールを通過するように許可するには、/proc/sys/fs/nfs/nfs_callback_tcpport をセットして、サーバーがクライアント上のそのポートに接続できるようにします。
このプロセスは、NFSv4.1 またはそれ以降には必要ありません。そして mountdstatd、および lockd のための他のポート群は純粋な NFSv4 環境では必要ありません。

9.7.3.1. NFS エクスポートの発見

NFS サーバーがエクスポートするファイルシステムを発見する方法は2種類あります。
1つ目は、NFSv2 又は NFSv3 をサポートするいずれかのサーバー上で、showmount コマンドの使用です:
$ showmount -e myserver
Export list for mysever
/exports/foo
/exports/bar
2つ目は、NFSv4 をサポートするサーバー上で、/ をマウントして周囲を見て回ります。
# mount myserver:/ /mnt/
#cd /mnt/
exports
# ls exports
foo
bar
NFSv4 と更に NFSv2 か NFSv3 のどちらかの2種類をサポートするサーバー上では、上記の両方の方法が機能して同じ結果を出します。

注記

Red Hat Enterprise Linux 6 以前には、設定の仕方によって旧来の NFS サーバーは別々のパス経由で NFSv4 クライアントにファイルシステムをエクスポートすることがありました。それらのサーバーではデフォルトで NFSv4 を有効にしていないため、これは通常、問題にはなっていません。