如何在 VM 客户机中挂载 NFS 共享?

如何在 VM 客户机中挂载 NFS 共享?

我们有一台安装了 Win7-x64 的机器。在这台机器上,我们用 VirtualBox 运行一个客户机 Fedora-x64。我们在这个 Fedora 实例上定义了一个 NFS 共享。以下是 /etc/exports 中的条目:

/dvr 192.168.0.0/192.168.255.255(读写)

Windows 机器的 ip 地址是 192.168.1.100,Fedora 客户端的 ip 地址是 192.168.1.110。虚拟机的网络模式设置为桥接网络。

现在,从另一个 Linux 机器上,当我们 ping Fedora 客户机 (192.168.1.110) 时,我们得到了很好的响应。但是,当我们尝试挂载 nfs 共享时,我们收到“无路由到主机”错误。我们使用的命令是:

安装-t nfs 192.168.1.110:/dvr /mnt/test

为了确保没有 iptables 问题,在 Fedora 客户机上,我们执行以下操作:

服务 iptables 停止

并重新尝试安装,但无济于事。

你知道我们的设置可能出了什么问题吗?所有这些机器都通过集线器相互连接。Linksys 路由器配置为 DHCP 服务器,所有机器都从中获取 IP 地址。

谢谢。

答案1

Fedora 目前使用firewalld 作为防火墙。直接停止 iptables 并不是停止防火墙的正确方法。请尝试systemctl stop firewalld.service其他方法。

你已经在 Fedora VM 上启动了 NFS 服务,不是吗?

您可以通过systemctl start nfs.service在虚拟机上运行来实现这一点。

如果您自启动 nfsd 以来更改了/etc/exports文件,那么您需要使用systemctl restart nfs.service该命令重新导出文件系统exportfs -a

答案2

我知道这个问题有点老了,但我认为它仍然有意义。设置 NFS 挂载可能很棘手,因为它由多个组件组成,因此必须在防火墙中打开多个端口。此外,Fedora 使用防火墙,因此没有名为“iptables”的服务。

我假设你已经在 NFS 服务器上正确定义了导出(TLDP 文档exportfs -ra),这是另一个 Fedora 框。编辑后不要忘记运行/etc/exports。它也可能是您运行 VirtualBox 的 vm 主机(在主机和客户机之间设置文件共享,而无需安装和维护客户机附加包),这没什么区别。

尝试在“客户端”上安装 NFS 共享时,您可能会遇到超时:

# mount -v Share/
mount.nfs: timeout set for Tue May 22 15:40:52 2018
mount.nfs: trying text-based options 'vers=3,addr=192.168.56.1'
mount.nfs: prog 100003, trying vers=3, prot=6
^C

RPC 需要工作(必须能够通信)才能使 NFS 工作。在这种情况下,它无法连接到 NFS 服务器(192.168.56.1 是 VirtualBox 主机系统的默认 IP 地址,请将其替换为您的 NFS 服务器的 IP):

# rpcinfo -p 192.168.56.1
rpcinfo: can't contact portmapper: RPC: Remote system error - No route to host

为了阻止防火墙阻止服务器(vm 主机或单独的服务器)上的 NFS,您不应禁用它,这实际上允许一切。您需要确定客户端通过其连接的网络接口。如果未将其分配给防火墙区域,请选择一个合适的区域(可能不是“公共”区域)。然后允许该区域中的 NFS。

识别网络接口(以下命令将在服务器上运行):

# ip address
...
6: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.1/24 brd 192.168.56.255 scope global vboxnet0
       valid_lft forever preferred_lft forever

在此示例中,客户端连接到 192.168.56.1,因此vboxnet0是该主机上的正确接口。

识别此接口被分配到的防火墙区域。

# firewall-cmd --get-zone-of-interface vboxnet0

如果是“无区域”,则需要自己选择一个区域并进行分配。例如“内部”,以明确表示不允许在外部接口上使用 NFS。

# firewall-cmd --add-interface=vboxnet0 --zone=internal

如果您现在列出“内部”区域中的所有接口,“vboxnet0”应该会出现:

# firewall-cmd --list-interfaces --zone=internal
vboxnet0

启用 NFS 服务器所需的那些“服务”(即打开端口)。

# firewall-cmd --add-service nfs --zone internal
# firewall-cmd --add-service mountd  --zone internal
# firewall-cmd --add-service rpc-bind --zone internal

仔细检查“内部”区域中的 nic 是否已启用这些服务:

# firewall-cmd --list-services --zone internal
ssh mdns samba-client dhcpv6-client nfs ntp mountd rpc-bind

如果服务器上的这个防火墙阻止了 NFS,那么现在它应该可以正常工作了。或者可能因为网络中有另一个防火墙而无法正常工作。但是,这是关于 Fedora 及其防火墙的。

最后但并非最不重要的一点:上面列出的命令所做的所有更改都是临时的。只有运行时配置已更改(因为--permanent尚未使用)。如果您犯了错误,重新启动firewalld 后所有更改都将消失。

如果您想保留更改,则需要将其保存到永久配置(防火墙文档):

# firewall-cmd --runtime-to-permanent

答案3

/etc/exports需要一个 IP 地址,后面可选跟着一个 CIDR 或旧式网络掩码。

因此您需要将其更改为以下之一:

/dvr 192.168.0.0/255.255.0.0(rw)

或者:

/dvr 192.168.0.0/16(rw)

(也可以使用主机名,但与此无关。)

相关内容