我在安装 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(仅主机模式)