アンドロイド

Ubuntu 18.04でNFSサーバーをインストールして設定する方法

Ubuntu 18.04: What's New?

Ubuntu 18.04: What's New?

目次:

Anonim

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

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

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

前提条件

この例では、Ubuntu 18.04を実行しているサーバーと、他のLinuxディストリビューションを実行しているサーバーがあると想定しています。 サーバーとクライアントは、プライベートネットワークを介して相互に通信できる必要があります。 ホスティングプロバイダーがプライベートIPアドレスを提供していない場合、パブリック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サーバーパッケージをインストールします。

sudo apt update sudo apt install nfs-kernel-server

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

デフォルトでは、Ubuntu 18.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サーバーを構成する場合、グローバルNFSルートディレクトリを使用して、実際のディレクトリを共有マウントポイントにバインドマウントすることをお勧めします。 この例では、NFSルートとして /srv/nfs4 ディレクターを使用します。

NFSマウントの構成方法をより適切に説明するために、異なる構成設定で2つのディレクトリ( /var/www および /opt/backups )を共有します。

/var/www/ はユーザーおよびグループ www-data によって所有され、 /opt/backups root によって所有されます。

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

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/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 /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(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(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つです。 クライアントから接続されたrootユーザーが、マウントされた共有に対するroot権限を持つことを防ぎます。 ルート UID GID nobody / nogroup UID / GID マップします。

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

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

ファイアウォール構成

UFW を使用してファイアウォールを管理し、 192.168.33.0/24 サブネットからのアクセスを許可すると仮定すると、次のコマンドを実行する必要があります。

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

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.10:/backups /backups sudo 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ルートディレクトリを省略する必要があるため、 /srv/nfs4/backups 代わりに /srv/nfs4/backups を使用する必要があります。

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

df -h

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

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /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アクセスのテスト

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

まず、 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

リモートサーバーと同じ UID GID を持つクライアントマシンで www-data 使用していると仮定すると(たとえば、両方のマシンにnginxをインストールした場合)、ユーザーとしてファイルを作成するためにテストできます。 www-data with:

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

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

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

ls -la /srv/www

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

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

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

sudo umount /backups

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

結論

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

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

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

ubuntu nfsマウントターミナル