如何禁用与 FreeBSD NFSv4 服务器的 NFSv3/v2 连接?

Utk*_*nos 6 freebsd nfs mount nfs4

我使用的是 Kubuntu 11.10 客户端和 FreeBSD 9.0 服务器。

服务器在 /etc/rc.conf 中有以下几行

nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
Run Code Online (Sandbox Code Playgroud)

以及 /etc/exports 中的以下内容

V4: /
/
Run Code Online (Sandbox Code Playgroud)

除了默认系统之外,我没有使用任何类型的安全性来保持此配置尽可能简单。

从客户端,这两个命令都成功挂载导出的 NFS 共享:

$ sudo mount -t nfs test.home:/ /mnt
$ sudo mount -t nfs4 test.home:/ /mnt
Run Code Online (Sandbox Code Playgroud)

我可以在服务器端做什么来禁用 NFSv3 及以下版本,以使以下内容不起作用?

$ sudo mount -t nfs test.home:/ /mnt
Run Code Online (Sandbox Code Playgroud)

Utk*_*nos 2

我从从事 NFS 代码工作的 FreeBSD 开发人员那里得到了这个问题的以下答案。要在服务器级别禁用 v2 和 v3 连接,需要运行以下命令:

sysctl vfs.nfsd.server_min_nfsvers=4
Run Code Online (Sandbox Code Playgroud)

如果您希望更改在系统上永久生效,请将以下行添加到/etc/sysctl.conf

 vfs.nfsd.server_min_nfsvers=4
Run Code Online (Sandbox Code Playgroud)

我刚刚在最初的问题中的设置上对此进行了测试,并且使用 v3 和 v4 mount 命令获得了有关安装的以下输出:

$ sudo mount -t nfs test.home:/ /mnt
$ mount
test.home:/ on /mnt type nfs (rw,vers=4,addr=192.168.1.5,clientaddr=192.168.1.3)

$ sudo mount -t nfs4 test.home:/ /mnt
$ mount
test.home:/ on /mnt type nfs4 (rw,addr=192.168.1.5,clientaddr=192.168.1.3)
Run Code Online (Sandbox Code Playgroud)

请注意,现在两者都以 v4 挂载结束。