Ubuntu で NFS サーバと NFS クライアントの設定

Ubuntu環境でNFSサーバーとクライアントを設定する手順。aptコマンドでのパッケージインストール、/etc/exportsファイルでの共有設定、systemdサービス管理、ufwファイアウォール設定、mountコマンドと/etc/fstabによるマウント方法。

前準備

Ubuntu のシステム更新

システムを最新の状態に保つことは、セキュリティの向上や安定性の確保のために重要である. Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する.

Ubuntu のインストールは別ページ »で説明する.

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now

サーバ側

  1. インストール

    NFSサーバ機能を提供する nfs-kernel-server パッケージをインストールする.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install nfs-kernel-server
    
  2. 設定

    共有するディレクトリとアクセス権限を設定する.設定は /etc/exports ファイルに記述する. 以下の例は、/home ディレクトリをネットワークアドレスが「XXX.YYY.ZZZ.0」でサブネットマスクが「255.255.255.0」のネットワーク(CIDR表記では XXX.YYY.ZZZ.0/24)に対して共有する設定である.「XXX.YYY.ZZZ.0/24」の部分は,各自の環境に合わせて適切に設定する必要がある.

    echo "/home XXX.YYY.ZZZ.0/24(rw,sync,no_root_squash,no_subtree_check)" | sudo tee -a /etc/exports
    

    上記の例で使用されている主なオプションは以下の通りである.セキュリティを考慮する場合、root_squash などの他のオプションも検討する必要がある.

    • rw: 読み書きを許可する.
    • sync: データ書き込み要求があった場合,すぐにディスクに書き込む.これによりデータの一貫性が保たれるが,パフォーマンスは若干低下する可能性がある.
    • no_root_squash: クライアント側の root ユーザーのアクセスをサーバ側の root ユーザーとして扱う.デフォルトの root_squash はクライアント側の root ユーザーをサーバ側の匿名ユーザー (通常 nobody) として扱う.
    • no_subtree_check: サブツリーチェックを行わない.サブディレクトリを共有する場合にパフォーマンスが向上する可能性があるが,共有ディレクトリがパーティションのルートでない場合はセキュリティ上の注意が必要となる.

    設定変更後、NFSサービスに設定を反映させる.Ubuntu 24.04 LTS では systemd を使用しており、systemctl コマンドを使用するのが標準的である.

    sudo systemctl restart nfs-kernel-server.service
    

    または、サービスを再起動せずに設定ファイルだけを再読み込みさせるには exportfs -ra コマンドを使用できる.

    sudo exportfs -ra
    
  3. ファイアウォールの設定

    NFSサービスが外部からアクセスできるように、ファイアウォールで必要なポートを開放する.Ubuntuのデフォルトファイアウォールである ufw を使う場合、NFSサービス名で許可するのが最も簡単である.NFSv4はデフォルトでTCPの2049ポートを使用するが、古いバージョンなどでは rpcbind, mountd など複数のポートを使用する場合があるため、サービス名での許可が推奨される.

    ufw コマンドを使って、NFSに必要なポートを、必要なIPアドレスに対してのみ開放する.

    # すべてのインターフェースからNFSアクセスを許可する場合
    sudo ufw allow nfs
    # 特定のIPアドレス (例: 192.168.1.100) からのみ許可する場合
    # sudo ufw allow from 192.168.1.100 to any port nfs
    # 特定のネットワーク (例: 192.168.1.0/24) からのみ許可する場合
    # sudo ufw allow from 192.168.1.0/24 to any port nfs
    

クライアント側

NFS共有をマウントするには、まず必要なツールを含む nfs-common パッケージをインストールする必要がある.

sudo apt update
sudo apt install -y nfs-common

NFS共有をマウントするには mount コマンドを使用する.「111.222.333.44」はNFSサーバーのIPアドレスまたはホスト名に、「:/home」はサーバー側で共有設定したパスに、「/home」はクライアント側のマウントポイントパスにそれぞれ置き換える必要がある.

sudo mount -t nfs 111.222.333.44:/home /home

この mount コマンドによるマウントは一時的なものである.システム起動時に自動的にマウントするには、/etc/fstab ファイルに適切な設定を記述する方法が一般的である./etc/fstab に設定する際は、NFSサーバーが利用できない場合でもシステムの起動を妨げないように nofail オプションを含めることが推奨される.また、より柔軟な自動マウント方法として autofs を利用することも可能である.