VPN 崩溃并重新连接时,通过 VPN 挂起 CIFS 挂起

VPN 崩溃并重新连接时,通过 VPN 挂起 CIFS 挂起

我已成功通过 VPN(PPTP)共享 Windows 共享,并使用 mount.cifs 在我的 Ubuntu 机器上安装它,并且我能够从 Ubuntu 浏览共享内容。

然而,有时,当两台机器之间的网络流量变得巨大时(rsync、cifs Windows-> Ubuntu、samba share Ubuntu -> Windows;全部通过 PPTP),PPTP 似乎会崩溃并重新连接(因为启用了选项“持久”)。现在,cifs 共享“挂起” - 我不再能够列出它的内容,也无法卸载它,并且需要重新启动 ubuntu。

这个问题有解决办法吗?我应该在 VPN 连接本身内进行一些更改、修改 cifs 设置或使用其他协议吗?

VPN服务器是我家的路由器(TomatoUSB)。Windows机器物理连接到路由器,ip:192.168.1.102。

Ubuntu 机器是一个 Amazon EC2 实例。它通过 VPN(PPTP)隧道连接到我的家庭网络并获取 IP:192.168.1.202。

VPN 连接详细信息(在 Ubuntu 上的 /etc/ppp/peers/ 中):

remotename <vpn-name>
linkname <vpn-name>
pty "pptp <my-ip> --nolaunchpppd "
ipparam <vpn-name>
name <username>
usepeerdns
require-mppe
refuse-eap
noauth
persist

Ubuntu 使用 samba 共享其内容:

[smb-share]
path = /home/user1
available = yes
valid users = user1-smb
read only = yes
browsable = yes
public = no
writable = no

Ubuntu 使用 mount.cifs 挂载 Windows 共享(每次建立 VPN 连接时,都会将以下几行添加到 ip-up.local 以进行挂载):

umount -l /mnt/cifs/win-share    
mount.cifs //192.168.1.102/win-share /mnt/cifs/win-share -o credentials=/home/user1/.credentials/cifs,ro,iocharset=utf8

当我同时进行以下操作时,VPN 有时会断开连接:

  • 从 Windows 访问 ubuntu 共享
  • rsync windows 共享 toubuntu(命令从 windows 在 putty 终端内执行):

    sudo rsync -avP /mnt/cifs/win-share /home/user1/win-copy &

答案1

客户端会话超时 这是最常见的交换超时。它在 [MS-CIFS] 中定义为系统范围的参数 Client.SessionTimeoutValue。此值可以通过 SessTimeout 注册表项 [KB102067] 进行配置。

\HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\
Value type: Dword
Value name: SessTimeout
Default:    45 seconds (Windows NT)
Default:    60 seconds (Windows 2000)

延长会话超时 此可选超时可能在高延迟网络中有用。它适用于与 ServersWithExtendedSessTimeout 中列出的服务器进行定时交换。

\HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\
Value type: Dword
Value name: ExtendedSessTimeout
Default:    1000 (seconds)
Value type: Multi-string
Value name: ServersWithExtendedSessTimeout
Default:    <null>
These were introduced in Windows XP.

空闲连接定时器

这是连接在断开之前可以处于空闲状态的时间量。空闲连接定义为没有现有打开句柄(没有打开的文件、目录、搜索上下文等)且没有待处理操作的连接。空闲连接计时器是特定于实现的。当服务器收到消息时,Server.Connection.IdleTime 设置为当前时间加上 Server.AutoDisconnectTimeout [MS-CIFS]。在 Windows 服务器上,可以通过 Autodisconnect 注册表项 [KB297684] 进行配置。

\HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\
Value type: Dword
Value name: Autodisconnect
Default:    15 (minutes)

还可以通过组策略配置自动断开连接:计算机配置\Windows 设置\安全设置\本地策略\安全选项“Microsoft 网络服务器:暂停会话前所需的空闲时间量”

在较旧的 Windows 客户端(例如 Windows 2000、Windows 2003)中,客户端会根据 KeepConn 工作站参数 [KB819108] 关闭空闲连接。

HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\parameters\
Value type: Dword
Value name: KeepConn
Default:    600 (seconds)

KeepConn 不再使用,除非在可安装文件系统工具包(IFSKIT)中。

会话过期和动态重新认证 在 Windows 实施中,SMB 会话过期是根据客户端对动态重新认证功能 [MS-SMB] 的支持来强制执行的。如果客户端启用 CAP_DYNAMIC_REAUTH 功能位,则服务器将强制执行会话过期。如果客户端未设置 CAP_DYNAMIC_REAUTH,则 Windows 服务器不会返回 STATUS_NETWORK_SESSION_EXPIRED。SMB
动态重新认证功能是在 Windows XP 中引入的。从那时起,基于 Windows 的客户端设置 CAP_DYNAMIC_REAUTH 功能位,以向服务器指示客户端在会话的 Kerberos 服务票证过期时支持重新认证。Windows 服务器会检查 CAP_DYNAMIC_REAUTH:• 如果 clientCapabilities 设置了 CAP_DYNAMIC_REAUTH,则服务器将 Server.Session.AuthenticationExpirationTime 设置为 AcceptSecuirtyContext 返回的过期时间。 • 如果 clientCapabilities 未设置 CAP_DYNAMIC_REAUTH,则服务器将不会设置 Server.Session.AuthenticationExpirationTime,基本上,客户端未设置的 CAP_DYNAMIC_REAUTH 功能位意味着会话不会在服务器端过期。

参考:

[MS-CIFS]:通用互联网文件系统 (CIFS) 协议

http://msdn.microsoft.com/en-us/library/ee442092.aspx

[MS-SMB]:服务器消息块 (SMB) 协议

http://msdn.microsoft.com/en-us/library/cc246231.aspx

[MS-WKST]:工作站服务远程协议

http://msdn.microsoft.com/en-us/library/cc250262.aspx

当与基于 Windows Server 2003 的服务器建立的 Kerberos 身份验证的 SMB 连接的 Kerberos 票证过期时,无法及时打破文件上的 oplock

http://support.microsoft.com/kb/943459

LanmanWorkstation 参数:SessTimeout

http://technet.microsoft.com/en-us/library/cc938292.aspx

LanmanServer 参数:MaxKeepSearch

http://technet.microsoft.com/en-us/library/cc957456.aspx

远程存储和 Windows 2000

http://technet.microsoft.com/en-us/library/cc938445.aspx

如何解决事件 ID 2009 错误

http://support.microsoft.com/kb/165815

“Microsoft 网络服务器:登录时间到期时断开客户端连接”

http://technet.microsoft.com/en-us/library/cc758192.aspx

如何:在 Windows Server 2003 中限制域中的用户登录时间

http://support.microsoft.com/kb/816666

相关内容