Linode(リノード)の仮想マシンにNFSサーバーをインストールし、MacからNFSマウントしてみた内容を共有します。
参照:https://www.linode.com/docs/guides/using-an-nfs-server-on-ubuntu2004/
(ここにLinodeの仮想マシン間のNFSのやり方が書いていたので、LinodeとMacでNFSをやってみました。)
NFSサーバーはLinode、NFSクライアントはMac
NFSサーバー : LinodeでUbuntu 20.04.5 LTS を選びました
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
Linodeで割り当てられたPublic IPアドレスを確認。
以下のcurlコマンドでLinode上のNFSサーバー用のIPを確認しておきます。
$ curl whatismyip.akamai.com
x.x.x.x
(このIPアドレスは以下「LINODE_IP_ADDR」として利用します。)
NFSクライアント : macOS(monterey)
$ sw_vers
ProductName: macOS
ProductVersion: 12.5.1
BuildVersion: 21G83
MacのPublic IPアドレスを確認。
同様にcurlコマンドでMacのIPアドレス(NFSクライアント側)を確認しておきます。
$ curl whatismyip.akamai.com
y.y.y.y
(このIPアドレスは以下「CLIENT_IP_ADDR」として利用します。)
1. Linodeの設定(NFSサーバーを起動)
NFSサーバー用のパッケージをインストール
$ sudo apt update
$ sudo apt install nfs-kernel-server
NFSサーバーのStatus確認(activeになっていることを確認)
$ sudo systemctl status nfs-kernel-server.service
nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Mon 2022-08-29 04:09:56 UTC; 2h 29min ago
Process: 912 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 924 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Main PID: 924 (code=exited, status=0/SUCCESS)
NFSサーバー に共有ディレクトリを作成
$ sudo mkdir -p /nfs/share/project1
$ sudo chown nobody:nogroup /nfs/share/project1
$ sudo chmod 777 /nfs/share/project1
NFS Export設定 : /etc/exportsを編集
$ vi /etc/exports
以下のラインを追加し保存
(’CLIENT_IP_ADDR’にはMacのIPアドレスを使用)
/nfs/share/project1 CLIENT_IP_ADDR(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
exportfsコマンドで設定を適用
$ sudo exportfs -a
NFSサーバーの共有ディレクトリ(/nfs/share/project1)が反映されていることを確認
$ sudo exportfs -v
/nfs/share/project1
CLIENT_IP_ADDR(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
NFSサーバーのサービスを再起動
$ sudo systemctl restart nfs-kernel-server
ufwコマンドを使って、NFSクライアントのIPアドレスに対してNFSポート(2049)を許可します。
$ sudo ufw allow from CLIENT_IP_ADDR to any port nfs
CLIENT_IP_ADDRに対して2049ポートが許可されていることを確認
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
2049 ALLOW CLIENT_IP_ADDR
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
/etc/hosts.denyにすべてをDenyしてから、
/etc/osts.allowにNFSクライアントからのアクセスのみを許可する
$ /etc/hosts.deny
portmap:ALL
rpcbind mountd nfsd statd lockd rquotad : ALL
$ /etc/hosts.allow
portmap: CLIENT_IP_ADDR
rpcbind mountd nfsd statd lockd rquotad : CLIENT_IP_ADDR
これでCLIENT_IP_ADDRからLinodeへNFSマウントが可能になりました。
2. Mac側の設定(NFSクライアント設定)
Macに空のDirectoryを作成
$ sudo mkdir -p /nfs/mnt/project1
mount_nfsコマンドを使ってLinodeのNFSサーバーへマウントします。
$ sudo mount_nfs -o vers=4 -P LINODE_IP_ADDR:/nfs/share/project1 /nfs/mnt/project1
dfコマンドでLinodeのNFSサーバーにマウントされたか確認
$ df -h
LINODE_IP_ADDR:/nfs/share/project1 xGi xGi xGi x% xxx xxx x% /nfs/mnt/project1
3. NFSマウントの確認
Macでマウントポイント(/nfs/mnt/project1)にテキストファイルを作成してみます。
$ echo "Hey, I saved this text from my MacOS." > /nfs/mnt/project1/textfromMac.txt
Linodeからファイルが追加されていることを確認してみましょう。
$ cat /nfs/share/project1/textfromMac.txt
Hey, I saved this text from my MacOS.
LinodeのNFSサーバーにファイルが生成されていることが確認できました。
無事にMacからLinodeへNFSマウントができました。
まとめ
MacからLinodeへファイルのコピーはscpを使っていましたが、NFSマウントしてから両サイドからファイルの参照ができるようになり、より使いやすい環境になりました。
インターネット経由のNFSはセキュリティの懸念があるかもしれないので、通信の暗号化などについても調べてみたいと思いました。
Linodeとは
Linode (https://www.linode.com/) は Akamaiが提供するIaaS (Infrastructure as a Service) プラットフォームプロバイダーのサービスです。リノードと発音します。
Akamaiは2022年2月にLinode社の買収を発表しました。
https://www.akamai.com/ja/newsroom/press-release/akamai-to-acquire-linode
クラウドコンピューティングをよりシンプルに、手頃な価格で、誰もが利用できるようにすることで、イノベーションを加速することができます。
https://www.linode.com/ja/alternative-cloud-provider/
関連記事
アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。