アンドロイド

CentOS 8でNFSサーバーをインストールおよび構成する方法

Local YUM REPO on CentOS 7 / RHEL 7 using DVD ISO

Local YUM REPO on CentOS 7 / RHEL 7 using DVD ISO

目次:

Anonim

ネットワークファイルシステム(NFS)は、ネットワーク経由でリモートディレクトリを共有できる分散ファイルシステムプロトコルです。 NFSを使用すると、システムにリモートディレクトリをマウントし、リモートファイルをローカルファイルであるかのように操作できます。

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

このチュートリアルでは、CentOS 8でNFSv4サーバーをセットアップするために必要な手順を実行します。クライアントでNFSファイルシステムをマウントする方法も示します。

前提条件

NFSサーバーとNFSクライアントとして機能する他のマシンをセットアップするCentOS 8を実行しているサーバーがあると想定しています。 サーバーとクライアントは、プライベートネットワークを介して相互に通信できる必要があります。 ホスティングプロバイダーがプライベートIPアドレスを提供していない場合、パブリックIPアドレスを使用し、サーバーファイアウォールを構成して、ポート 2049 トラフィックを信頼できるソースからのみ許可することができます。

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

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

NFSサーバーをセットアップする

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

NFSサーバーのインストール

「nfs-utils」パッケージは、NFSサーバー用のNFSユーティリティとデーモンを提供します。 それをインストールするには、次のコマンドを実行します。

sudo dnf install nfs-utils

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

sudo systemctl enable --now nfs-server

デフォルトでは、CentOS 8 NFSバージョン3および4.xが有効になっている場合、バージョン2は無効になっています。 NFSv2は現在かなり古く、有効にする理由はありません。 確認するには、次の cat コマンドを実行します。

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

NFSサーバーの構成オプションは、 /etc/nfsmount.conf / /etc/nfs.conf および /etc/nfs.conf ファイルで設定されます。 チュートリアルにはデフォルト設定で十分です。

ファイルシステムの作成

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 / etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

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

次の手順では、NFSサーバーによってエクスポートされるファイルシステム、共有オプション、およびそれらのファイルシステムへのアクセスを許可するクライアントを定義します。 これを行うには、 /etc/exports ファイルを開きます。

sudo nano /etc/exports

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

/ etc / exports

/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 が含まれています。 このNFSボリュームへのアクセスは、 192.168.33.0/24 サブネットからのクライアントにのみ許可されます。 crossmnt オプションは、エクスポートされたディレクトリのサブディレクトリであるディレクトリを共有するために必要です。

2行目は、1つのファイルシステムに複数のエクスポートルールを指定する方法を示しています。 /srv/nfs4/backups ディレクトリをエクスポートし、 192.168.33.0/24 範囲全体への読み取りアクセスのみ、および 192.168.33.0/24 への読み取りアクセスと書き込みアクセスの両方を許可します。 sync オプションは、応答する前にディスクに変更を書き込むようNFSに指示します。

最後の行は一目瞭然です。 使用可能なすべてのオプションの詳細については、ターミナルで man exports してください。

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

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 GID nobody / nogroup UID / GID マップします。

クライアントマシン上のユーザーがアクセスできるようにするために、NFSはクライアントのユーザーIDとグループIDがサーバー上のユーザーと一致することを期待しています。 別のオプションは、ユーザーIDとグループIDを名前に変換するNFSv4 idmapping機能を使用することです。

それでおしまい。 この時点で、CentOSサーバーにNFSサーバーをセットアップしました。 これで、次のステップに進み、クライアントを構成してNFSサーバーに接続できます。

ファイアウォール構成

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

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サーバーがセットアップされ、共有がエクスポートされたので、次のステップでクライアントを構成し、リモートファイルシステムをマウントします。

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

NFSクライアントのインストール

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

  • DebianおよびUbuntuにNFSクライアントをインストールする

    DebianベースのディストリビューションにNFSファイルシステムをマウントするためのプログラムを含むパッケージの名前は nfs-common です。 インストールするには、次を実行します。

    sudo apt update sudo apt install nfs-common

    CentOSおよびFedoraにNFSクライアントをインストールする

    Red Hatおよびその派生製品では、 nfs-utils パッケージをインストールします。

    sudo yum install nfs-utils

ファイルシステムのマウント

/srv/nfs4/www ファイルシステムへの読み取りおよび書き込みアクセスと、 /srv/nfs4/backups ファイルシステムへの読み取り専用アクセスを持つIP 192.168.33.110 クライアントマシンで作業します。

マウントポイント用に2つの新しいディレクトリを作成します。 これらのディレクトリは、任意の場所に作成できます。

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

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

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

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

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

mountまたは 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

次の行を追加します。

/ etc / fstab

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

NFSファイルシステムをマウントするときに使用可能なオプションに関する詳細を検索するには、ターミナルで man nfs します。

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

NFSアクセスのテスト

各共有に新しいファイルを作成して、共有へのアクセスをテストしましょう。

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

sudo touch /backups/test.txt

/backup ファイルシステムは読み取り専用としてエクスポートされ、予想どおり、 Permission denied エラーメッセージが表示 Permission denied ます。

touch: cannot touch '/backups/test': Permission denied

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

sudo touch /srv/www/test.txt

再度、 Permission denied メッセージが表示 Permission denied ます。

touch: cannot touch '/srv/www': Permission denied

/var/www ディレクトリは apache ユーザーが所有し、この共有には root_squash オプションが設定されて root_squash ます。これは、rootユーザーを、リモート共有への書き込み権限のない nobody ユーザーと nogroup グループにマップします。

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

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

コマンドは出力を表示しません。つまり、ファイルは正常に作成されました。

これを確認するには、 /srv/www ディレクトリー内のファイルをリストします。

ls -la /srv/www

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

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

NFSファイルシステムのアンマウント

sudo umount /backups

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

結論

このチュートリアルでは、NFSサーバーをセットアップする方法と、クライアントマシンにリモートファイルシステムをマウントする方法を示しました。 実稼働環境でNFSを実装し、賢明なデータを共有している場合、Kerberos認証を有効にすることをお勧めします。

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

ご質問がある場合は、コメントをお気軽にお寄せください。

centos nfsマウントターミナル