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

ネットワークファイルシステム(NFS)は、ネットワークを介してリモートフォルダーを共有できるようにする分散ファイルシステムプロトコルです。 NFSを使用すると、システムにリモートフォルダーをマウントし、ローカルファイルと同じくらい便利なリモートマシン上のファイルを操作できます。

NFSプロトコルはデフォルトでは暗号化されておらず、Sambaとは異なり、ユーザー認証を提供しません。サーバーは、クライアントのIPアドレスとポートを制限することによってアクセスを制限します。

このガイドでは、CentOS8でNFSV4サーバーを構築するために必要な手順に従います。 NFSファイルシステムをクライアントにマウントする方法を示します。

1.前提条件##

CentOS 8を実行しているサーバーがあることを前提としています。このサーバーでは、NFSサーバーをセットアップし、他のマシンはNFSクライアントとして機能します。サーバーとクライアントは、プライベートLANを介して相互に接続できる必要があります。プライベートIPアドレスを指定できない場合は、パブリックアドレスを使用し、サーバーのファイアウォールを構成して、信頼できるソースからのトラフィックがポート 2049を通過できるようにすることができます。

この例のマシンには、次のIPがあります。

NFS Server IP:192.168.33.148
NFS Clients IPs: From the 192.168.33.0/24 range

2つ目は、NFSサーバーを確立することです##

このセクションでは、必要なソフトウェアパッケージのインストール、NFSディレクトリの作成とエクスポート、およびファイアウォールの構成方法について説明します。

2.1 NFSサーバーをインストールする###

「nfs-utils」パッケージは、NFSサーバーの構築に必要なNFSツールとデーモンを提供します。これをインストールするには、次のコマンドを実行します。

sudo dnf install nfs-utils

インストールが完了したら、NFSサービスを有効にして開始し、次のように入力します。

sudo systemctl enable --now nfs-server

デフォルトでは、CentOS 8では、NFS3とNFS4の両方が使用可能であり、NFS2は無効になっています。 NFSV2は非常に古く、有効にする理由はありません。確認するには、次の catコマンドを実行します。

sudo cat /proc/fs/nfsd/versions
-2+3+4+4.1+4.2

NFSサーバーの構成オプションは、 / etc / nfsmount.confファイルと / etc / nfs.confファイルにあります。要件を満たすには、デフォルト設定で十分です。

2.2 ファイルシステムを作成する###

NFSv4サーバーを構成する場合のベストプラクティスは、グローバルNFSルートディレクトリを使用して、実際のディレクトリをここにマウントすることです。この例では、NFSルートディレクトリとして / srv / nfs4を使用します。

NFSマウントの構成をわかりやすく説明するために、異なる構成ファイル設定で2つのディレクトリ( / var / www / opt / backups)を共有します。

/ var / www /はユーザーおよびユーザーグループ apacheに属し、 / opt / backups rootユーザーに属します。

mkdirコマンドを使用して、このエクスポートされたファイルシステムを作成します。

sudo mkdir -p /srv/nfs4/{backups,www}

実際のディレクトリをマウントします。

sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www

このマウントを永続的にするには、次のエントリを / etc / fstabファイルに追加します。

sudo nano /etc/fstab
/opt/backups /srv/nfs4/backups  none   bind   00/var/www     /srv/nfs4/www      none   bind   00

2.3 ファイルシステムのエクスポート###

次のステップは、NFSサーバーによってエクスポートされるファイルシステム、共有オプション、およびファイルシステムへのアクセスが許可されているクライアントを見つけることです。これを行うには、 / etc / exportsファイルを開きます。

sudo nano /etc/exports

wwwおよび backupsディレクトリをエクスポートし、 192.168.33.0 / 24ネットワークからのすべてのクライアントを許可します。

/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check)192.168.33.3(rw,sync,no_subtree_check)/srv/nfs4/www     192.168.33.110(rw,sync,no_subtree_check)

最初の行には、NFSルートディレクトリ / srv / nfsを定義する fsid = 0が含まれています。192.168.33.0/ 24ネットワークのすべてのクライアントがNFSボリュームにアクセスできます。エクスポートされたディレクトリのサブディレクトリを共有するには、 crossmntオプションが必要です。

