Ale*_*lex 14 nfs virtualbox vagrant
主人
我有一台主机,运行 Ubuntu 12.04,位于10.0.0.202
. 它为网络上的其他机器提供 NFS 共享。以下是内容/etc/exports
:
/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)
这里的目的是将 的内容共享/media/storagedrive
给 IP 范围内网络上的其他机器10.0.0.0 - 10.0.0.255
。
工作客户
这适用于10.0.0.40
运行 Ubuntu 13.10(称为 MattDev)的客户端计算机。那台机器长/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
Run Code Online (Sandbox Code Playgroud)
而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
Run Code Online (Sandbox Code Playgroud)
的输出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)
Run Code Online (Sandbox Code Playgroud)
非工作虚拟客户端
我有第二台客户端机器,运行 Ubuntu 12.10,作为 Windows 7 主机上的来宾操作系统。主机在网络上作为10.0.0.28
。来宾机器由 Vagrant 管理,使用 VirtualBox 4.3.6 作为提供程序。我将调用 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
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试挂载共享时,它失败了:
$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
Run Code Online (Sandbox Code Playgroud)
于是我开始寻找问题:
$ 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)
$
Run Code Online (Sandbox Code Playgroud)
uid 和 gid 与 MattDev 上的用户 matt 不同。所以我为 vagrant 处理了 uid,因为我读到 NFS 访问是通过匹配 IP 地址和 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
$
Run Code Online (Sandbox Code Playgroud)
还是没有成功。所以现在我的想法不多了。
10.0.0.28
,而不是其他一些不在允许范围内的 IP?Ale*_*lex 16
好的,我已经解决了(或者至少,我已经成功了,我想我知道是什么导致了它)。
我将insecure
标志添加到/etc/exports
NFS 服务器上的行中,所以现在看起来像这样:
/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)
Run Code Online (Sandbox Code Playgroud)
此标志允许连接源自 IPPORT_RESERVED (1024) 以上的客户端端口。
mount 命令现在可以工作了。
我猜测为什么缺少insecure
标志是问题所在,VirtualBox 使用 NAT 将请求传递到物理网络,因此虽然 Ubuntu 来宾 (AlexDevGuest) 上的端口可能低于 1024,但转换后的端口在Windows 7 主机 (AlexDevHost) 可能高于 1024,因此被阻止。设置insecure
标志意味着它被允许。
这个问题显然不会影响非虚拟机DevMatt。
归档时间: |
|
查看次数: |
19455 次 |
最近记录: |