GNU/Linux >> Linux の 問題 >  >> Ubuntu

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

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

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

この記事では、Ubuntu20.04でNFSv4サーバーをセットアップする方法について説明します。また、NFSファイルシステムをクライアントマシンにマウントする方法も示します。

前提条件#

2台のマシンを使用します。1台はNFSサーバーとして機能するUbuntu20.04を実行し、もう1台は共有をマウントする他のLinuxディストリビューションを実行します。サーバーとクライアントは、プライベートネットワークを介して相互に通信できる必要があります。パブリックIPアドレスを使用して、ポート2049でのトラフィックを許可するようにサーバーファイアウォールを構成できます。 信頼できるソースからのみ。

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

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

NFSサーバーのセットアップ#

最初のステップは、NFSサーバーをセットアップすることです。必要なパッケージをインストールし、NFSディレクトリを作成してエクスポートし、ファイアウォールを構成します。

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

NFSサーバーパッケージは、NFSカーネルサーバーの実行に必要なユーザースペースサポートを提供します。パッケージをインストールするには、次のコマンドを実行します:

sudo apt updatesudo apt install nfs-kernel-server

インストールが完了すると、NFSサービスが自動的に開始されます。

Ubuntu 20.04では、NFSバージョン2が無効になっています。バージョン3および4が有効になります。次のcatを実行することで、それを確認できます。 コマンド:

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

NFSv2は現在かなり古く、有効にする理由はありません。

NFSサーバーの構成は、/etc/default/nfs-kernel-serverで定義されています。 および/etc/default/nfs-common ファイル。ほとんどの状況では、デフォルト設定で十分です。

ファイルシステムの作成#

NFSv4サーバーはグローバルルートディレクトリを使用し、エクスポートされたディレクトリはこのディレクトリを基準にしています。バインドマウントを使用して、エクスポートするディレクトリに共有マウントポイントをリンクできます。

この例では、/srv/nfs4を設定します NFSルートとしてのディレクトリ。 NFSマウントの構成方法をわかりやすく説明するために、2つのディレクトリ(/var/www)を共有します。 および/opt/backups )異なる構成設定で。 /var/www/ ユーザーwww-dataが所有しています 、および/opt/backups rootが所有しています 。

まず、ルートディレクトリと共有マウントポイントを作成します。

sudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/www

ディレクトリを共有マウントポイントにバインドマウントします:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo 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

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

次のステップは、エクスポートされるファイルシステムと、それらの共有へのアクセスを許可されたクライアントを/etc/exportsに追加することです。 ファイル。

エクスポートされたファイルシステムの各行の形式は次のとおりです。

export host(options)

exportの場所 エクスポートされたディレクトリ、host エクスポートにアクセスできるホスト名またはIPアドレス/範囲、およびoptions ホストオプションです。

/etc/exportsを開きます ファイルを作成し、次の行を追加します:

sudo nano /etc/exports
/ 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.20(rw,sync,no_subtree_check)

最初の行にはfsid=0が含まれています オプション。NFSルートディレクトリ(/srv/nfs4)を定義します。 )。このNFSボリュームへのアクセスは、192.168.33.0/24からのクライアントにのみ許可されます サブネット。 crossmnt エクスポートされたディレクトリのサブディレクトリであるディレクトリを共有するには、オプションが必要です。

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

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

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

sudo exportfs -ar

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

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

sudo exportfs -v

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

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

Ubuntuでは、root_squash デフォルトで有効になっています。これは、NFSセキュリティに関する最も重要なオプションの1つです。ルートUIDをマッピングすることにより、クライアントから接続されたrootユーザーがマウントされた共有に対するroot権限を持つことを防ぎます。 およびGID nobodyに / nogroup UID / GID

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

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

ファイアウォール構成#

ファイアウォールで保護されているリモートUbuntuサーバーにJenkinsをインストールする場合は、NFSポートでトラフィックを有効にする必要があります。

sudo ufw allow from 192.168.33.0/24 to any port nfs

変更を確認します:

sudo ufw status

出力には、ポート2049のトラフィックが表示されます。 許可されています:

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

NFSクライアントのセットアップ#

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

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

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

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

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

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

    sudo apt updatesudo apt install nfs-common
  • CentOSとFedoraにNFSクライアントをインストールする

    Red Hatとその派生物に、nfs-utilsをインストールします パッケージ:

    sudo yum install nfs-utils

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

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

マウントポイント用に2つの新しいディレクトリを作成します。

sudo mkdir -p /backupssudo mkdir -p /srv/www

ディレクトリは任意の場所に作成できます。

エクスポートされたファイルシステムをmountでマウントします コマンド:

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

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

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

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

df -h

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

Filesystem              Size  Used Avail Use% Mounted on
udev                    951M     0  951M   0% /dev
tmpfs                   199M  676K  199M   1% /run
/dev/sda3               124G  2.8G  115G   3% /
tmpfs                   994M     0  994M   0% /dev/shm
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   994M     0  994M   0% /sys/fs/cgroup
/dev/sda1               456M  197M  226M  47% /boot
tmpfs                   199M     0  199M   0% /run/user/1000
192.168.33.10:/backups  124G  2.8G  115G   3% /backups
192.168.33.10:/www      124G  2.8G  115G   3% /srv/www

再起動時にマウントを永続的にするには、/etc/fstabを開きます ファイルを作成し、次の行を追加します::

sudo nano /etc/fstab
/ etc / fstab
192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

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

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

NFSアクセスのテスト#

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

まず、/backupsへのテストファイルを作成してみてください touchを使用したディレクトリ コマンド:

sudo touch /backups/test.txt

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

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

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

sudo touch /srv/www/test.txt

ここでも、Permission deniedが表示されます メッセージ。

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

思い出してください、/var/www ディレクトリはwww-dataが所有しています ユーザーであり、この共有にはroot_squashがあります rootユーザーをnobodyにマップするオプションセット ユーザーとnogroup リモート共有への書き込み権限がないグループ。

www-dataがあると仮定します 同じUIDを使用してクライアントマシンで使用する およびGID リモートサーバーの場合と同様に(たとえば、両方のマシンにnginxonをインストールした場合)、ユーザーwww-dataとしてファイルを作成してみてください。 :

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

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

確認するには、/srv/www内のファイルを一覧表示します ディレクトリ:

ls -la /srv/www

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

drwxr-xr-x 3 www-data www-data 4096 Apr 10 22:18 .
drwxr-xr-x 3 root     root     4096 Apr 10 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Apr 10 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Apr 10 22:18 test.txt

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

リモートNFS共有が不要になった場合は、umountを使用して、他のマウントされたファイルシステムと同じようにマウントを解除できます。 コマンド。

たとえば、/backupをアンマウントするには 共有、実行します:

sudo umount /backups

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


Ubuntu
  1. Ubuntu14.10でNFSサーバーを構成してNFS共有をマウントする方法

  2. Ubuntu20.04にAlgoVPNServerをインストールして構成する方法

  3. UbuntuにRedisサーバーをインストールして構成する方法

  1. Ubuntu20.04にVNCをインストールして構成する方法

  2. Ubuntu18.04にVNCをインストールして構成する方法

  3. Ubuntu20.04にDHCPサーバーをインストールして構成する方法

  1. Ubuntu18.04にNFSサーバーをインストールして構成する方法

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

  3. Ubuntu 18.04 /Debian9にNginxをインストールして構成する方法