ウェブサイト検索

Debian 11にNFSサーバーをインストールして構成する方法


Debian 11にNFSサーバーをインストールして構成する方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Debian 12 (ブックワーム)
  • Debian 11 (Bullseye)
  • Debian 9(ストレッチ)
  • Debian 7 (Wheezy)
  • Debian 5 (Lenny)

このページで

  1. 前提条件
  2. NFSサーバーのインストールと設定
  3. UFWファイアウォールでNFSサーバーをセキュリティ確保する
  4. NFSクライアントの設定
  5. NFSサーバーへの読み取りおよび書き込みアクセスを確認する
  6. 起動時にNFSをマウントする
  7. 結論

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 nfs

4. その後、次のコマンドを使用して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/data

3. NFSサーバーからNFSディレクトリまたはパーティションをマウントするには、以下のマウントコマンドを実行してください。

mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data

NFSにアクセスするための基本的なマウントコマンドは、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/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'を押して終了します。

次に、次のコマンドを使用して/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プロトコルにも興味があるかもしれません。

関連記事: