一次完整的VPN连接是如何建立的?全过程详解
楔子:凌晨两点的咖啡店
凌晨两点,北京某互联网公司的程序员林薇合上笔记本电脑,揉了揉发涩的眼睛。她刚收到一条紧急通知——香港机房的一台服务器出现异常,需要立刻远程登录排查。但此刻她人在家中,网络环境并不安全,而且公司内网资源严格限制IP访问。
她打开公司配发的笔记本,点开那个熟悉的绿色图标——企业VPN客户端。输入工号、密码,点击“连接”,屏幕上的状态栏开始旋转。
“正在建立安全隧道...”
这短短几秒钟背后,其实是一场由密码学、网络协议和服务器集群共同协作的精密“接力赛”。今天,我们就以林薇的这次操作为例,把VPN连接从按下按钮到数据畅通的每一步,拆开揉碎讲清楚。
第一阶段:前置条件——你手里必须有什么?
在VPN连接真正开始之前,林薇的电脑和公司的VPN网关之间,已经存在几个“约定俗成”的前提:
- VPN客户端软件:公司统一安装的OpenVPN或WireGuard客户端,里面预置了服务器的公网IP地址和端口(通常是UDP 1194或TCP 443)。
- 身份凭证:林薇的工号密码,以及一个动态令牌(每30秒变化一次的6位数字)。这是第一道门锁。
- 根证书:客户端内置了公司CA(证书颁发机构)的根证书,用于后续验证服务器的真实性,防止“中间人攻击”。
如果这些条件缺失任何一个,连接根本不会启动。林薇按下连接按钮的瞬间,客户端会先检查本地网络是否可达互联网——如果她连的是咖啡店的免费Wi-Fi,这一步会先通过DHCP获取IP,然后发送一个ICMP ping到VPN服务器域名。
第二阶段:DNS解析与TCP/UDP握手——找到那扇“暗门”
林薇的客户端首先需要解析VPN服务器的域名,比如 vpn.example.com。这个过程与普通上网一样:
- 客户端向本地配置的DNS服务器(可能是咖啡店Wi-Fi的,也可能是公司指定的)发起查询。
- 得到服务器的公网IP,例如
203.0.113.5。 - 客户端锁定这个IP,并尝试建立传输层连接。
这里有一个关键分岔口:如果VPN使用OpenVPN协议,默认走UDP端口1194。UDP不需要三次握手,客户端直接发送一个初始化的“Hello”数据包。如果是L2TP/IPSec,则先走UDP 500和4500端口做IKE协商。而如果是WireGuard,它使用UDP端口51820,且自带加密握手。
林薇的公司用的是OpenVPN over UDP。客户端发送的第一个数据包非常小,只有几十字节,里面包含了: - 预共享的静态密钥(如果配置了的话) - 客户端支持的加密算法列表(如AES-256-GCM、ChaCha20-Poly1305) - 一个随机生成的会话ID
这个包到达公司网关的防火墙时,防火墙会检查目的端口——如果是1194且协议是UDP,就放行到内网的VPN服务器。此时,传输层连接还没完全建立,但“暗门”已经找到了。
第三阶段:TLS/SSL握手——加密的“对暗号”
大多数现代VPN(如OpenVPN)在传输层之上,还会包裹一层TLS握手。这一步的目的是在不安全的公网上,安全地交换后续用于加密数据的对称密钥。这就像两个间谍在闹市接头,先要确认对方是自己人,再约定暗号。
3.1 客户端发送“Client Hello”
林薇的电脑发出一条TLS Client Hello消息,其中包含: - 一个随机数(Client Random) - 支持的TLS版本(如1.3) - 加密套件列表(比如TLSAES256GCMSHA384)
3.2 服务器回应“Server Hello” + 证书
公司VPN服务器收到后,回复Server Hello,携带: - 另一个随机数(Server Random) - 选定的加密套件 - 服务器数字证书(包含公钥,由公司CA签名)
3.3 证书验证——防止“李鬼”
林薇的客户端收到证书后,会用内置的根证书去验证签名。如果证书过期、域名不匹配或签名无效,客户端会立刻弹出红色警告并中止连接。这一步非常关键——如果林薇连接的是钓鱼Wi-Fi,攻击者可能会尝试伪造证书,但因为没有根证书私钥,验证必然失败。
3.4 密钥交换
验证通过后,客户端生成一个“预主密钥”(Pre-Master Secret),用服务器的公钥加密后发送。服务器用私钥解密得到预主密钥。随后,双方用“Client Random + Server Random + 预主密钥”通过伪随机函数计算出会话密钥(对称密钥)。从此刻起,所有后续数据都用这个会话密钥进行AES-256-GCM加密。
但注意,这只是“控制信道”的TLS加密。VPN真正传输用户数据时,还需要另一层加密。
第四阶段:数据通道的建立——隧道里的“双层装甲”
TLS握手完成后,VPN客户端和服务器已经能安全地交换控制消息。接下来要建立的是数据通道,用于承载林薇访问公司内网的流量。以OpenVPN为例,这个阶段会进行:
4.1 推送配置
服务器通过加密的控制信道,向客户端推送: - 虚拟IP地址(比如 10.8.0.6) - 内网路由规则(比如 192.168.1.0/24 和 10.0.0.0/8 走VPN) - DNS服务器地址 - 是否启用压缩、MTU大小等
林薇的电脑收到后,会自动在本地创建一张虚拟网卡(如TAP或TUN),并分配上面那个IP。此时,她的电脑上多了一个“隐形网卡”,所有发往公司内网的流量都会路由到这个虚拟网卡上。
4.2 生成数据加密密钥
双方还会通过控制信道协商一组独立的对称密钥用于数据信道。这组密钥是短暂的,可能每隔一定时间或传输一定数据量后自动轮换。这样做的好处是,即使某个密钥被破解,攻击者也只能解密一小段时间的流量。
4.3 封装与加密
现在,当林薇用SSH登录公司服务器时,数据包是这样流动的:
- 原始数据包:
[源IP 10.8.0.6] -> [目标IP 192.168.1.100],端口22。 - 加密:客户端用数据信道密钥加密整个包,得到密文。
- 封装:在密文外面套上一个新的UDP头,源端口随机,目标端口1194,源IP是林薇的真实公网IP,目标IP是VPN服务器IP。
- 这个“套娃”数据包通过互联网发送到公司网关。
这就是“隧道”的本质:原始数据被加密后,塞进一个普通UDP包里,外面看起来只是普通的UDP流量,但里面装的是加密的SSH会话。
第五阶段:NAT穿透与网关转发——跨越“最后一公里”
林薇的电脑发出的外层UDP包,会经过她家的路由器(NAT),将源IP和端口映射为公网IP和随机端口。这没问题,因为VPN服务器只需要回复到这个公网IP和端口即可。
当公司VPN服务器收到这个外层UDP包时: 1. 用数据信道密钥解密,取出内层原始数据包。 2. 检查目标IP 192.168.1.100,发现是内网服务器。 3. 将解密后的原始数据包通过公司内部交换机,转发给那台服务器。
服务器的响应包原路返回:先回到VPN服务器,VPN服务器加密后,通过已有的UDP“连接”(实际上是四元组:源IP、源端口、目标IP、目标端口)发回给林薇的电脑。注意,这里没有真正的连接,只是双方都记住了对方的四元组,并持续发送加密包。
第六阶段:Keepalive与断线重连——隧道不是一次性的
VPN连接建立后,并不会一直安静地待着。林薇的电脑每过一定时间(比如10秒)会发送一个加密的ping包(OpenVPN的ping-restart机制),服务器收到后回复pong。这有两个作用: - 保活:让NAT映射不超时(如果路由器空闲太久,会删除端口映射)。 - 检测断线:如果连续几次没收到pong,客户端会尝试重新握手或切换到备用服务器。
如果林薇从咖啡店走到地铁站,Wi-Fi切换成4G,她的公网IP会变化。此时,VPN服务器发现客户端的外层IP变了,但四元组里的端口也变了——它会根据客户端发送的新UDP包中的会话ID,自动更新映射关系。这就是OpenVPN的“漂移”特性,无需重新连接。
第七阶段:安全与性能的权衡——为什么有时会卡?
林薇发现,用VPN访问内网时,速度比直连外网慢。这是因为:
- 加密开销:每个数据包都要加解密,CPU占用高。
- MTU问题:VPN封装增加了包大小,可能导致IP分片,触发性能下降。
- 协议开销:UDP封装 + TLS记录头,每个包额外增加约40-60字节。
高级VPN会启用“压缩”和“多路复用”来缓解,但安全性和性能永远是跷跷板。林薇的公司选择了AES-256-GCM,硬件加速下性能尚可,但如果换成ChaCha20-Poly1305,在某些设备上反而更快。
尾声:当林薇关闭VPN
林薇排查完故障,合上电脑。VPN连接会在客户端超时或主动断开时,发送一个“关闭通知”给服务器。服务器释放虚拟IP,删除路由表项,客户端删除虚拟网卡。但隧道本身不会立刻消失——如果林薇没有正常退出,服务器会等待Keepalive超时(通常120秒)才清理资源。
这整个过程,从按下连接到数据畅通,看似一眨眼,实则经历了: - DNS解析 - UDP端口探测 - TLS证书验证 - 会话密钥协商 - 虚拟IP分配 - 路由注入 - 数据封装与加密 - NAT映射更新 - 保活机制
每一步都像精密齿轮一样咬合。而林薇的电脑上,那个绿色图标早已变为“已连接”,状态栏显示“隧道时间:02:13:47”。她不知道的是,就在刚才,她的每一次键盘敲击,都被AES-256-GCM加密,穿越了半个中国,在机房防火墙的UDP 1194端口上,被另一台服务器用私钥解开,再转发到内网服务器上——全程没有明文落过地。
这就是VPN:一条看不见的、加密的、临时的“专用道路”,在公共互联网的泥泞中,硬生生铺出一条安全通道。而下次当你点击“连接”时,不妨想想这背后,那场跨越数千公里的密码学握手。
版权申明:
作者: 什么是VPN
链接: https://whatisvpn.net/working-principle/vpn-connection-full-process.htm
来源: 什么是VPN
文章版权归作者所有,未经允许请勿转载。
上一个: VPN如何通过隧道技术保护数据安全?
热门博客
最新博客
- Wi-Fi环境下更容易发生DNS泄漏吗?
- 一次完整的VPN连接是如何建立的?全过程详解
- AES加密在VPN中的应用详解
- 如何选择适合个人的VPN类型?
- 最适合高速场景的VPN协议推荐
- 如何优化VPN设置获得更快速度
- 手机用户访问海外内容的完整方案
- 网站如何识别用户位置?VPN如何应对
- 欧洲国家是否存在网络审查?
- IPSec VPN为什么被广泛采用?
- 不同VPN服务商全面对比:哪一个更适合你
- 一份完整的VPN安全风险与防护体系解析
- 如何判断隐私政策是否真实可信
- 搜索引擎结果为何会被过滤?
- 欧洲国家VPN使用法规对比分析
- 网络审查对国际企业运营的影响
- 深度包检测(DPI)如何实现网络审查?
- 远程办公中网络延迟问题如何解决
- 企业使用VPN是否需要遵守特定法律?
- 如何选择最快的VPN服务器地区