在 Fedora 21 服务器和运行 OpenELEC 的 Rasperry Pi 之间设置 nfs

在 Fedora 21 服务器和运行 OpenELEC 的 Rasperry Pi 之间设置 nfs

我正在尝试设置家庭网络,以便将我的各种音频和视频文件共享到不同的媒体服务器机器。我目前有一台运行 Fedora 21 的机器,它托管了我想要共享的所有文件。在其 /etc/exports 文件中,我有:

/home/Kodi *(ro)

简单。简短而有趣,在另外 2 台机器上有效。从这些机器上,我可以轻松执行

mount 192.168.1.144:/home/Kodi /nfs

一切都很好。

在 Raspberry Pi 上,我安装了 OpenELEC 作为操作系统,启用了 SSH,以便我可以进入并执行管理任务。但是,它从不起作用。使用修改后的目标执行相同的安装行总是会给出:

mount: RPC: Remote system error - No route to host
mount: mounting 192.168.1.144:/home/Kodi on /storage/nfs/Kodi failed: Bad file descriptor

但是,我可以 ping 服务器,甚至可以从 Raspberry Pi 通过 SSH 连接到服务器,因此实际上不存在路由问题。而且,如果我使用 Raspian 启动 Raspberry Pi,则一切正常。这肯定与 OpenELEC 有关,但我不知道是什么。我也在 OpenELEC 论坛上问过这个问题 (http://openelec.tv/forum/134-usage/76905-setting-up-nfs-with-rasppi-and-openelec) 但目前为止我还没有取得任何进展。

我感谢任何帮助。

答案1

根据这个 维基百科openelec 不支持 nfsv4,因此挂载必须使用 nfsv3。也许所有其他系统都在使用 nfsv4,并且防火墙不允许 nfsv3 通过,或者您的服务器仅提供 nfsv4。

当您从防火墙收到 ICMP 数据包时,通常会收到“无主机路由”消息,这会误导您认为该端口不允许。请尝试暂时禁用服务器上的防火墙。

我不知道 Fedora 21 是否仍默认启用 nfsv3。如果没有,您可以尝试此编辑并使用 systemctl 重新启动 nfs:

sed -i /etc/sysconfig/nfs -e '
/RPCNFSDARGS=/s/=.*/="--nfs-version 3 --nfs-version 4"/
/RPCMOUNTDOPTS=/s/=.*/="--nfs-version 3 --nfs-version 4"/'

答案2

我在将服务器从 F20 升级到 F21 后遇到了这个问题。完全禁用防火墙可以让 Kodi 找到并挂载 NFS 共享,但我对服务器上根本没有防火墙感到不安。

我已经搞定了:

firewall-cmd --add-port 1024-65534/tcp --add-port 1024-65534/udp --add-port 111/tcp --add-port 111/udp

这将打开保留端口之上的所有端口,以及 rpcbind 端口 (111)。只需执行

firewall-cmd --add-service nfs

对于 Kodi NFS 客户端来说根本不够用,尽管对于另一个 Fedora 客户端来说连接就没问题了。也许 Kodi 客户端只支持 NFS v3?

相关内容