Red Hat Training

A Red Hat training course is available for RHEL 8

4.11. ファイアウォールの背後で動作するように NFS サーバーを設定する手順

NFS には rpcbind サービスが必要です。このサービスは RPC サービスのポートを動的に割り当て、ファイアウォールルールの設定で問題が発生する可能性があります。以下のセクションでは、サポートが必要な場合に、ファイアウォールの内側で機能するように NFS バージョンを設定する方法を説明します。

  • NFSv3

    これには、NFSv3 をサポートするサーバーがすべて含まれます。

    • NFSv3 専用サーバー
    • NFSv3 と NFSv4 の両方に対応するサーバー
  • NFSv4 専用

4.11.1. ファイアウォールの内側で動作するように NFSv3 対応サーバーを設定する手順

次の手順では、NFSv3 に対応するサーバーを設定し、ファイアウォールの内側で実行する方法を説明します。これには、NFSv3 専用サーバー、および NFSv3 と NFSv4 の両方をサポートするサーバーが含まれます。

手順

  1. クライアントがファイアウォールの背後にある NFS 共有にアクセスできるようにするには、NFS サーバーで次のコマンドを実行してファイアウォールを設定します。

    firewall-cmd --permanent --add-service mountd
    firewall-cmd --permanent --add-service rpc-bind
    firewall-cmd --permanent --add-service nfs
  2. /etc/nfs.conf ファイルで、RPC サービス nlockmgr が使用するポートを次のように指定します。

    [lockd]
    
    port=tcp-port-number
    udp-port=udp-port-number

    または、/etc/modprobe.d/lockd.conf ファイルで、nlm_tcpport および nlm_udpport を指定することもできます。

  3. NFS サーバーで以下のコマンドを実行して、ファイアウォールで指定したポートを開きます。

    firewall-cmd --permanent --add-port=<lockd-tcp-port>/tcp
    firewall-cmd --permanent --add-port=<lockd-udp-port>/udp
  4. 以下のように、/etc/nfs.conf ファイルの [statd] セクションを編集して、rpc.statd の静的ポートを追加します。

    [statd]
    
    port=port-number
  5. NFS サーバーで以下のコマンドを実行して、ファイアウォールに追加したポートを開きます。

    firewall-cmd --permanent --add-port=<statd-tcp-port>/tcp
    firewall-cmd --permanent --add-port=<statd-udp-port>/udp
  6. ファイアウォール設定を再読み込みします。

    firewall-cmd --reload
  7. rpc-statd サービスを最初に再起動してから、nfs-server サービスを再起動します。

    # systemctl restart rpc-statd.service
    # systemctl restart nfs-server.service

    または、/etc/modprobe.d/lockd.conf ファイルの lockd ポートを指定した場合は、次のコマンドを実行します。

    1. /proc/sys/fs/nfs/nlm_tcpport/proc/sys/fs/nfs/nlm_udpport の現在の値を更新します。

      # sysctl -w fs.nfs.nlm_tcpport=<tcp-port>
      # sysctl -w fs.nfs.nlm_udpport=<udp-port>
    2. rpc-statd サービスおよび nfs-server サービスを再起動します。

      # systemctl restart rpc-statd.service
      # systemctl restart nfs-server.service

4.11.2. ファイアウォールの内側で実行されるように NFSv4 専用サーバーを設定する手順

次の手順では、NFSv4 専用サーバーをファイアウォールの内側で実行するように設定する方法を説明します。

手順

  1. クライアントがファイアウォールの背後にある NFS 共有にアクセスできるようにするには、NFS サーバーで次のコマンドを実行してファイアウォールを設定します。

    firewall-cmd --permanent --add-service nfs
  2. ファイアウォール設定を再読み込みします。

    firewall-cmd --reload
  3. NFS サーバーを再起動します。

    # systemctl restart nfs-server

4.11.3. ファイアウォールの内側で動作するように NFSv3 クライアントを設定する手順

ファイアウォールの内側で実行するように NFSv3 クライアントを設定する手順は、ファイアウォールの内側で実行するように NFSv3 サーバーを設定する手順と似ています。

設定するマシンが NFS クライアントとサーバーの両方である場合には、NFSv3 対応サーバーがファイアウォールの内側で実行されるように設定する手順 で説明されている手順に従います。

以下の手順では、ファイアウォールの内側でのみ NFS クライアントマシンを設定する方法を説明します。

手順

  1. クライアントがファイアウォールの内側で NFS クライアントにコールバックを実行できるようにするには、NFS クライアントで以下のコマンドを実行して rpc-bind サービスをファイアウォールに追加します。

    firewall-cmd --permanent --add-service rpc-bind
  2. /etc/nfs.conf ファイルで、RPC サービス nlockmgr が使用するポートを次のように指定します。

    [lockd]
    
    port=port-number
    udp-port=upd-port-number

    または、/etc/modprobe.d/lockd.conf ファイルで、nlm_tcpport および nlm_udpport を指定することもできます。

  3. NFS クライアントで以下のコマンドを実行して、ファイアウォールで指定したポートを開きます。

    firewall-cmd --permanent --add-port=<lockd-tcp-port>/tcp
    firewall-cmd --permanent --add-port=<lockd-udp-port>/udp
  4. 以下のように、/etc/nfs.conf ファイルの [statd] セクションを編集して、rpc.statd の静的ポートを追加します。

    [statd]
    
    port=port-number
  5. NFS クライアントで以下のコマンドを実行して、ファイアウォールに追加したポートを開きます。

    firewall-cmd --permanent --add-port=<statd-tcp-port>/tcp
    firewall-cmd --permanent --add-port=<statd-udp-port>/udp
  6. ファイアウォール設定を再読み込みします。

    firewall-cmd --reload
  7. rpc-statd サービスを再起動します。

    # systemctl restart rpc-statd.service

    または、/etc/modprobe.d/lockd.conf ファイルの lockd ポートを指定した場合は、次のコマンドを実行します。

    1. /proc/sys/fs/nfs/nlm_tcpport/proc/sys/fs/nfs/nlm_udpport の現在の値を更新します。

      # sysctl -w fs.nfs.nlm_tcpport=<tcp-port>
      # sysctl -w fs.nfs.nlm_udpport=<udp-port>
    2. rpc-statd サービスを再起動します。

      # systemctl restart rpc-statd.service

4.11.4. ファイアウォールの内側で動作するように NFSv4 クライアントを設定する手順

この手順は、クライアントが NFSv4.0 を使用している場合に限り行います。その場合は、NFSv4.0 コールバックのポートを開く必要があります。

この手順は、NFSv4.1 以降では必要ありません。これは、新しいプロトコルバージョンでは、クライアントによって開始された同じ接続でサーバーがコールバックを実行するためです。

手順

  1. NFSv4.0 コールバックがファイアウォールを通過できるようにするには、以下のように /proc/sys/fs/nfs/nfs_callback_tcpport を設定して、サーバーがクライアントのそのポートに接続できるようにします。

    # echo "fs.nfs.nfs_callback_tcpport = <callback-port>" >/etc/sysctl.d/90-nfs-callback-port.conf
    # sysctl -p /etc/sysctl.d/90-nfs-callback-port.conf
  2. NFS クライアントで以下のコマンドを実行して、ファイアウォールの指定のポートを開きます。

    firewall-cmd --permanent --add-port=<callback-port>/tcp
  3. ファイアウォール設定を再読み込みします。

    firewall-cmd --reload