手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 NFS の基本設定 – nfs-kernel-server と exports で共有範囲を管理する

Ubuntu 26.04 ストレージ関連の記事

Ubuntu 26.04 で NFS server を構成する場合、重要なのは nfs-kernel-server を入れることだけではありません。どの directory を、どの client network に、どの option で公開するのかを先に決めておく必要があります。

この記事では、NFS server 側の /etc/exportsexportfsnfs-kernel-server.service の確認に絞ります。client 側の mount、fstab、autofs は別記事で扱います。

この記事で扱うこと
  • NFS server で決める export path と client network
  • /etc/exports の基本的な書き方
  • rwsyncroot_squashno_subtree_check の意味
  • exportfs -rashowmount による確認

NFS server で決めること

NFS の公開設定は、server 側の filesystem 権限と network 側の許可範囲の両方で成立します。/etc/exports に client network を書いても、公開 directory の owner や permission が合っていなければ期待どおりには使えません。

項目確認する内容
export pathserver 側で公開する directory
client address許可する client IP address または network
rw / ro書き込みを許可するか、読み取り専用にするか
sync書き込みを安定寄りに扱う
root_squashclient root を server 側 root として扱わない
no_subtree_checkexport directory 配下の subtree check を無効にする

root_squash は特に重要です。client 側の root を server 側の root として扱うと、共有領域の権限境界が崩れやすくなります。特別な理由がない限り、NFS export は root_squash を前提にします。

nfs-kernel-server をインストールする

Ubuntu 26.04 で NFS server を動かすには、nfs-kernel-server をインストールします。

sudo apt update
sudo apt install -y nfs-kernel-server
sudo systemctl enable --now nfs-kernel-server.service
systemctl status nfs-kernel-server.service --no-pager

export directory を用意する

ここでは例として /mnt/autofs/usbdisk/backup を公開します。実際には、バックアップ領域、共有データ領域、アプリケーション用領域など、用途が明確な path を使います。

sudo install -d -o root -g root -m 0755 /mnt/autofs/usbdisk/backup

NFS は server 側の権限をそのまま無視する仕組みではありません。書き込みを許可する場合は、共有領域の owner、group、permission、client 側の UID / GID の見え方を合わせて確認します。

/etc/exports を設定する

/etc/exports には、公開する path と許可する client network を書きます。IPv4 と IPv6 の両方を使う環境では、それぞれの network を明示します。

sudo tee /etc/exports >/dev/null <<'EOF'
/mnt/autofs/usbdisk/backup 10.145.0.0/24(rw,sync,no_subtree_check,root_squash) fd00::a91:0/120(rw,sync,no_subtree_check,root_squash) 10.1.0.0/24(rw,sync,no_subtree_check,root_squash) fd00::a01:0/120(rw,sync,no_subtree_check,root_squash)
EOF

公開範囲を広げたい場合でも、まずは必要な subnet だけを許可します。*(rw,...) のような広い指定は、検証用であっても本番設定に残さない方が安全です。

exports を反映する

/etc/exports を変更したら、exportfs -ra で反映します。service の再起動だけに頼らず、現在の export 状態を確認します。

sudo exportfs -ra
sudo exportfs -v
showmount -e localhost

exportfs -v では、server が現在公開している path と option を確認できます。showmount -e localhost は外部 client からの確認ではありませんが、server 側の export 定義が見えているかを手早く確認できます。

Firewall と待ち受けを確認する

NFS は RPC 系の通信を使うため、単に service が active かどうかだけでは判断できません。server 側で待ち受け、firewall、client network からの到達性を確認します。

systemctl status nfs-kernel-server.service --no-pager
ss -ltnup | grep -E '(:111|:2049)'
sudo nft list ruleset

firewall を OS 側で管理している場合は、NFS を許可する network を /etc/exports の client network と合わせます。exports では許可しているのに firewall で落としている、または firewall では広く開けているのに exports が狭い、というずれを避けます。

client から確認する

別ホストから確認する場合は、server の export 一覧を見てから、試験用 mount point に mount します。ここでは server address を 192.0.2.10 として例示します。

showmount -e 192.0.2.10
sudo mkdir -p /mnt/test-nfs
sudo mount -t nfs4 192.0.2.10:/mnt/autofs/usbdisk/backup /mnt/test-nfs
mount | grep /mnt/test-nfs
df -h /mnt/test-nfs

確認後に一時 mount を外します。継続利用する場合は、NFS mount 専用の記事で fstab や autofs の設定として管理します。

sudo umount /mnt/test-nfs

切り分けの見方

NFS の問題は、server 側 export、network 到達性、client 側 mount option、UID / GID mapping、filesystem 権限のどこで止まっているかを分けて確認します。

確認するポイント
  • nfs-kernel-server.service が起動しているか
  • exportfs -v に公開 path が出ているか
  • /etc/exports の client network が実際の client と合っているか
  • OS firewall で NFS 通信を許可しているか
  • server 側 directory の owner / group / permission が用途に合っているか

まとめ

NFS server の基本は、nfs-kernel-server、公開 directory、/etc/exportsexportfs、firewall、client 側確認を分けて見ることです。特に /etc/exports は共有範囲そのものなので、path、client network、option を曖昧にしないことが重要です。

client 側で固定 mount する場合は fstab、必要な時だけ mount する場合は autofs と組み合わせます。server 側と client 側を同じ記事に詰め込むより、責務を分けて確認した方が運用時の切り分けがしやすくなります。

関連する記事
Ubuntu 26.04 NFS の基本設定 – nfs-kernel-server と exports で共有範囲を管理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る