一次完整的VPN连接是如何建立的?全过程详解

VPN的工作原理 / 浏览:2
2026.08.09分享SSR、V2Ray、Clash免费节点,包含美国、韩国、德国、日本、新加坡,免费节点仅供学习研究,请勿非法使用。 【查看详情】

楔子:凌晨两点的咖啡店

凌晨两点,北京某互联网公司的程序员林薇合上笔记本电脑,揉了揉发涩的眼睛。她刚收到一条紧急通知——香港机房的一台服务器出现异常,需要立刻远程登录排查。但此刻她人在家中,网络环境并不安全,而且公司内网资源严格限制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。这个过程与普通上网一样:

  1. 客户端向本地配置的DNS服务器(可能是咖啡店Wi-Fi的,也可能是公司指定的)发起查询。
  2. 得到服务器的公网IP,例如 203.0.113.5
  3. 客户端锁定这个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/2410.0.0.0/8 走VPN) - DNS服务器地址 - 是否启用压缩、MTU大小等

林薇的电脑收到后,会自动在本地创建一张虚拟网卡(如TAP或TUN),并分配上面那个IP。此时,她的电脑上多了一个“隐形网卡”,所有发往公司内网的流量都会路由到这个虚拟网卡上。

4.2 生成数据加密密钥

双方还会通过控制信道协商一组独立的对称密钥用于数据信道。这组密钥是短暂的,可能每隔一定时间或传输一定数据量后自动轮换。这样做的好处是,即使某个密钥被破解,攻击者也只能解密一小段时间的流量。

4.3 封装与加密

现在,当林薇用SSH登录公司服务器时,数据包是这样流动的:

  1. 原始数据包:[源IP 10.8.0.6] -> [目标IP 192.168.1.100],端口22。
  2. 加密:客户端用数据信道密钥加密整个包,得到密文。
  3. 封装:在密文外面套上一个新的UDP头,源端口随机,目标端口1194,源IP是林薇的真实公网IP,目标IP是VPN服务器IP。
  4. 这个“套娃”数据包通过互联网发送到公司网关。

这就是“隧道”的本质:原始数据被加密后,塞进一个普通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

文章版权归作者所有,未经允许请勿转载。