使用 nfs 的不安全端口进行挂载

Chr*_*lan 5 linux nfs mount rhel5

标题说的是。mount 有时会从不安全的端口发出 NFS 挂载/卸载请求。我相信这个问题是由于所有安全端口在非常高的安装活动(amd)之后陷入 TIME_WAIT 状态而引起的。有什么办法可以改变这种行为吗?我不希望从不安全的端口发送请求,无论是否有可用的安全端口。我宁愿挂载在等待安全端口时挂起。不允许来自 NFS 服务器上不安全端口的请求不是一个选项。

我在 mount、nfs 或 mount.nfs 的手册页中没有看到任何用于控制此操作的内容。为了缓解这个问题,我尝试了net.ipv4.tcp_tw_reuse=1,但它似乎没有帮助。

提前致谢。

ase*_*seq 1

为什么不使用 iptables 来阻止这些您不想使用的端口(范围)。确保将其设为拒绝规则并且不要删除它,在后一种情况下,可能需要更长的时间,因为连接尝试超时。

典型的规则可能如下所示:

    /sbin/iptables -I OUTPUT -d 0/0 -j REJECT --reject-with icmp-net-prohibited -p tcp --dport XX -o ethX
    /sbin/iptables -I OUTPUT -d 0/0 -j REJECT --reject-with icmp-net-prohibited -p udp --dport XX -o ethX
Run Code Online (Sandbox Code Playgroud)

对于端口范围使用:

--dport XX:YY
Run Code Online (Sandbox Code Playgroud)

对于传入:

    /sbin/iptables -I INPUT -s 0/0 -j REJECT --reject-with icmp-net-prohibited -p tcp --dport XX -i ethX
    /sbin/iptables -I INPUT -s 0/0 -j REJECT --reject-with icmp-net-prohibited -p udp --dport XX -i ethX
Run Code Online (Sandbox Code Playgroud)

更新:也许从手册中向 rpc.mountd 添加正确的选项对您有用:

-p  or  --port num
          Force rpc.mountd to bind to the specified port num, instead of using the random port number assigned by the portmapper.
Run Code Online (Sandbox Code Playgroud)

在 Debian 中,您可以在 /etc/default/nfs-kernel-server 中执行此操作,并将选项添加到此行:

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information, 
# see rpc.mountd(8) or http://wiki.debian.org/?SecuringNFS
RPCMOUNTDOPTS=--manage-gids
Run Code Online (Sandbox Code Playgroud)