3.14. NFSv4 専用サーバーの設定

NFS サーバー管理者は、NFSv4 のみをサポートするように NFS サーバーを設定できます。これにより、システムで開いているポートの数と実行中のサービスの数が最小限に抑えられます。

3.14.1. NFSv4 専用サーバーの長所と短所

このセクションでは、NFSv4 のみをサポートするように NFS サーバーを設定する長所と短所を説明します。

デフォルトでは、NFS サーバーは Red Hat Enterprise Linux 8 の NFSv2、NFSv3、および NFSv4 の接続をサポートします。ただし、NFS バージョン 4.0 以降のみをサポートするように NFS を設定することもできます。NFSv4 では rpcbind サービスがネットワークをリッスンする必要がないため、これにより、システムで開いているポートと実行中のサービスの数が最小限に抑えられます。

NFS サーバーが NFSv4 専用として設定されていると、NFSv2 または NFSv3 を使用して共有をマウントしようとするクライアントは、次のようなエラーでマウントに失敗します。

Requested NFS version or transport protocol is not supported.

必要に応じて、RPCBINDMOUNT、および NSM のプロトコル呼び出しのリッスンを無効にすることもできます。これは NFSv4 専用の場合は不要です。

これらの追加オプションを無効にすると、次のような影響があります。

  • NFSv2 または NFSv3 を使用してサーバーから共有をマウントしようとするクライアントが応答しなくなります。
  • NFS サーバー自体が NFSv2 および NFSv3 のファイルシステムをマウントできなくなります。

3.14.2. NFS および rpcbind

このセクションでは、NFSv3 で必要とされる rpcbind サービスの目的を説明します。

rpcbind サービスは、リモートプロシージャーコール (RPC) サービスを、そのサービスがリッスンするポートにマッピングします。RPC のプロセスが開始すると、その開始が rpcbind に通知され、そのプロセスがリッスンしているポートおよびそのプロセスが処理することが予想される RPC プログラム番号が登録されます。クライアントシステムは、特定の RPC プログラム番号でサーバーの rpcbind と通信します。rpcbind サービスはクライアントを適切なポート番号にリダイレクトし、要求されたサービスと通信できるようにします。

RPC ベースのサービスは、クライアントの受信要求で接続を確立するのに、必ず rpcbind を使用します。したがって、RPC ベースのサービスが起動する前に、rpcbind が利用可能な状態にする必要があります。

rpcbind のアクセス制御ルールは、すべての RPC ベースのサービスに影響します。あるいは、NFS RPC デーモンごとにアクセス制御ルールを指定することもできます。

関連情報
  • アクセス制御ルールの正確な構文は、man ページの rpc.mountd(8)rpc.statd(8) を参照してください。

3.14.3. NFSv4 のみをサポートするように NFS サーバーの設定

この手順では、NFS サーバーが NFS バージョン 4.0 以降のみをサポートするように設定する方法を説明します。

手順
  1. /etc/nfs.conf 設定ファイルの [nfsd] セクションに次の行を追加して、NFSv2 および NFSv3 を無効にします。

    [nfsd]
    
    vers2=no
    vers3=no
  2. 必要に応じて、RPCBINDMOUNT、および NSM のプロトコル呼び出しのリッスンを無効にします。これは NFSv4 専用の場合は不要です。関連するサービスを無効にします。

    # systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
  3. NFS サーバーを再起動します。

    # systemctl restart nfs-server

変更は、NFS サーバーを起動または再起動するとすぐに反映されます。

3.14.4. NFSv4 専用の設定の確認

この手順では、netstat ユーティリティーを使用して、NFS サーバーが NFSv4 専用モードで設定されていることを確認する方法を説明します。

手順
  • TCP プロトコルおよび UDP プロトコルでリッスンしているサービスを一覧表示するには、netstat ユーティリティーを使用します。

    # netstat --listening --tcp --udp

    例3.3 NFSv4 専用サーバーの出力

    以下は、NFSv4 専用サーバーでの netstat の出力例です。RPCBINDMOUNT、および NSM のリッスンも無効になります。nfs が唯一リッスンする NFS サービスとなります。

    # netstat --listening --tcp --udp
    
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:nfs             0.0.0.0:*               LISTEN
    tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
    tcp6       0      0 [::]:nfs                [::]:*                  LISTEN
    udp        0      0 localhost.locald:bootpc 0.0.0.0:*

    例3.4 NFSv4 専用サーバーを設定する前の出力

    対照的に、NFSv4 専用サーバーを設定する前の netstat 出力には、sunrpc サービスと mountd サービスが含まれています。

    # netstat --listening --tcp --udp
    
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address State
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:40189           0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:46813           0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:nfs             0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*       LISTEN
    tcp        0      0 0.0.0.0:mountd          0.0.0.0:*       LISTEN
    tcp6       0      0 [::]:ssh                [::]:*          LISTEN
    tcp6       0      0 [::]:51227              [::]:*          LISTEN
    tcp6       0      0 [::]:nfs                [::]:*          LISTEN
    tcp6       0      0 [::]:sunrpc             [::]:*          LISTEN
    tcp6       0      0 [::]:mountd             [::]:*          LISTEN
    tcp6       0      0 [::]:45043              [::]:*          LISTEN
    udp        0      0 localhost:1018          0.0.0.0:*
    udp        0      0 localhost.locald:bootpc 0.0.0.0:*
    udp        0      0 0.0.0.0:mountd          0.0.0.0:*
    udp        0      0 0.0.0.0:46672           0.0.0.0:*
    udp        0      0 0.0.0.0:sunrpc          0.0.0.0:*
    udp        0      0 0.0.0.0:33494           0.0.0.0:*
    udp6       0      0 [::]:33734              [::]:*
    udp6       0      0 [::]:mountd             [::]:*
    udp6       0      0 [::]:sunrpc             [::]:*
    udp6       0      0 [::]:40243              [::]:*