Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

How to Install and Configure an NFS Server on Ubuntu 18.04

By admin on 2月 1, 2021

Network File System (NFS) は、ネットワーク上でリモートディレクトリを共有することができる分散ファイルシステムプロトコルです。

NFSプロトコルは、デフォルトでは暗号化されておらず、Sambaとは異なり、ユーザー認証を提供していません。

このチュートリアルでは、Ubuntu 18.04でNFSv4サーバーをセットアップする方法を説明します。

Prerequisites #

この例では、Ubuntu 18.04を実行している1台のサーバーと、その他のLinuxディストリビューションを実行しているもう1台のサーバーがあることを想定しています。 サーバーとクライアントは、プライベート ネットワーク上で相互に通信できる必要があります。 ホスティングプロバイダーがプライベートIPアドレスを提供していない場合は、パブリックIPアドレスを使用し、信頼できるソースからのみポート2049のトラフィックを許可するようにサーバーのファイアウォールを設定することができます。

この例のマシンのIPアドレスは次のとおりです。

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

NFSサーバーの設定 #

まず、NFSサーバーのインストールと設定を行います。

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

パッケージのインデックスを更新し、NFSサーバーパッケージをインストールします:

sudo apt updatesudo 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ファイルに設定されています。

Creating the file systems #

NFSv4サーバーを構成する際には、グローバルなNFSルートディレクトリを使用し、実際のディレクトリを共有マウントポイントにバインドマウントすることが良い方法です。

ここでは、NFSマウントがどのように構成されるかをよりよく説明するために、異なる構成設定を持つ2つのディレクトリ(/var/www/opt/backups)を共有します。

/var/www/www-data/opt/backupsroot が所有しています。

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

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

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

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

sudo nano /etc/exports
ファイルには、ディレクトリをエクスポートする方法を説明するコメントも含まれています。

今回のケースでは、wwwbackups192.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)

1行目にfsid=0があり、NFSルートディレクトリ/srv/nfsを定義しています。 このNFSボリュームへのアクセスは、192.168.33.0/24crossmntオプションが必要です。

2行目では、1つのファイルシステムに対して複数のエクスポートルールを指定する方法を示しています。 これは、/srv/nfs4/backups192.168.33.0/24192.168.33.3syncオプションは、NFSに、返信する前に変更内容をディスクに書き込むように指示します。

最後の行は、説明が不要でしょう。

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

sudo exportfs -ra

ファイルを変更するたびに、上記のコマンドを実行する必要があります。

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

sudo exportfs -v

出力には、すべての共有とそのオプションが含まれます。 ご覧のとおり、/etc/exportsファイルでは定義していないオプションもあります。

/srv/nfs4/backups192.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/backups192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

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

クライアントマシンのユーザーがアクセスできるようにするには、NFSではクライアントのユーザーとグループのIDがサーバー上のものと一致する必要があります。 また、NFSv4のidmapping機能を使って、ユーザーやグループのIDを名前に変換する方法もあります。

以上です。 この時点で、UbuntuサーバーにNFSサーバーを設定することができました。

Firewall configuration #

ネットワーク上でファイアウォールを実行している場合は、NFSポートのトラフィックを有効にするルールを追加する必要があります。

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

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

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

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

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

    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.110/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アドレスの代わりにホスト名を使用することもできますが、クライアントマシンで解決可能である必要があります。

NFSv4ファイルシステムをマウントする際には、NFSルートディレクトリを省略する必要があるため、/srv/nfs4/backups/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% /devtmpfs 244M 0 244M 0% /dev/shmtmpfs 244M 4.5M 240M 2% /runtmpfs 244M 0 244M 0% /sys/fs/cgroup/dev/sda2 1014M 87M 928M 9% /boottmpfs 49M 0 49M 0% /run/user/1000192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups192.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,_netdev0 0192.168.33.10:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev0 0

NFSファイルシステムをマウントする際に利用可能なオプションの詳細を確認するには、ターミナルでman nfsと入力してください。

リモート ファイル システムをマウントするもうひとつの方法は、autofs ツールを使用するか、systemd ユニットを作成することです。

Testing NFS Access #

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

まず、/backupstouch コマンドを使用してテスト ファイルを作成してみます。

sudo touch /backups/test.txt

/backupPermission denied エラーメッセージが表示されます。

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

次に、/srv/wwwsudo コマンドを使用して、ルートとしてテスト ファイルを作成してみます。

sudo touch /srv/www/test.txt

再び、Permission deniedのメッセージが表示されます。

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

思い返してみると、/var/wwwwww-dataroot_squashnobodynogroup グループにマッピングしていますが、このグループはリモート共有への書き込み権限を持っていません。

クライアント マシンに、リモート サーバーと同じ UIDGIDwww-data の使用があると仮定します (例えば、両方のマシンに nginx をインストールした場合はそうなるはずです)。

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 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ファイルシステムのアンマウント #

リモートNFS共有が必要なくなった場合、umountコマンドを使用して、マウントされた他のファイルシステムと同様にアンマウントすることができます。 たとえば、/backupの共有をアンマウントするには、次のように実行します。

sudo umount /backups

マウントポイントが/etc/fstab#を追加してコメントアウトしてください。

結論 #

このチュートリアルでは、NFS サーバーの設定方法と、クライアント マシンにリモート ファイル システムをマウントする方法を紹介しました。

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

投稿ナビゲーション

38 LinkedIn Statistics Marketers Should Know in 2021 (日本語)
有限状態機械

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最近の投稿

  • Firebush (日本語)
  • 9 Best Dog Vitamins And Supplements For Enhanced Health
  • 2021年のCDレート予測。 金利はおそらく低水準で推移するが、年の後半には上昇するかもしれない
  • 慢性骨盤痛症候群と前立腺炎:症状、診断と治療
  • ミックスベリー・クリスプ
  • Low-Carb Chocolate Pudding Recipe
  • 1歳を過ぎた母乳育児のメリット
  • Is it Safe to Dump Coffee Grounds Down the Sink|Atomic Plumbing
  • Cool-Down After Your Workout (日本語)
  • Our Work (日本語)

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

アーカイブ

  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com