マスタリング TCP/IP 入門編 第6版
TCP/IP、Ethernet、VLAN、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ubuntu 26.04 で NFS server を構成する場合、重要なのは nfs-kernel-server を入れることだけではありません。どの directory を、どの client network に、どの option で公開するのかを先に決めておく必要があります。
この記事では、NFS server 側の /etc/exports、exportfs、nfs-kernel-server.service の確認に絞ります。client 側の mount、fstab、autofs は別記事で扱います。
- NFS server で決める export path と client network
/etc/exportsの基本的な書き方rw、sync、root_squash、no_subtree_checkの意味exportfs -raとshowmountによる確認
NFS server で決めること
NFS の公開設定は、server 側の filesystem 権限と network 側の許可範囲の両方で成立します。/etc/exports に client network を書いても、公開 directory の owner や permission が合っていなければ期待どおりには使えません。
| 項目 | 確認する内容 |
| export path | server 側で公開する directory |
| client address | 許可する client IP address または network |
rw / ro | 書き込みを許可するか、読み取り専用にするか |
sync | 書き込みを安定寄りに扱う |
root_squash | client root を server 側 root として扱わない |
no_subtree_check | export 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-pagerexport directory を用意する
ここでは例として /mnt/autofs/usbdisk/backup を公開します。実際には、バックアップ領域、共有データ領域、アプリケーション用領域など、用途が明確な path を使います。
sudo install -d -o root -g root -m 0755 /mnt/autofs/usbdisk/backupNFS は 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 localhostexportfs -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 rulesetfirewall を 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/exports、exportfs、firewall、client 側確認を分けて見ることです。特に /etc/exports は共有範囲そのものなので、path、client network、option を曖昧にしないことが重要です。
client 側で固定 mount する場合は fstab、必要な時だけ mount する場合は autofs と組み合わせます。server 側と client 側を同じ記事に詰め込むより、責務を分けて確認した方が運用時の切り分けがしやすくなります。

