![VPN 崩溃并重新连接时,通过 VPN 挂起 CIFS 挂起](https://linux22.com/image/1422617/VPN%20%E5%B4%A9%E6%BA%83%E5%B9%B6%E9%87%8D%E6%96%B0%E8%BF%9E%E6%8E%A5%E6%97%B6%EF%BC%8C%E9%80%9A%E8%BF%87%20VPN%20%E6%8C%82%E8%B5%B7%20CIFS%20%E6%8C%82%E8%B5%B7.png)
我已成功通过 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 中限制域中的用户登录时间