NFSまたはネットワークファイルシステムは、ネットワークを介してリモートファイルシステムをマウントできるようにするネットワークプロトコルです。 NFSプロトコルは、サーバークライアントアーキテクチャ、アクセスおよびマウントの準備ができているすべてのディレクトリまたはパーティションを提供するNFSサーバー、およびrpcbindプロトコルを使用して内部ネットワーク接続を介してすべてのディレクトリとファイルシステムにアクセスするクライアントを使用します。
>ネットワークファイルシステムプロトコルの現在のステータスを以下に説明します。
1. NFSv2およびNFSv3は引き続き主要なオペレーティングシステムでサポートされていますが、セキュリティ上の理由から、信頼できるローカルネットワークへのNFSサーバーのアクセスを制限する必要があります。 NFSv2およびNFSv3は、中小規模の展開タイプに推奨されます。
2。 NFSv4プロトコルは、認証や暗号化などの基本的なセキュリティ機能を提供しますが、これらの部分はKerberosに依存しています。したがって、基本的なセキュリティ機能を備えたNFSv4を使用するための構成を追加する必要があります。
このチュートリアルでは、最新のDebian11BullseyeにNFSサーバーをインストールして構成する方法を学習します。 NFSサーバーをインストールし、ufwファイアウォールを使用してホストを制限することでアクセスを保護します。次に、NFSサーバーによって提供されるディレクトリとパーティションをマウントするようにクライアントを設定する方法と、システム起動時に「/ etc/fstab」構成を使用して自動マウントNFSサーバーを設定する方法を学習します。
1.以下のように、同じネットワーク上で2台の異なるマシンを使用します。
--debian64 --192.168.1.25 --as NFS Server
--client-debian--192.168.1.30-クライアントとして
2。 rootユーザーまたはroot権限を持つユーザー。このユーザーは、新しいパッケージのインストールとシステム構成の編集に使用されます。
NFSサーバーのインストールと構成
最初に、nfsサーバーパッケージをインストールし、クライアントの共有ディレクトリを設定します。
1.次のコマンドを実行して、nfs-serverパッケージをインストールします。
apt install nfs-kernel-server rpcbind
' yと入力します 'を押して'Enter 'インストールを続行します。
2.次に、クライアントと共有する新しいディレクトリを作成します。この例では、2つのディレクトリ「/ mnt/shared」と「/srv/data」をクライアントと共有します。また、デフォルトの「/」ルートディレクトリまたは「/etc」ディレクトリを共有しないでください。
以下のmkdirコマンドを使用して、新しい共有ディレクトリを作成します。
mkdir -p /mnt/shared
mkdir -p /srv/data
以下のechoコマンドを実行して、各ディレクトリに新しいファイルを作成します。
echo "test file nfs server" > /mnt/shared/test-file.txt
echo "test file nfs server" > /srv/data/test-file.txt
次に、以下のコマンドを実行して、両方の共有ディレクトリの所有権を「nobody:nogroup」に変更します。
chown nobody:nogroup /mnt/shared /srv/data
これで、NFSサーバーを構成する準備が整いました。
3. nfsの共有ディレクトリを構成するには、nanoエディターを使用して構成「/ etc/exports」を編集します。
nano /etc/exports
以下は、いくつかのシナリオの構成例です
読み取り/書き込みアクセス権を持つシングルホストクライアントのディレクトリを共有します。
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
ホストネットワークのグループを含む、複数のクライアントのディレクトリを共有します。
/srv/data 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)
読み取り専用アクセス権を持つ単一のクライアントのディレクトリを共有します。
/srv/data 192.168.1.30(ro)
以下は、最終的な構成例です。
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
/srv/data 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)
/srv/data 192.168.1.30(ro,no_root_squash)
' Ctrl + x を押して、構成を保存します 'ボタン、' yと入力します '、次に' Enter '終了します。
知っておくべきオプション:
- rw :ボリューム/ディレクトリへのNFSサーバーとクライアントの両方の読み取りおよび書き込みアクセスを許可します。
- ro :クライアントに読み取り専用アクセスを許可します。
- 同期 :変更が安定したストレージにコミットされた後にのみ、要求に応答します。このオプションはデフォルトで有効になっています。
- 非同期 :NFSサーバーがNFSプロトコルに違反し、リクエストによって行われた変更が安定したストレージにコミットされる前にリクエストに応答できるようにします。
- subtree_check :サブツリーチェックを許可および有効にします。このオプションはデフォルトで有効になっています。
- no_subtree_check :サブツリーチェックを無効にします。これはセキュリティに軽度の影響を及ぼしますが、状況によっては信頼性を向上させることができます。
- root_squash :リクエストをuid /gid0から匿名のuid/gidにマップします。これは、ユーザーbinやグループスタッフなど、同様に機密性が高い可能性のある他のuidやgidには適用されないことに注意してください。
- no_root_sqash :ルートスカッシングを無効にします。このオプションは、主にディスクレスクライアントに役立ちます。
4.次に、nfs-serverサービスを再起動し、以下のコマンドを使用して新しい構成を適用します。
systemctl restart nfs-server
次に、次のコマンドを使用してnfs-serverサービスを確認および確認します。
systemctl is-enabled nfs-server
systemctl status nfs-server
そして、以下と同様の出力が得られます。
ご覧のとおり、nfs-serverサービスは「有効」であり、システムの起動時に自動的に実行されます。また、nfs-serviceの現在のステータスは「アクティブ(終了)」です。これは、サービスが実行されていることを意味しますが、systemdは監視するデーモンを見つけることができません。
UFWファイアウォールを使用したNFSサーバーの保護
この段階では、ufwファイアウォールをインストールし、特定のホストとネットワークに対してのみNFSサーバーへのアクセスを制限します。
1.以下のaptコマンドを実行して、ufwパッケージをインストールします。
apt install ufw
' yと入力します 'を押して'Enter 'インストールを確認して続行します。
2.すべてのインストールが完了したら、以下のコマンドを使用して、SSHサービスをufwファイアウォールルールに追加します。
ufw allow ssh
3.次に、以下のufwコマンドを実行して、ホストまたはネットワークをufwファイアウォールに追加します。
IPアドレス'192.168.1.30のホストを許可する 'NFSサーバーにアクセスします。
ufw allow from 192.168.1.30 to any port nfs
ネットワークのブロックがNFSサーバーにアクセスできるようにします。
ufw allow from 172.16.1.0/24 to any port nfs
ufw allow from 10.11.12.0/24 to any port nfs
4.その後、次のコマンドを使用してufwファイアウォールを有効にします。
ufw enable
' yと入力します 'を押して'Enter 'ufwファイアウォールを開始して有効にします。
次に、以下のコマンドを使用してufwファイアウォールのステータスを確認します。
ufw status
そして、以下のような出力が表示されます。
ご覧のとおり、ufwファイアウォールの状態は「アクティブ」であり、デフォルトポート「2049」のNFSサービスはルールリストで利用できます。
NFSクライアントのセットアップ
この手順では、NFSサーバー上の共有ディレクトリとパーティションにアクセスするためのクライアントを構成します。
1.まず、'nfs-commonをインストールします '以下のaptコマンドを使用してパッケージ化します。
apt install nfs-common
' yと入力します 'を押して'Enter 'インストールを確認して続行します。
2.インストールが完了したら、マウントディレクトリ用の新しいディレクトリを作成します。
mkdir -p /nfs/shared; mkdir -p /nfs/data
3. NFSサーバーからnfsディレクトリまたはパーティションをマウントするには、以下のmountコマンドを実行します。
mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data
NFSにアクセスするための基本的なマウントコマンドは、NFSサーバー「192.168.1.25」のIPアドレスをパスマウントディレクトリ「/ mnt/shared」および「/srv/data」とクライアント側のターゲットパス「/nfs」で指定することです。 /shared'および'/nfs/data'ディレクトリ。
4.次に、次のコマンドを実行して、NFSマウントが成功したことを確認します。
df -h
また、次のコマンドを実行することで、作成したばかりのファイルを確認できます。
cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt
以下は、取得する出力です。
ご覧のとおり、NFSサーバーが「/ nfs/shared」および「/nfs/ data」ディレクトリに正常にマウントされ、作成したばかりのファイルを読み取ることができるようになります。
NFSサーバーへの読み取りおよび書き込みアクセスを確認する
この段階では、NFSサーバーディレクトリへの読み取りおよび書き込みアクセスを確認します。
1.作業ディレクトリを「/nfs/ shared」に変更し、そのディレクトリで使用可能なファイルを確認し、次のコマンドを使用してそのファイルの内容を表示します。
cd /nfs/shared
ls
cat test-file.txt
次に、以下のechoコマンドを使用して新しいファイルを作成します。
echo "This file from nfs-client" > client.txt
cat client.txt
ファイル「client.txt」を作成できる場合は、以下の構成で説明されているように、NFSディレクトリ「/ nfs/share」への書き込みアクセスが成功します。
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
2.次に、上で作成した構成では、以下の構成でわかるように、clinetisはNFSディレクトリ「/nfs/data」への読み取りにのみアクセスできます。
/srv/data 192.168.1.30(ro,no_root_squash)
作業ディレクトリを「/nfs/ data」に変更し、ファイルを確認し、そのディレクトリで使用可能なファイルを確認し、次のコマンドを使用してそのファイルの内容を表示します。
cd /nfs/data
ls
cat test-file.txt
次に、新しいファイルを作成する場合は、「読み取り専用ファイルシステム」というエラーが表示されます。上部の構成で説明されているように、「読み取り専用」の権限しか持っていないためです。
echo "This is a file from client to data" > client-data.txt
以下は、得られる同様の出力です。
読み取りと書き込みのアクセス許可は、現在のNFSサーバー構成と一致しています。
この段階では、「/ etc/fstab」構成を使用してシステムの起動/起動時にNFSディレクトリ/パーティションをマウントする方法を学習します。
1. '/ etc / fstab'を編集します nanoエディターを使用した構成。
nano /etc/fstab
IPアドレス、共有ディレクトリ、パスマウントディレクトリの詳細を独自のものに変更してから、構成を貼り付けます。
192.168.1.25:/mnt/shared /nfs/shared nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.1.25:/srv/data /nfs/data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
' Ctrl + x を押して、構成を保存します 'と入力して'y '、次に' Enter '終了します。
2.次に、' / etc / fstabを確認します '次のコマンドを使用して、構成が正しいです。
以下のコマンドを使用して、すべてのマウントディレクトリをアンマウントします。
umount -R /nfs/shared
umount -R /nfs/data
次のコマンドを実行して、使用可能なすべてのファイルシステムを「/ etc/fstab」構成ファイルにマウントします。
mount -a
エラーがないことを確認してください。
次のコマンドを実行して、マウントされているすべてのファイルシステムを表示します。
df -h
構成が正しい場合は、「/ etc/fstab」構成で説明されているようにNFSサーバーがターゲットディレクトリにマウントされていることがわかります。
3.クライアントマシンを再起動して再度ログインし、以下のコマンドを使用して再度確認できます。
df -h
また、NFSサーバーは、クライアントマシンのシステム起動時に「/ etc/fstab」ファイルを介して自動的に接続されます。
おめでとう!これで、最新のDebian11BullseyeにNFSサーバーが正常にインストールされました。また、ufwファイアウォールを使用してNFSサーバーの展開を正常に保護し、NFSクライアントマシンをセットアップし、「/ etc/fstab」構成を使用して自動マウントをセットアップしました。次のステップでは、Kerberosサーバーを介した暗号化や認証などのセキュリティメカニズムを提供するNFSv4プロトコルにも関心があるかもしれません。