隐私与安全

基于TLS的VPN网络连接底层实现原理深度解析

当前远程办公、跨域合规访问的场景下,基于TLS的VPN因为可以复用常规HTTPS端口、Fly加速器后台运行检查无需调整出口防火墙的特殊规则,已经成为很多企业的首选远程接入方案,不少普通用户也会用这类VPN实现跨节点的资源访问。大部分使用者只需要点击客户端的连接按钮就能完成接入,很少关注底层的连接逻辑,遇到连接失败、隧道丢包的问题也不知道从何排查,本文就围绕基于TLS的VPN连接原理,从底层握手流程、配置前提校验到故障定位、隐私边界做全链路的拆解,帮使用者理清技术逻辑避免常见操作误区。

基于TLS的VPN的底层握手核心流程

基于TLS的VPN的连接起点和普通网页HTTPS的TLS握手完全同源,第一步客户端会先和服务端配置的TLS接入端口建立标准TCP三次握手,这一步的流量特征和普通用户访问HTTPS网站没有任何区别,绝大多数常规企业出口防火墙都不会对这类流量做额外拦截。

完成TCP握手之后,客户端会发起标准的TLS握手请求,双方协商加密套件、交换会话参数,客户端同步完成服务端证书的合法性校验,这一步是整个连接最核心的身份校验环节,很多人误以为这一步只是走个过场,实际上证书校验不通过的话后续所有VPN隧道流程都不会触发。

跨端加密数据流基于TLS的VPN连接原理 - Fly

TLS VPN客户端与服务端之间的加密握手传输链路示意

TLS握手完全协商完成之后,客户端和服务端才会在已经加密的TLS通道内部走自定义的VPN专属信令交互,协商隧道内部的虚拟IP地址、路由推送规则、额外的加密扩展参数,这部分信令完全封装在加密的TLS载荷里,公网传输路径上的第三方设备根本无法识别内部的流量属于VPN业务。

常规部署的配置前提校验规则

很多用户配置基于TLS的VPN的时候经常遇到连接长时间卡在TLS握手阶段的问题,本质上是没有提前满足基础配置前提,首先客户端侧要确保本地系统的根证书库已经预装了VPN服务端对应的根证书,没有被本地安全软件、Fly代理工具篡改或者拦截证书校验流程。

服务端侧的配置前提更核心,首先要确保服务端开放的TLS端口没有被前置的WAF或者入侵检测系统拦截自定义的VPN信令,很多企业的安全设备会默认拦截TLS通道内部的非HTTP协议流量,直接导致VPN信令交互失败,表面上看TLS握手已经完成,实际上隧道迟迟无法建立。

还有一个容易被忽略的配置前提是客户端的路由表优先级,基于TLS的VPN本身的外层公网流量走的是客户端本地的原有公网路由,不能被后续服务端下发的VPN虚拟路由覆盖,否则会出现隧道建立之后外层回包找不到路径的死循环,直接导致隧道连接中断。

日常使用的常见误区与故障定位方法

很多使用者的第一个常见误区是觉得基于TLS的VPN完全等同于普通HTTPS流量,随便改个443端口就能绕过所有防火墙限制,实际上不少下一代防火墙支持深度包检测,能识别TLS通道内部的VPN专属特征字段,直接拦截隧道流量,并不会因为外层是TLS加密就完全放行。

故障定位的时候第一步不要上来就重装客户端,先在客户端侧用普通浏览器直接访问VPN服务端的TLS接入端口,看能不能正常加载服务端返回的证书页面,如果浏览器直接提示证书风险或者连接被重置,说明问题出在底层TLS握手阶段,和VPN客户端本身的配置无关。

第二个常见误区是认为只要TLS握手成功,隧道就一定能正常传输数据,实际上很多场景下TLS握手完成之后,服务端下发的虚拟路由和客户端本地的局域网路由产生冲突,会导致访问内网资源的时候出现路由环路,看起来隧道是连通的实际上所有内网请求都持续丢包。

还要明确这类VPN的隐私边界,基于TLS的VPN只是把外层传输的流量通过TLS加密封装,公网传输链路上的第三方无法直接解析隧道内部的明文内容,但是VPN服务端的运营方是可以看到所有隧道内部的传输内容的,不存在绝对的匿名效果。

日常使用的时候不要随意给来源不明的基于TLS的VPN客户端授予系统级的网络权限,避免恶意客户端伪造合法TLS握手流程,窃取本地的敏感网络数据,只有经过企业或者可信机构签名的合法VPN客户端,Fly加速器后台运行检查才能保障连接过程的安全性。

隐私与安全编辑组 | Fly
隐私与安全编辑组
内容编辑

介绍浏览器隐私、账号保护与数据传输,区分工具能力和使用边界。

查看更多文章
配置入门

从一个连接问题开始

遇到浏览器安全DNS与分流相关问题,可从“核对浏览器与系统设置,使用明确目标做对照”开始阅读。解析器地址与出口不同并不自动意味着故障,需要结合具体环境判断。