Contents
Overview
自宅で Linux サーバーを運用しており、ISO の共有に NFS を使用しています。Mac は UNIX 系の OS なので、NFS を GUI から管理できたら、便利だろうと思っていたのですが、実はそんなことはなかったという投稿です。ちなみに Windows は NFSv4 に対応していません(Windows 11 は対応しているかもしれません)。
NFS サーバーの設定値
NFS サーバーは、Ubuntu を使用しており、設定値は下記の通りです。詳細はこちらを参照して下さい。 Linux の NFS クライアントからは問題なく NFS を利用できる状態です。
/etc/nfs.conf
/etc/nfs.conf は NFSv3 を無効化しています。
myadmin@ubuntu:~$ cat /etc/nfs.conf
[general]
pipefs-directory=/run/rpc_pipefs
[mountd]
manage-gids=y
[nfsd]
vers3=n
/etc/exports は Ubuntu の標準的なオプション設定です。
/etc/exports
myadmin@ubuntu:~$ cat /etc/exports
/home/nfs 10.0.0.0/24(rw,no_subtree_check,no_root_squash)
Mac の NFS クライアントのデフォルトを NFSv4 にする
Mac の NFS クライアントはデフォルトで NFSv3 を使います。本稿では NFS サーバーの設定で NFSv4 に限定しているため、Mac 側も NFSv4 で接続するために設定変更が必要です。以下の設定により、デフォルトで NFSv4 を使用するようになります。ちなみに [4] ではなく [4.0] にしないといけません。
% cat /etc/nfs.conf
nfs.client.mount.options = vers=4.0
Mac から NFS マウント
Mac から NFS マウントを試します。
Finder を使用
Finder のヘルプに基づくと、NFS 接続は以下のよう指定する必要がありますが、接続に失敗します。エラーメッセージは、「サーバ“nas-101.si1230.com”への接続で問題が起きました。サーバ名またはIPアドレスを確認して、やり直してください。問題を解決できない場合は、システム管理者に問い合わせてください。」と出力されます。
nfs://nas-101.si1230.com/home/nfs
もしかすると、実はコマンドラインと同じ形式で指定する必要があるのではと思い、以下も試しましたが同じでした。
nfs://nas-101.si1230.com:/home/nfs
コマンドを使用
まず、マウントポイント作成します。今回はホームディレクトリに mnt ディレクトリを作成しました。
% sudo mkdir ~/mnt
以下のようにエラーが出力され、マウントに失敗します。
mount_nfs: can't mount /home/nfs from nas-101.si1230.com onto /Users/myadmin/mnt: Operation not permitted mount: /Users/myadmin/mnt failed with 1
軽く調べてみたところ、/etc/nfs.conf のマウントオプションに resvport の設定が必要でした。Redhat の情報によると、「resvport オプションはクライアント側のマウントオプションで、対応するサーバー側のエクスポートオプション secure です(上記の説明を参照してください)。「予約されたポート」への通信を制限します。予約済みまたは「well known」ポートは、root ユーザーなどの特権ユーザーやプロセス用に予約されます。このオプションを設定すると、クライアントは予約済みソースポートを使用してサーバーと通信します。」とのことです。
% cat /etc/nfs.conf
nfs.client.mount.options = vers=4.0,resvport
この状態で問題なくマウントできるようになりました。本稿の例では、書き込みに関して sudo が必要になりますが、これは公開ディレクトリのパーミッションで制限があるためです。ただし、Ubuntu と Mac の UID/GID は異なるため、むやみに他のユーザーで書き込み可能にすると、セキュリティの問題がありそうなので、良しとしています。
% sudo mount -t nfs nas-101.si1230.com:/home/nfs ~/mnt
アンマウントは下記の通りです。
% sudo umount ~/mnt
まとめ
結果として、Mac では Finder を使用して、NFS マウントはできませんが、コマンドラインからは NFS を使用することができます。ただし、コマンドラインから NFS マウントしても Finder には表示されませんので、Linux のようにコマンドでのディレクトリ操作となります。推測ですが、Mac では Finder を使用して SMB をマウントすると、/Volumes に動的にマウントポイントが作成され、そこにマウントされます。また、/Volumes 内に手動でディレクトリを作成しても再起動すると消えます。つまり、Finder から NFS を利用するには /Volumes に動的にマウントが必要だと思われるが、そもそも Finder から NFS をマウントするというプロセスが失敗しているため、その仕様の確認も難しいということです。
以前の MacOS では Finder で NFS マウントできていたという情報があるので、最新のバージョンではセキュリティ関連で制限がかかるようになったのかもしれません。