LPIC 202 対策:NFS(Network File System)の整理する
個人のメモ書きとして整理しました。
間違えているところがあれば指摘お願いします
NFSは、**RPC(Remote Procedure Call)**プロトコルに基づいて動作し、ファイル共有を提供します。
LPIC 202では、デーモンの役割、設定ファイル、そしてバージョンごとの違いが頻出。
1. サーバー構成と主要なデーモン
/etc/exports:共有設定の定義
| オプション | 意味 | 影響と対策(備考) |
|---|---|---|
rw / ro
|
読み書き (Read/Write) または 読み取り専用 (Read Only) で共有します。 | 基本の権限設定です。 |
sync (デフォルト) |
クライアントからの書き込み要求がディスクに実際に書き込まれるまで、サーバーは応答を返しません。 | データ保全性が高いが、I/O性能は低下し、遅くなります。LPICではこの違いが重要です。 |
async |
書き込みデータをサーバーのキャッシュに保持し、すぐに応答を返します。 | 高速ですが、サーバーダウン時にキャッシュ内のデータ損失のリスクがあります。 |
root_squash (デフォルト) |
クライアント側のrootユーザーを、サーバー側の匿名ユーザー(通常は**nobody**)にマッピングします。 |
セキュリティ対策として非常に重要です。意図しないroot権限での操作を防ぎます。 |
no_root_squash |
クライアント側のrootユーザーの権限をそのまま保持します。 | 危険な設定です。信頼できる特定の管理用途以外での使用は避けるべきです。 |
all_squash |
すべてのクライアントユーザー(root以外も含む)をサーバー側の匿名ユーザー(nobody)にマッピングします。 |
ゲスト共有など、クライアントのユーザーIDを無視したい場合に利用されます。 |
anonuid=N, anongid=N |
root_squashやall_squashによってマッピングされる匿名ユーザーのUID/GIDを明示的に指定します。 |
通常のnobody(UID/GID 65534)以外にマッピングしたい場合に使います。 |
反映コマンド:
設定変更後は、NFSサービスを再起動せずに**exportfs -r(再エクスポート)やexportfs -a**(すべてエクスポート)でカーネルテーブルに反映させます。
NFSの主要デーモン
| デーモン名 | 役割 | 備考 |
|---|---|---|
rpc.nfsd, rpc.mountd
|
NFSサービスの中核機能。 | |
rpcbind (または portmap) |
RPCサービスのポートマッパー。(ポート 111) | トラブルシューティングの起点。 |
rpc.idmapd |
NFSv4でのユーザーIDマッピング(user@domain形式を処理)。 |
NFSv4で必須。 |
2. NFSv4の強化ポイントとセキュリティ
NFSv4は、従来のNFSv3と比較して、接続の簡素化とセキュリティ強化が図られています。
NFSv4の決定的な違い
| 特徴 | NFSv3 | NFSv4 |
|---|---|---|
| 接続ポート | 複数の動的ポートを使用(rpcbindが必要)。 |
単一のポート 2049/TCPのみを使用。 |
| 状態管理 | ステートレス(状態非保持)。 | ステートフル(状態保持)。 |
| ファイルロック | 外部プロトコル(NLM)に依存。 | NFSプロトコル内に統合。 |
NFSv4のセキュリティ強化
NFSv4では、より堅牢な認証メカニズムがサポートされました。
-
Kerberos認証(
sec=krb5*)がサポートされる。-
sec=krb5: Kerberosによる認証のみ。 -
sec=krb5i: Kerberos認証に加え、インテグリティ(データ改ざん防止)を提供。 -
sec=krb5p: Kerberos認証、インテグリティに加え、プライバシー(データ暗号化)を提供。
-
-
試験対策: 試験では「NFSv4でセキュリティを強化する方法」として、このKerberos認証(特に
krb5p)の利用が出題されやすいです。
3. クライアント側のマウントとsystemd連携
/etc/fstab による永続マウント
システム起動時にNFS共有を自動でマウントするために、/etc/fstabに記述します。
| オプション | 意味 |
|---|---|
hard (デフォルト) |
サーバー応答まで無期限にリトライ。データ保全性重視。 |
soft |
タイムアウト設定後にエラーを返す。応答性重視。 |
_netdev |
ネットワークが必要なファイルシステムであることを示し、システムがネットワーク接続を確立した後にマウントを行うように指示する。 |
defaults |
rw, suid, dev, exec, auto, nouser, async のセット。 |
記述例:
server:/exported/dir /mnt/nfs nfs defaults,_netdev 0 0
-
_netdevタイプでの記述例を示すと、実務的にも試験的にも有用です。
systemdとの連携
現代のLinuxディストリビューションでは、サービス管理にsystemdが使われています。
-
サービス管理の流れ: 従来の
service nfs-server startや/etc/init.d/nfs-server startではなく、systemctl start nfs-server(またはnfs-kernel-serverなど) でサービスを管理します。 -
LPICのポイント: LPICでは「従来のSysV initとsystemdの違い」を問うケースがあるため、NFSデーモンや
rpcbindデーモンをsystemctlコマンドで操作する流れを理解しておく必要があります。- サービスの有効化:
systemctl enable nfs-server - 状態確認:
systemctl status nfs-server
- サービスの有効化:
4. 診断コマンド
| コマンド | 目的 |
|---|---|
rpcinfo -p [IP] |
サーバーでRPCサービスが動いているかを確認。 |
showmount -e [IP] |
サーバーがエクスポートしている共有ディレクトリの一覧を表示。 |
nfsstat -c / -s |
クライアント/サーバーの統計情報を表示。 |