2行目は、ファイルシステムに複数のエクスポートルールを指定する方法を示しています。 / srv / nfs4 / backupsディレクトリをエクスポートし、 192.168.33.0 / 24からのクライアントによる読み取り専用アクセスを許可し、 192.168.33.3からのクライアントは同時に読み取りと書き込みを行うことができます。この syncオプションは、応答する前に変更をディスクに書き込むようにNFSに指示します。

最後の行は自明である必要があります。使用可能なオプションの詳細については、ターミナルで「manexports」と入力してください。

ファイルを保存し、エクスポートして共有します。

sudo exportfs -ra

/ etc / exportsファイルを変更するたびに、上記のコマンドを実行する必要があります。エラーや警告がある場合は、端末に表示されます。

現在アクティブなエクスポートとそのステータスを表示するには、次を使用します。

sudo exportfs -v

出力には、すべての共有とそのオプションが含まれます。ご覧のとおり、 / etc / exportsファイルで定義しなかったオプションもあります。これらはデフォルトのオプションです。変更する場合は、これらのオプションを明示的に設定する必要があります。

/srv/nfs4/backups
		192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)/srv/nfs4/www 	192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)/srv/nfs4     	192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)/srv/nfs4/backups
		192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

root_squashは、NFSセキュリティに関連する最も重要なオプションの1つです。これにより、クライアントのrootユーザーが、マウントされた共有ディレクトリに対するroot権限を持つことができなくなります。ルート UID GIDnobody / nogroup UIDGIDにマップします。

クライアントマシンを介してアクセスするユーザーの場合、NFSは、クライアントのユーザーおよびユーザーグループIDをサーバー上のユーザーおよびユーザーグループと一致させる必要があります。もう1つのオプションは、NFSv4 idmapping機能を使用することです。この機能は、ユーザーとユーザーグループIDを名前または他のメソッドに変換できます。

それでおしまい。この時点で、CentOSサーバーにNFSサーバーをセットアップしました。次の手順を確認し、NFSサーバーに接続するようにクライアントを構成できます。

2.4 ファイアウォール構成###

FirewallDは、CentOS8のデフォルトのファイアウォールソリューションです。

NFSサービスには、NFSサーバーへのアクセスを許可する事前設定されたルールが含まれています。

次のコマンドは、 192.168.33.0 / 24サブネットからのアクセスを永続的に許可します。

sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24--permanent
sudo firewall-cmd --reload

第三に、NFSクライアントを作成します##

NFSサーバーがセットアップされ、共有がエクスポートされたので、次のステップは、クライアントを構成し、リモートファイルシステムをマウントすることです。

macOSおよびWindowsマシンにNFS共有ディレクトリをマウントすることもできますが、ここではLinuxシステムへの共有ディレクトリのマウントに焦点を当てます。

3.1 NFSクライアントをインストールします###

他のクライアントマシンに、リモートNFSファイルシステムをマウントするために必要なツールをインストールします

3.2 ファイルシステムをマウントします###

IPが 192.168.33.110のクライアントマシンで動作します。このマシンには、 / srv / nfs4 / wwwへの読み取りおよび書き込み権限と、ファイル / srv / nfs4 / backupsへの読み取り専用アクセス権限があります。

マウントポイントとして2つの新しいディレクトリを作成します。これらのディレクトリはどこにでも作成できます。

sudo mkdir -p /backups
sudo mkdir -p /srv/www

mountコマンドを使用して、エクスポートされたファイルシステムをマウントします。

sudo mount -t nfs -o vers=4192.168.33.148:/backups /backups
sudo mount -t nfs -o vers=4192.168.33.148:/www /srv/www

192.168.33.148 NFSサーバーのIPアドレスです。 IPアドレスの代わりにホスト名を使用することもできますが、クライアントマシンでipに変換する必要があります。これは通常、 / etc / hostsローカルファイルのホスト名とIPをマッピングすることによって行われます。

NFSv4ファイルシステムをマウントするときは、NFSルートディレクトリを無視する必要があるため、 / srv / nfs4 / backupsを使用する代わりに、 / backupsを使用してください。

リモートファイルシステムが正常にマウントされていることを確認するには、 dfコマンドを使用します。

df -h

このコマンドは、マウントされているすべてのファイルシステムを出力します。最後の2行は、マウントされた共有です。

