我们可以使用 NFS 挂载导出并随心所欲地使用它。但是,在客户端处于不活动状态大约五分钟后,我们无法再与已安装的文件夹进行交互。所有请求(ls、cd 等)都会挂起。
- 客户端:Fedora 28
- 服务器:在 Windows 上运行的专有 NAS 系统。
从服务器端使用 Wireshark 监控传入流量,一旦开始不活动,我们可以看到 TCP keepalive 数据包,并且所有数据都会由服务器响应。此过程每 60 秒重复四次。第 5 个请求是来自客户端的 FIN/ACK,这是来自服务器的 ACK,来自服务器的 FIN/ACK 是来自客户端的 ACK。所以在我看来这是客户端终止 TCP 连接。
这是 mount 命令的导出信息。挂载是在自动挂载程序中指定的。
x.x.x.x:/export on /mnt/test type nfs
(rw,relatime,vers=3,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,port=20000,timeo=600,retrans=2,sec=sys,mountaddr=x.x.x.x,mountvers=3,mountport=10000,mountproto=udp,local_lock=none,addr=x.x.x.x)
所以,我知道客户端可能不想保持未使用的开放 TCP 连接,但是为什么一旦该客户端上的用户开始与该客户端的文件夹交互,它就会重新建立该连接?