一台笔记本电脑通过办公室路由器保持一条可用的隧道。同一房间里的第二台笔记本连接后,第一台就掉线了。如果这就是全部症状,那么桌面上仍有三类不同的原因,而哪种修复方案适用,取决于你尚未测量的东西。共享路由器确实相关,但它并不自动有罪,协议也不是。

三张从沙发上看起来一模一样的原因

第一个候选原因是路由器对 IPsec 的处理方式。廉价消费级路由器常常宣传透传,却只对单个客户端实现,因为该机制只跟踪一个对端,无法区分同一公网地址后面的两台笔记本。症状完全符合预期:较新的会话胜出。

第二个原因是账户。许多 VPN 服务器允许每个身份一个会话,并在相同凭据再次认证时断开较旧的那个;这是网关上的策略决定,与你的路由器无关。买硬件之前,先在服务器日志里找那条明确的消息。

第三个原因是简单的配置错误:两个配置文件指向同一个身份,其中一个使用了过期的预共享密钥,或网关已不再接受的证书。这种通常表现为第二次连接失败,而不是第一次掉线,所以失败形态已经透露了信息。

L2TP/IPsec 实际上通过路由器发送什么

IKE 运行在 UDP 500 上。数据路径是 ESP,即 IP 协议 50,完全不携带 TCP 或 UDP 端口。因此只懂端口的路由器无从下手,透传机制的存在正是这个原因。

使用 NAT 穿透时,ESP 被封装在 UDP 4500 之内。现在路由器有了可映射的源端口,每台笔记本得到各自的转换,因此网关能区分两条流。正是这个机制让同一地址后面的多个客户端得以工作。

当你阅读路由器的功能列表时,这个区别很重要。写着 IPsec 透传的标签只说明厂商有某种机制;它不会说明该机制是否支持多个客户端,也不会说明第二个客户端到来时它如何表现。

strongSwan 关于 NAT 穿透的文档描述的是封装本身,而这正是你能从抓包而不是营销页面上验证的部分。

如何确定你真正面对的是哪种原因

做四次观察,并把每个结果写下来。每台笔记本单独使用:能用吗,能撑多久?两台同时:哪台存活?第二台笔记本放在手机热点上:第一台还在吗?在网关上:服务器日志显示新会话替换旧会话,还是显示一个客户端悄然沉默?

这些答案能把候选原因干净地分开。服务器日志里的替换消息指向身份策略。客户端在路由器显示新转换时停止收到流量,指向路由器。两个客户端都无法完成 IKE,指向配置或凭据。

全程保持相同的配置文件。在测试之间更换配置意味着你同时测量两个变量,结论会以极难察觉的方式出错。

如果路由器支持,就在它上面抓包,或者在另一台连接时于其中一台上抓包。看到第二台客户端的数据包出现而第一台的停止,比任何已连接图标都更有力。

如果限制在路由器

如果厂商有文档化的多客户端配置,就使用它;否则换一台文档写明了你所需功能的设备。这是个不体面的答案,也是唯一能在固件升级后存活的答案。

行不通的做法是朝两台不同笔记本添加两条相同的入站转发。转发只告诉路由器把到达的流量送往哪里;它并不告诉路由器一个数据包属于两条活动流中的哪一条,而这份含糊正是缺陷。

如果路由器无法更换,就把一个客户端放到另一条路径后面。手机热点是很差的长期方案,却是很好的诊断方案。

如果限制在网关

为不同的人配置不同的身份。两台笔记本共用同一个账户,正是在按单会话配置的服务器上产生此症状的安排,而任何本地配置都无法修正远端做出的决定。

问网关所有者适用哪条策略:每个账户一个会话、每张证书一个,还是完全不限。他们的回答决定你需要新凭据还是新路由器。

验证是人们跳过的一步。让两个客户端跑有用的流量,时间要长于过去失败的那个间隔,因为两次成功登录只证明认证各自成功了一次。

相关文章