Debian 11にNFSサーバーをインストールして構成する方法
Debian 11にNFSサーバーをインストールして構成する方法
このチュートリアルはこれらのOSバージョンのために存在します
- Debian 12 (ブックワーム)
- Debian 11 (Bullseye)
- Debian 9(ストレッチ)
- Debian 7 (Wheezy)
- Debian 5 (Lenny)
このページで
- 前提条件
- NFSサーバーのインストールと設定
- UFWファイアウォールでNFSサーバーをセキュリティ確保する
- NFSクライアントの設定
- NFSサーバーへの読み取りおよび書き込みアクセスを確認する
- 起動時にNFSをマウントする
- 結論
NFS(ネットワークファイルシステム)は、ネットワークを介してリモートファイルシステムをマウントすることを可能にするネットワークプロトコルです。NFSプロトコルは、サーバークライアントアーキテクチャで使用され、NFSサーバーはアクセスおよびマウントが可能なすべてのディレクトリやパーティションを提供し、クライアントはrpcbindプロトコルを使用して内部ネットワーク接続を通じてすべてのディレクトリやファイルシステムにアクセスします。
ネットワークファイルシステムプロトコルの現在の状況は以下の通りです。
1. NFSv2およびNFSv3は主要なオペレーティングシステムによって引き続きサポートされていますが、セキュリティ上の理由から、NFSサーバーへのアクセスを信頼されたローカルネットワークに制限する必要があります。NFSv2およびNFSv3は、小規模および中規模の展開に推奨されます。
2. NFSv4プロトコルは、認証や暗号化などの基本的なセキュリティ機能を提供しますが、これらの部分はKerberosに依存しています。したがって、基本的なセキュリティ機能でNFSv4を使用するためには、追加の設定を行う必要があります。
このチュートリアルでは、最新のDebian 11 BullseyeにNFSサーバーをインストールし、設定する方法を学びます。NFSサーバーをインストールし、ufwファイアウォールを使用してホストを制限することでアクセスを保護します。それから、NFSサーバーが提供するディレクトリやパーティションをマウントするためにクライアントを設定し、システム起動時に自動的にNFSサーバーをマウントするために'/etc/fstab'の設定を行う方法を学びます。
前提条件
1. 下記のように、同じネットワーク上で2つの異なるマシンを使用します。
- debian64 - 192.168.1.25 - NFSサーバーとして
- 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 : クライアントに対して読み取り専用アクセスを許可します。
- 同期 : 変更が安定したストレージにコミットされた後にのみリクエストに返信します。このオプションはデフォルトで有効になっています。
- async : NFSサーバーがNFSプロトコルに違反し、その要求によって行われた変更が安定したストレージにコミットされる前にリクエストに応答することを許可します。
- subtree_check : サブツリーのチェックを許可し、サブツリーチェックを有効にします。このオプションはデフォルトで有効です。
- no_subtree_check : サブツリーのチェックを無効にします。これは軽度のセキュリティ上の影響がありますが、状況によっては信頼性を向上させることができます。
- root_squash : UID/GID 0 から匿名 UID/GID へのマップリクエストです。これは、ユーザー bin やグループ staff など、他の同様に敏感な UID または GID には適用されないことに注意してください。
- no_root_sqash : ルートスカッシングを無効にします。このオプションは、主にディスクレスクライアントに対して便利です。
次に、以下のコマンドを使用して新しい構成を適用するために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次に、以下の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 nfs4. その後、次のコマンドを使用してufwファイアウォールを有効にします。
ufw enable「y」と入力し、「Enter」を押して、ufwファイアウォールを開始および有効にします。
次に、以下のコマンドを使用してufwファイアウォールの状態を確認してください。
ufw statusそして、あなたは以下のような似た出力を見るでしょう。
ご覧のとおり、ufwファイアウォールの状態は「アクティブ」であり、デフォルトポート「2049」でNFSサービスがルールリストに利用可能です。
NFSクライアントの設定
このステップでは、NFSサーバー上の共有ディレクトリとパーティションにアクセスするためのクライアントを設定します。
最初に、以下のaptコマンドを使って'nfs-common'パッケージをインストールします。
apt install nfs-common「y」と入力して「Enter」を押して確認し、インストールを続行します。
2. インストールが完了したら、マウントディレクトリ用の新しいディレクトリを作成します。
mkdir -p /nfs/shared; mkdir -p /nfs/data3. NFSサーバーからNFSディレクトリまたはパーティションをマウントするには、以下のマウントコマンドを実行してください。
mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/dataNFSにアクセスするための基本的なマウントコマンドは、NFSサーバーのIPアドレス「192.168.1.25」と、パスのマウントディレクトリ「/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)次に、あなたが作成した設定に基づいて、クラインは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サーバーの設定と一致しています。
起動時にNFSをマウントする
このステージでは、'/etc/fstab' 設定を通じて、システムの起動時に NFS ディレクトリ/パーティションをマウントする方法を学びます。
1. nanoエディタを使って/etc/fstab設定を編集します。
nano /etc/fstabIPアドレス、共有ディレクトリ、マウントパスディレクトリの詳細を自分のものに変更し、その後、設定を貼り付けてください。
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'を押して終了します。
次に、次のコマンドを使用して/etc/fstabの設定が正しいことを確認してください。
以下のコマンドを使用してすべてのマウントディレクトリをアンマウントします。
umount -R /nfs/shared
umount -R /nfs/data以下のコマンドを実行して、'/etc/fstab' 設定ファイルにあるすべての利用可能なファイルシステムをマウントします。
mount -aエラーがないことを確認してください。
次に、すべてのマウントされたファイルシステムを表示するために、以下のコマンドを実行してください。
df -h構成が正しい場合、NFSサーバーが'/etc/fstab'設定に記載されているようにターゲットディレクトリにマウントされているのが見えるでしょう。
3. クライアントマシンを再起動し、再度ログインしてから、以下のコマンドを使用して再度確認できます。
df -hクライアントマシンでシステムブート時にNFSサーバーが自動的にマウントされる様子が、'/etc/fstab'ファイルを通じて確認できます。
結論
おめでとうございます!最新のDebian 11 BullseyeにNFSサーバーを正常にインストールしました。また、ufwファイアウォールを使用してNFSサーバーの展開を安全にし、NFSクライアントマシンを設定し、'/etc/fstab'設定を使用して自動マウントを設定しました。次のステップとして、Kセキュリティサーバーを介した暗号化や認証などのセキュリティメカニズムを提供するNFSv4プロトコルにも興味があるかもしれません。











