mount.cifs:如何避免切换 IP 后长时间超时(有线 wifi)

mount.cifs:如何避免切换 IP 后长时间超时(有线  wifi)

当我将笔记本电脑从带有有线以太网连接的扩展坞上拔下时我让网络管理器自动打开 wifi 无线电。进入基座后,我让它关闭 wifi,因为有线连接更可取。

问题是:对我之前安装的 cifs 共享上的所有文件或文件夹的访问都会挂起 120 秒。如果应用程序访问这些共享(例如这些目录中的 shell 会话、在那里打开选项卡的文件管理器等),这会导致应用程序挂起。它们的进程卡在可怕的不间断状态

内核日志显示:内核:CIFS VFS:服务器在 120 秒内没有响应。正在重新连接...

问题:我怎样才能减少超时时间,以便每次我切换到/从基座时,由于所有应用程序都挂起,我不必花费 2 多分钟的时间喝咖啡?

更多细节:

  • 两个接口在同一个子网上有不同的 IP,显然都可以访问文件服务器
  • 示例 /etc/fstab 行:

//服务器/安装/mnt/net/install cifs uid=bob,credentials=/etc/cifs-credentials,_netdev,用户,soft 0 0

  • mount | grep cifs 的示例输出:

//服务器/安装在/mnt/net/install 类型 cifs (rw,nosuid,nodev,noexec,relatime,vers=1.0,cache=strict,username=bob,domain=bobsdom,uid=1000,forceuid,gid=0,noforcegid,addr=[serverIP],unix,posixpaths,serverino,acl,rsize=1048576,wsize=65536,actimeo=1,_netdev,user)

我尝试过的:

  • “软”和“硬”安装选项。它们不会改变该行为,尽管手册页中关于“软”的文本表明
  • 确保两个接口均无数据包丢失,且延迟和带宽均非常出色(GBit 以太网和 802.11ac wifi 信号强)。这让我确信这确实是由于 IP 更改导致的 cifs 超时。
  • 服务器(samba 3.6)没有网络问题,也没有数据包丢失。
  • 在 Google 上搜索了 cifs 中的一个旋钮,将超时时间缩短到合理的时间,例如 15 秒。只有找到一个适用于 Windows 的。它的名称是 HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\SessTimeout,并且是确切地我想要的。有趣的是,微软也将 Win 8.1 中的超时时间缩短到了 20 秒...
  • 使用路由指标而不是打开/关闭 wifi 来使两个路由都开启,并让内核只选择以太网路由。但是这种方法是有缺陷的,因为内核会通过有线接口向通过无线方式到达的数据包发送回复。可以使用一些“ip 规则”魔法来解决,但我真的更喜欢切换 wifi 无线电。

答案1

一个可行的解决方案是将两个接口都设置为相同的静态 IP 地址。这样 cifs 就不会超时,因为它不必从同一子网上的不同 IP 重新建立连接。

这也意味着 SSH 连接在有线<=>wifi 切换期间保持活动,而无需像 Mosh 这样的花哨工具

它也有缺点:

  • 需要静态 IP 地址而不是 DHCP
  • 如果我的两个接口同时启动,则 IP 发生冲突。我的网络管理器调度程序脚本可以防止这种情况发生。

相关内容