ザ・ホスト
に Ubuntu 12.04 を実行しているホストがあります10.0.0.202
。これはネットワーク上の他のマシンに NFS 共有を提供します。 の内容は次のとおりです/etc/exports
。
/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check)
ここでの目的は、 のコンテンツを/media/storagedrive
IP 範囲 内のネットワーク上の他のマシンと共有することです10.0.0.0 - 10.0.0.255
。
ワーキングクライアント
これは、MattDev と呼ばれる、Ubuntu 13.10 を実行している のクライアント マシンでは正常に動作します10.0.0.40
。そのマシンは/etc/fstab
次のようになります。
UUID=8f8c838e-3ea2-457a-87f0-57b12dfab06c / ext4 errors=remount-ro 0 1
UUID=427089d4-46a2-432d-9df4-7016bdfc7df2 none swap sw 0 0
10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive nfs rsize=8192,wsize=8192,timeo=14,intr
そしてls -al /mnt/
そのマシンでは次のようになります:
total 12K
drwxr-xr-x 3 root root 4.0K Feb 4 17:48 .
drwxr-xr-x 23 root root 4.0K Feb 5 08:44 ..
drwxrwxr-x 7 root plugdev 4.0K Feb 5 11:43 NetworkStorageDrive
の出力はid
次のようになります。
uid=1000(matt) gid=1000(matt) groups=1000(matt),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),112(lpadmin),124(sambashare)
動作しない仮想クライアント
Windows 7 ホスト マシン上のゲスト OS として Ubuntu 12.10 を実行している 2 台目のクライアント マシンがあります。ホスト マシンは としてネットワーク上に存在します10.0.0.28
。ゲスト マシンは、VirtualBox 4.3.6 をプロバイダーとして使用し、Vagrant によって管理されています。Windows 7 ホストを AlexDevHost、Ubuntu ゲストを AlexDevGuest と呼びます。
showmount -e 10.0.0.202
AlexDevGuest で実行すると、次のものが生成されます。
Export list for 10.0.0.202:
/media/storagedrive 10.0.0.0/24
しかし、共有をマウントしようとすると失敗します。
$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
そこで私は問題点を探し始めました:
$ ls -alh /mnt/
total 12K
drwxr-xr-x 3 root root 4.0K Feb 5 12:23 .
drwxr-xr-x 26 root root 4.0K Feb 5 12:23 ..
drwxr-xr-x 2 root root 4.0K Feb 5 12:23 NetworkStorageDrive
$ id
uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$
その uid と gid は MattDev のユーザー matt とは異なります。NFS アクセスは IP アドレスと uid を一致させることで制御されると読んだので、vagrant の uid を調整しました。つまり、次のようになります。
$ id
uid=1000(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
$
まだ成功していません。だから今はアイデアが尽きています。
- 何が間違っているのでしょうか?
- uid 部分が正しい場合、NFS サーバー マシンが、アクセス試行が からのものであり、許可された範囲外の他の IP からのものではないと認識していることを確認する方法はありますか
10.0.0.28
?
答え1
はい、解決しました (少なくとも、うまく機能するようにしましたし、原因が何であったかがわかったと思います)。
NFS サーバーの行insecure
にフラグを追加したので、次のようになります。/etc/exports
/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)
このフラグにより、IPPORT_RESERVED (1024) を超えるクライアント ポートからの接続が可能になります。
マウントコマンドが機能するようになりました。
フラグがないことがinsecure
問題だった理由として、VirtualBox が NAT を使用してリクエストを物理ネットワークに渡していたため、Ubuntu ゲスト (AlexDevGuest) のポートが 1024 未満だったのに対し、Windows 7 ホスト (AlexDevHost) の変換されたポートはおそらく 1024 を超えていたためブロックされたのではないかと思います。insecure
ただし、フラグを設定すると許可されます。
この問題は明らかに、仮想マシンではない MattDev には影響しません。