VPN 基础

深度科普VPN出口IP的实际工作过程与实现原理

很多普通用户在使用VPN服务的过程中,只直观感受到连接后外网显示的访问IP发生了变化,却很少了解VPN出口IP从生效到承载流量的完整工作过程,绝大多数和VPN连接相关的IP异常、访问故障,本质上都可以通过拆解出口IP的流转链路定位根因,不需要盲目更换客户端或者切换节点。

从本地请求发出到出口IP生效的完整链路

用户没有开启VPN时,所有公网访问请求都会直接通过本地物理网卡发送到运营商网关,外网服务识别到的访问来源就是用户办理宽带时分配的原生公网IP,整个数据包的包头没有额外的封装处理。

当VPN客户端启动并和远端服务器完成握手认证后,系统会自动生成一块虚拟网卡,同时修改本地路由表的优先级规则,原本指向运营商网关的默认路由,会被替换成指向这块虚拟网卡的隧道入口,后续所有公网访问的流量都会优先被送入虚拟网卡处理。

流量进入虚拟网卡后会被按照协商好的加密协议做封装处理,外层新增的包头会把源地址标记为用户本地的原生公网IP,目的地址标记为远端VPN服务器的公网地址,这层加密后的数据包在公网传输过程中,中间链路的网络节点只能看到用户和VPN服务器的通信行为,无法解析内部的实际访问内容。

网络链路展示VPN出口IP工作过程

通过分层网络链路直观呈现VPN出口IP从请求发出到生效的完整流转逻辑

加密数据包抵达VPN服务器后,外层封装的包头会被逐层剥离,解密还原出用户最初的访问请求,服务器会把这个还原后的请求从自身的公网物理网卡发送到目标外网服务,这个时候数据包携带的源地址,就是大家日常所说的VPN出口IP,也是所有外网服务能够直接识别到的访问来源地址。

VPN出口IP生效的前置配置校验项

很多用户连接VPN后发现显示的IP没有变化,第一反应是VPN服务失效,实际上绝大多数情况都是本地配置没有满足出口IP生效的前提条件。首先要检查本地虚拟网卡的路由优先级是否高于物理网卡,如果虚拟网卡的路由权重被其他网络工具修改调低,系统还是会默认走物理网卡直接发送流量,出口IP自然不会发生变化。

其次要确认VPN服务器端已经开启了源地址伪装转发规则,也就是常说的SNAT配置,如果服务器没有给解密后的用户数据包配置对应的源地址转换规则,数据包的源地址会保留用户本地的私网IP段,这类地址无法在公网正常路由,自然也没法生成可正常使用的VPN出口IP。

如果一台VPN服务器同时接入了多条不同运营商的公网线路,管理员还需要把用户的隧道会话和指定的出口IP做绑定,没有做绑定的情况下,用户的流量可能会随机从不同的公网网卡发出,最终表现为VPN出口IP频繁跳变,不符合用户的使用预期。

出口IP相关常见故障的逐项排查逻辑

最常见的故障是连接VPN后查询到的IP和预期的目标出口IP不一致,第一步要先断开VPN查询本地原生公网IP,再重新连接VPN后再次查询IP,如果查询结果和本地原生IP完全一致,说明加密隧道没有接管默认路由,需要手动检查本地路由表的下一跳配置,确认默认路由已经指向虚拟网卡的地址。

如果查询到的IP既不是本地原生IP也不是目标出口IP,大概率是VPN服务默认开启了自动中转规则,用户的流量先抵达了主VPN服务器,又被转发到了其他第三方中转节点再发出,闪电VPN这个时候可以进入客户端的节点设置页面,关闭自动中转相关的选项后重新连接即可。

还有一类特殊故障是部分网站显示的是VPN出口IP,另一部分网站显示的还是用户本地原生IP,这种情况不属于服务故障,一般是VPN客户端开启了自定义分流规则,指定了部分域名或者IP段的请求不经过加密隧道,闪电直接走本地运营商网络发出,属于用户可自主调整的配置项。

关于VPN出口IP的常见认知误区

很多用户误以为自己连接VPN后拿到的出口IP是个人独占的,实际上绝大多数商用VPN服务的出口IP都是共享IP,同一台VPN服务器的同一个出口IP,会同时被多个不同的用户共同使用,只有面向企业场景的专属专线服务,才会给用户分配独立不共享的VPN出口IP。

还有不少用户觉得使用VPN出口IP之后,个人的访问行为就完全无法被溯源,实际上VPN出口IP的会话对应记录都会保存在服务商的后台日志中,按照合规流程调取相关记录后,完全可以把对应时段的出口IP访问行为和对应的隧道会话做关联,不存在绝对匿名的效果。

手机连接编辑组
整理 Android 与 iOS 的连接权限、后台运行和网络切换注意事项。
查看更多文章
连接指南

从一个连接问题开始

遇到网站只允许指定出口相关问题,可从“按组织批准的出口连接并核对权限”开始阅读。修改UA或DNS不会自动获得访问授权,需要结合具体环境判断。