...192.168.33.148: /backups           9.7G  1.2G  8.5G  13%/backups
192.168.33.148: /www               9.7G  1.2G  8.5G  13%/srv/www

これらのマウントを永続化するには、 / etc / fstabファイルを開きます。

sudo nano /etc/fstab

次の行を追加します。

192.168.33.148: /backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	00192.168.33.148:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	00

NFSファイルシステムをマウントするために使用できるオプションの詳細については、ターミナルに「mannfs」と入力してください。

リモートファイルシステムをマウントするための別のオプションは、 autofsツールを使用するか、systemdユニットを作成することです。

3.3 NFSアクセスをテストする###

共有ディレクトリに新しいファイルを作成して、共有フォルダへのアクセスをテストしてみましょう。

まず、 touchコマンドを使用して / backupsディレクトリにテストファイルを作成します。

sudo touch /backups/test.txt

backupファイルシステムは読み取り専用としてエクスポートされ、 Permissiondeniedのようなエラーメッセージが表示されます。

touch: cannot touch ‘/backups/test’: Permission denied

次に、sudoコマンドを使用して、rootユーザーとして / srv / wwwディレクトリにテストファイルを作成します。

sudo touch /srv/www/test.txt

もう一度、「Permissiondenied」というメッセージが表示されます。

touch: cannot touch ‘/srv/www’: Permission denied

/ var / wwwディレクトリは apacheユーザーに属しており、この共有には root_squashオプションがあり、rootユーザーを nobodyユーザーと nogroupユーザーグループにマップします。これにより、rootユーザーはリモート共有ファイルへの書き込み権限を持ちません。 。

apacheユーザーがクライアントマシンに存在し、 GIDUIDもリモートサーバーと同じであると仮定すると(たとえば、サーバーとクライアントの両方にapacheをインストールした場合)、 apacheユーザーとして作成できます。ファイル:

sudo -u apache touch /srv/www/test.txt

このコマンドは出力を表示しません。これは、ファイルが正常に作成されたことを意味します。

作成が成功したことを確認するには、 / srv / wwwフォルダー内のすべてのファイルを一覧表示します。

ls -la /srv/www

出力には、新しく作成されたファイルが表示されます。

drwxr-xr-x 3 apache apache 4096 Jun 2322:18.
drwxr-xr-x 3 root     root     4096 Jun 2322:29..-rw-r--r--1 apache apache    0 Jun 2321:58 index.html
- rw-r--r--1 apache apache    0 Jun 2322:18 test.txt

3.4 NFSファイルシステムをアンマウントします###

リモートNFS共有が不要になった場合は、umountコマンドを使用してアンマウントできます。たとえば、 / backupをアンインストールするには、次のコマンドを実行できます。

sudo umount /backups

マウントポイントが / etc / fstabファイルで定義されている場合は、対応する行を削除するか、を使用して行の先頭にコメントを付けてください。

4、要約##

このガイドでは、リモートNFSサーバーをセットアップする方法と、クライアントにリモートファイルシステムをマウントする方法を示します。実稼働環境でNFSを使用し、機密データを共有する場合は、kerberos認証と認証を有効にすることをお勧めします。

NFSの代わりに、SSHFSを使用してSSH接続を介してリモートディレクトリをマウントできます。 SSHはデフォルトで暗号化されており、設定と使用が簡単です。

Recommended Posts

CentOS8にNFSサーバーをインストールして構成する方法
CentOS8にPostfixメールサーバーをインストールして構成する方法
CentOS8にVNCをインストールして構成する方法
CentOS8にRedisをインストールして構成する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
CentOS8にRedmineをインストールして構成する方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
CentOS7にDockerをインストールして使用する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
Ubuntu16.04にElasticsearchをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
CentOS8にNode.jsとnpmをインストールする方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
centos7.2.1511にjdk1.8.0_151とmysql5.6.38をインストールする方法
CentOS8にCurlをインストールして使用する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
centosにtomcatをインストールおよびアンインストールする方法
Ubuntu14.04にPostGISをインストールして構成する方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8でVsftpdを使用してFTPサーバーを構成する方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
CentOS 8 / RHEL8にCockpitをインストールして使用する方法
CentOS8-NFSサービスをインストールして構成する
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8でVsftpdを使用してFTPサーバーを構成する方法