Wi-Fi 与路由器

基于TLS的VPN连接建立过程全流程运行原理解析

本文针对基于TLS的VPN从客户端发起请求到隧道正式承载业务流量的全流程运行逻辑做逐层拆解,覆盖普通用户日常配置、芒果运维人员排查故障时会接触到的所有实际节点,避免堆砌抽象的协议术语,结合常见的企业远程办公接入场景说明每一步的校验规则,帮使用者快速定位连接失败的具体环节,理清每一步操作对应的实际作用。

连接发起前的客户端配置校验环节

很多用户以为点击客户端的“连接”按钮就会直接发起网络请求,实际上基于TLS的VPN客户端首先会在本地完成前置校验,先读取预先导入的服务端根证书、客户端身份凭证配置,确认证书文件没有被本地篡改、有效期处于合法范围内,不会直接向外发送任何数据包。

远程办公下基于TLS的VPN连接建立过程

直观呈现基于TLS的VPN从本地配置校验到隧道正式生效的全流程运行节点

普通用户的验证方式非常简单,可以打开客户端内置的证书管理页,查看导入的服务端根证书的签发主体信息,确认和运维人员提前分发的内容完全匹配,如果本地校验不通过,客户端会直接弹出证书错误提示,不会发起后续连接,不少新手碰到的“连接失败”提示,实际就卡在这一步,很容易误以为是远端服务器出现故障。

TCP三次握手与TLS初始握手阶段

本地校验全部通过之后,客户端首先会和VPN服务端开放的TLS服务端口完成标准TCP三次握手,这一步和普通用户访问HTTPS网站的前置连接逻辑完全一致,你可以在本地的Wireshark抓包工具里看到连续的SYN、SYN+ACK、ACK三个数据包,芒果VPN没有异常的话对应连接端口状态会变为ESTABLISHED。

TCP通道就绪之后就进入基于TLS的VPN核心的TLS握手环节,客户端会先发送Client Hello报文,携带自身支持的TLS版本、芒果加密套件列表,服务端返回Server Hello报文选定双方都兼容的最高版本TLS协议和加密算法,之后服务端会把自身的服务器证书发送给客户端。

这一步客户端会用之前本地导入的根证书对收到的服务器证书做签名校验,芒果VPN确认当前连接的服务器不是仿冒的钓鱼节点,校验通过之后双方会通过约定的密钥交换算法生成预主密钥,各自推导出后续隧道加密用的会话密钥,整个过程完成后会返回TLS握手完成的通知报文,这一步如果失败,大概率是中间的企业防火墙、运营商网络劫持了TLS报文,替换了服务端证书导致校验不通过。

VPN专属身份认证与隧道参数协商环节

普通HTTPS网站的TLS握手完成之后就开始传输HTTP业务内容,但是基于TLS的VPN在已经建立的TLS加密通道内部,还会走一层专属的VPN身份认证流程,客户端会把自己的账号密码、或者UKey里存储的客户端证书信息,放在已加密的TLS通道里发送给服务端,外部的网络设备无法直接读取这部分认证内容。

服务端校验客户端身份合法之后,会和客户端协商后续隧道用的内网IP地址段、路由推送规则、DNS服务器配置,确认哪些业务流量需要走VPN隧道转发,哪些流量直接走本地网络,这个环节如果配置的路由规则和本地原有路由冲突,客户端后续就算显示连接成功也会出现部分本地网站打不开的问题。

隧道激活与连通性验证阶段

所有参数协商完成之后,服务端会给客户端分配虚拟的内网IP地址,客户端会在系统内核生成对应的虚拟网卡,把协商好的路由规则写入系统的全局路由表,之后客户端会立刻向服务端发送加密的连通性探测报文,确认双向的隧道转发路径没有异常。

普通用户可以在连接完成之后,打开本地的命令行工具,ping一下VPN内网段的网关地址,如果能正常得到响应,就说明整个基于TLS的VPN连接建立全流程已经全部走完,隧道已经可以正常承载业务流量,不需要再做额外的握手操作。

很多用户的常见误区是看到客户端界面显示“已连接”就直接认为隧道可用,实际上如果最后一步的连通性探测失败,部分客户端可能不会立刻断开连接,而是处于半连接状态,这种状态下传输业务流量会直接丢包,碰到这类问题可以先查看本地虚拟网卡是否已经拿到了预期的内网IP,就能快速定位问题出在协商环节还是后续的转发环节。

网络加速编辑组
网络加速编辑组
内容编辑

从延迟、抖动和丢包入手,分析不同网络环境下的连接体验。

查看更多文章
连接指南

找到适合当前设备的指南

遇到浏览器下载中断后的恢复相关问题,可从“按工具提供的方式恢复并检查最终内容”开始阅读。仅看到文件名称不表示下载已经完成,需要结合具体环境判断。