NFSで共有をマウントできないのはなぜですか?


14

ザ・ホスト

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

働くクライアント

これは10.0.0.40、MattDevとして知られるUbuntu 13.10を実行しているクライアントマシンで正常に機能します。そのマシン/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.202AlexDevGuestで実行すると、以下が生成されます。

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
$

まだ成功していません。だから今、私はアイデアを使い果たしています。

  1. 私は何を間違えていますか?
  2. uid部分が正しい場合、NFSサーバーマシンがアクセス試行がからのもの10.0.0.28であり、許可された範囲にない他のIPではないことを確認できる方法はありますか?

回答:


16

OK

NFSサーバーの行にinsecureフラグを追加した/etc/exportsので、次のようになります。

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)

このフラグを使用すると、IPPORT_RESERVED(1024)を超えるクライアントポートから接続を開始できます。

mountコマンドが機能するようになりました。

insecureフラグの欠如が問題だった理由についての私の推測は、VirtualBoxがNATを使用してリクエストを物理ネットワークに渡しているため、Ubuntuゲストのポート(AlexDevGuest)が1024未満で、変換されたポートがWindows 7ホスト(AlexDevHost)はおそらく1024を超えていたため、ブロックされました。insecureフラグを設定することは、それが許可されたことを意味します。

この問題は、明らかに非仮想マシンDevMattには影響しません。


これに関する素晴らしい探偵の仕事。私は日常的にUnbuntuのVirtualBox VMを「サンドボックス」環境として使用しており、実稼働レベルのサーバーや段階的な開発サーバーを使用する代わりに、投げたりテストしたりすることができます。
JakeGould

無限のループであなたに感謝を言いたい、長い間これを探して、あなたは助けた。このような制限を設けた理由は、どのポート番号からの接続でも、ポート番号がどのように影響するかを許可できない理由です。どうもありがとう。
mSatyam

@mSatyam 1024未満のポートにバインドするにはrootになる必要があり、少なくともデフォルトでは、NFSがrootとして実行されることを期待するのがおそらく賢明だからです。私が行っていたポート転送は、いくらか「特殊なケース」でした。
アレックス

しかし、どうすれば1024未満のポートを使用するようにVirtualBoxのネットワークを説得できますか?..
ミハイルT.

そんなに..あなたをありがとう
johnmin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.