NFSv4通过portforward

我想通过端口转发到达我的NFSv4服务器。 这个大计划将是在本地主机上运行的HAProxy负载平衡的NFSv4服务器集群。 但现在这并不重要。

在服务器上, /etc/exports看起来像这样

 /mnt/x 192.168.0.0/16(rw,sync,no_subtree_check,no_root_squash,fsid=1) 

我可以从我的客户端连接到TCP 2049上的服务器,并像这样安装共享

 mount -t nfs4 -o proto=tcp,port=2049 192.168.2.25:/mnt/x /mnt 

我testing了NFVs4很高兴只有这一个TCP端口打开通过过滤两台机器之间的所有其他通信。

所以我认为NFS运行良好。

但是,当我转发一个端口例如与客户端的redir到服务器

 redir --lport=3049 --cport=2049 --caddr=192.168.2.25 

并想要如下安装它

 mount -t nfs4 -o proto=tcp,port=3049 127.0.0.1:/mnt/x /mnt 

我明白了

 mount.nfs4: Operation not permitted 

我想念什么? 我在服务器日志中看不到任何相关的信息。

更新:我捕获了好的和不好的连接尝试,一开始他们是相同的,然后客户端发送一个

 PUTROOTFH,GETFH,GETATTR 

命令。 在好的情况下服务器响应

 PUTROOTFH-NFS4_OK,GETFH-NFS4_OK,GETATTR-NFS4_OK 

在不好(转发)的情况下,它回应

 PUTROOTFH-NFS4_OK,GETFH-NFS4_OK,GETATTR-NFS4ERR_PERM 

这一点我改变了出口

 /mnt/x 0.0.0.0/0.0.0.0(rw,sync,no_subtree_check,no_root_squash,fsid=1) 

但是错误是一样的。

在好的情况下,服务器日志是

 rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /' rpc.mountd[1711]: nfsd_export: found 0x12dfeb0 path / rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /mnt' rpc.mountd[1711]: nfsd_export: found 0x12e2810 path /mnt 

在不好的情况下

 rpc.mountd[1711]: nfsd_export: inbuf '0.0.0.0/0.0.0.0 /' rpc.mountd[1711]: nfsd_export: found 0x12dfeb0 path / 

我的同事发现tcpdump的解决scheme,好的和不良的连接尝试之间唯一的区别是源端口。

然后谷歌告诉我,我需要导出的insecure选项,因为在转发之后,源端口在1024以上,正常情况下在1024以下, insecure告诉服务器它可以接受源端口在1024以上的客户端。