我有两台机器 A 和 B,它们不在同一个网络上,我想将 nfs 共享从一台机器导出到另一台机器。
在中间,我有一台位于两个网络上的机器 M。
我成功地在 M 上安装了 A 的共享。现在,我想将此安装导出到 B。
我在 M 上创建了一个导出,如下所示:
/mnt/path/to/mountpoint/of/A's/nfsshare <B's IP address>(rw,insecure,secure,root_squash,wdelay,sync,no_subtree_check)
并尝试将其安装在 B 上,如下所示:
<M's hostname>:/mnt/path/to/mountpoint/of/A's/nfsshare /some/empty/directory nfs auto,rw,rsize=65535 0 0
当我尝试挂载 M 的导出时,我在 B 上收到此消息:
mount.nfs:vm-dc:/mnt/dcstore01/data02/formats_exploitation 失败,服务器给出的原因:权限被拒绝
我在 M 的系统日志中收到此消息:
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: authenticated mount request from 10.0.0.1:773 for /mnt/dcstore01/data02/formats_exploitation (/mnt/dcstore01/data02)
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: qword_eol: fflush failed: errno 22 (Invalid argument)
Dec 6 13:53:05 vm-dc rpc.mountd[27916]: Cannot export /mnt/dcstore01/data02, possibly unsupported filesystem or fsid= required
我应该怎么办 ?
答案1
这称为 nfs 重新导出,现代 linux 内核/发行版不允许这样做。作为解决方法,请尝试在主机 M 上进行端口转发:
iptables -t nat -A PREROUTING -p tcp --dport 2049 -j DNAT --to-destination 10.10.10.10:2049
iptables -t nat -A POSTROUTING -p tcp --dport 2049 -j MASQUERADE
对 mountd 也执行相同的操作,但最好先在主机 A 上的 /etc/sysconfig/nfs 中修复 mountd 端口
RPCMOUNTDOPTS="--port 2052"
请记住,mountd 也可能使用 udp。