NFS 挂载失败,权限被拒绝,没有导出条目

NFS 挂载失败,权限被拒绝,没有导出条目

我在安装 NFS 共享时遇到无法解决的问题,这让我很抓狂。情况如下:

涉及的三台机器:
主机 A:mandrake,IP 192.168.1.4,NFS 服务器
主机 B:athlon64,IP 192.168.1.64,NFS 客户端
主机 C:lap-fzs-2,IP 192.168.1.27,NFS 客户端

主机 A 正在运行 NFS 服务器,该服务器导出由主机 B 挂载的目录。这工作正常,并且已经工作了很长时间。没有问题。现在主机 C 开始工作。Ubuntu 12.04 LTS,现代系统。我尝试从主机 A 挂载相同的共享,但出现权限被拒绝错误:

root@lap-fzs-2:~# mount -t nfs mandrake:/data /data -onfsvers=2
mount.nfs: access denied by server while mounting mandrake:/data

它在主机 A 和 B 之间工作这一事实应该证明 NFS 导出本身是有效的。以下是我能提供的信息,让我认为它应该有效。也许有人看到了我所没有看到的东西,并知道为什么这在新主机 C 上失败了。

服务器出口:

[root@mandrake /root]# cat /etc/exports
/suse 192.168.1.0/16(ro,no_root_squash)
/data 192.168.1.0/24(rw)
#/data3 192.168.2.0/24(rw)
#/data 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)
#/data3 192.168.2.0/16(rw,all_squash,anonuid=500,anongid=500)

[root@mandrake /root]# exportfs
/suse           192.168.1.0/16
/data           192.168.1.0/24

端口映射器正在运行,主机 B“athlon64”已知并安装了导出功能。

[root@mandrake /root]# showmount -e
Export list for mandrake:
/data 192.168.1.0/24
/suse 192.168.1.0/16
[root@mandrake /root]# showmount -a
All mount points on mandrake:
atlhon64.acme.local:/data

当athlon64主机挂载NFS共享时,服务器日志显示成功:

Feb 11 20:06:46 mandrake mountd[460]: authenticated mount request from atlhon64.acme.local:770 for /data (/data)

但是当主机 C 尝试挂载相同的共享时,服务器日志显示:

Feb 11 20:12:42 mandrake mountd[460]: refused mount request from lap-fzs-2 for /data (/): no export entry

主机 C 可以看到服务器,到达端口映射器和 nfsd,但权限失败。

root@lap-fzs-2:~# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/data 192.168.1.0/24
/suse 192.168.1.0/16


root@lap-fzs-2:~# mount -t nfs -v mandrake:/data /data -onfsvers=2,proto=udp
mount.nfs: timeout set for Mon Feb 11 21:49:23 2013
mount.nfs: trying text-based options 'nfsvers=2,proto=udp,addr=192.168.1.4'
mount.nfs: prog 100003, trying vers=2, prot=17
mount.nfs: trying 192.168.1.4 prog 100003 vers 2 prot UDP port 2049
mount.nfs: prog 100005, trying vers=1, prot=17
mount.nfs: trying 192.168.1.4 prog 100005 vers 1 prot UDP port 636
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting mandrake:/data

我必须在客户端上使用 NFSv2。使用 NFSv4 会失败,因为服务器不支持它。它会失败,因为它尝试通过 TCP 直接连接到 2049,但端口未打开。不会发生回退。使用 NFSv3 将导致 RPC 程序/版本不匹配。

我错过了什么?

更新:
这三台机器都位于同一个 LAN 上,位于同一个交换机上。主机 C 上没有启用防火墙:

root@lap-fzs-2:~# iptables -vnL
Chain INPUT (policy ACCEPT 17 packets, 1853 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 20 packets, 5611 bytes)
 pkts bytes target     prot opt in     out     source               destination

在主机 A 上也不行:

[root@mandrake /root]# ipchains -L 
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

答案1

2 月 11 日 20:12:42 mandrake mountd[460]: lap-fzs-2 拒绝挂载 /data (/) 的请求: 没有导出条目

由于服务器的拒绝通知声称存在“禁止出口”对于主机 C,那么也许您应该尝试在文件中使用明确的行来/etc/exports显示主机 C 的明确主机名或完整 IP 地址。

exportfs -a还可以尝试在服务器上发出命令。
即使在重新启动后,我也经常无法访问我的 NFS 服务器。明确发出命令exportfs -a是可靠的解决方案(对我来说)。

答案2

检查服务器和客户端上的 NFS 用户的 UID 和 GUID 是否相同。另外,确保服务器上的文件夹权限为 777。这是我服务器上的 /etc/exports,供客户端访问。

创建 NFS 共享目录:(创建每个服务器的 IP,以空格分隔)

mkdir /var/nfs vim /etc/exports /var/nfs 10.180.82.250(rw,sync,root_squash,anonuid=530,anongid=530,no_subtree_check)

答案3

就我而言, -o vers=3 是答案:

$ sudo mount -o vers=3 192.168.172.1:/A/DIR /mnt
  • NFS 服务器:Ubuntu 桌面 12.04 32 位 vmware 主机
  • NFS 客户端:Ubuntu 服务器 12.04 64 位 vmware guest(仅主机模式)

相关内容