跳到主要内容

“隧道”这个词会让人联想到实体:一根管子,数据从一头进去,从另一头出来。这个画面大约在头五秒内有用,之后就开始误导人。VPN 隧道不是一个地方,不是一根线缆,也不是另外修的一条路。它是一种打包数据的方式,让数据在穿过你无法控制的网络时,没有人能看到里面是什么、最终要去哪里。

本文把隧道拆开来看:一个数据包怎样被包进另一个数据包里,咖啡馆网络上的旁观者实际能看到什么,隧道怎样诞生、维持和关闭,为什么它会损失一点速度,以及隧道卡住时有哪些表现。如果想了解人们为什么要用 VPN 的大背景,VPN 是如何工作的 是一篇合适的搭配阅读。

隧道是一种方法,不是一个地方

互联网上的一切都以数据包的形式传输:一小块一小块的数据,每块前面有一张标签(包头),写明来自哪里、要去哪里。你的手机时刻都在产生这些数据包,网页的每一小块、一条消息、一帧视频,都各对应一个。

做隧道,就是把一个完整的数据包,连标签带内容,当作货物来对待。VPN 软件把整件东西放进一个贴着新标签的新数据包里。这种技术叫封装(encapsulation)。新标签指向 VPN 服务器,而不是你想访问的网站。由于货物本身还加了密,原来的标签和内容对沿途的任何人都是读不懂的。

用快递来比喻很合适。假设你想给朋友寄一封信,但不想让邮局或者同一条街的邻居知道这封信是寄给谁的。于是你把写好朋友姓名的信封,装进一个更大的、封好口的盒子,盒子的收件地址是一间你信任的办事处。办事处拆开盒子,读到里面信封的收件人,再转寄出去。沿途,盒子上显示的只有办事处的地址。这个盒子就是隧道,封口就是加密。

由此马上能得到两点认识。

  • 隧道走的是和其他一切流量相同的线路,没有谁专门挖了一条路。变的只是数据从外面看起来的样子。
  • 隧道只存在于它的两端之间。在设备把数据包封装之前、在服务器拆封之后,数据都是普通形态。

隧道里数据包的结构

把层次看清楚,这个概念就具体了。隧道里的一个数据包有两套标签和一个加密的核心。

层 包含什么 谁能读
外层包头 以你设备的地址为发件人,以 VPN 服务器地址为收件人 路径上的任何人:咖啡馆路由器、你的网络服务商
隧道封装字段 标识会话、帮助服务器解密的技术字段 作为元数据可见,但没有密钥就没有意义
加密核心 原始数据包,包括它自己的包头和数据 只有你的设备和 VPN 服务器
核心之内 真实目的地(比如某个网站)和请求内容 对路径隐藏;解密后 VPN 服务器可见

再看看不同的旁观者能看到什么。

  • 同一个 Wi-Fi 上的人。 他们看到你的设备与某一个服务器地址之间有持续的加密数据包往来,但看不出背后是哪些网站或应用。
  • 你的网络服务商。 视角相同:流量都发往一个地址,能看到大小和时间,但读不到内容。
  • 你访问的网站。 它看到请求来自 VPN 服务器的地址,而不是你的。
  • VPN 服务器的运营方。 解密之后,它能看到核心里的内容。这正是对服务商的信任起作用的地方,在 VPN 加密是什么 一文里有更详细的说明。

隧道并不会让流量隐形。旁观者仍然可以判断你在用 VPN,也能大致知道数据量的大小和时间。隧道去掉的是可读的内容和真实的目的地。

隧道的一生:建立、维持、换钥匙、关闭

隧道并不是简单地“开着”。它要经历几个阶段,了解这些阶段有助于解释一些奇怪的现象。

  1. 建立。 点击连接时,应用联系服务器,证明你的身份,并协商出一组新的加密密钥。这就是握手,所以第一秒钟会比后面慢一点。不同的 VPN 协议做法不同,VPN 协议 一文比较了这几个大家族。
  2. 稳定传输。 数据包双向流动,发出时封装,收到时拆封。应用和服务器共同保存一点会话状态。
  3. 保活(keepalive)。 你闲着不用的时候,会有周期性的小消息告诉网络和服务器,这条隧道还要用。许多家用路由器和移动网络会悄悄忘掉安静了一两分钟的连接,保活就是为了防止这一点。
  4. 更换密钥。 好的设计会在长时间会话里定期更换加密密钥,这样即使某个密钥被偷,也只能解开很短的一段流量。
  5. 切换网络或重连。 手机从 Wi-Fi 切到手机流量时,设备的地址会变。有的设计能察觉并无缝继续,有的必须重新建立隧道,你可能会看到一小段中断。
  6. 拆除。 断开连接后,会话状态被丢弃,密钥被遗忘,流量回到普通路线。

这些阶段可以解释三种日常观察。连接时短暂的停顿是握手;笔记本休眠后隧道就失效了,是因为保活中断;走出大楼时稍微晃一下,是切换网络的那一步。

为什么隧道会损失一点速度

每种隧道都有一点小代价。了解它,能让“为什么我的 VPN 慢”这个问题少很多神秘感。

每个包多出的字节。 封装会增加新的包头和一些安全字段。如果你的网络规定了数据包的最大尺寸(即 MTU),那么封装后的包也必须装得下。假设路径允许 1,500 字节的包,而隧道增加约 80 字节,那么里面的原始数据包最大只能约 1,420 字节。真实的开销取决于设计,这里的数字只是示意,但算法在哪里都一样。

处理开销。 加密和解密需要运算。现代处理器有专门的指令加速这件事,所以在当前的手机和笔记本上,它很少成为瓶颈。

更长的路径。 流量要先到服务器,再去网站。多出的距离带来延迟,Cloudflare 对 latency 的解释很好地说明了这一点。

分片问题。 如果里面的数据包对隧道来说太大,就必须被切成几块,这要花时间。沿路找到合适尺寸,是路径 MTU 发现标准所描述的工作。这个机制出故障时,会出现一种很有特点的现象:小网页和聊天消息正常,但大文件上传或某些网站卡住。常见的办法是在 VPN 设置里调小数据包尺寸,或者换一个网络。

对多数网络良好的人来说,综合代价是吞吐量下降几个百分点、延迟增加几十毫秒。想把这些代价和其他原因区分开,可以看看用 VPN 后网速变化的相关文章。

全隧道与分流隧道

常见的有两种安排。

方式 哪些流量进隧道 典型用途
全隧道 设备上的全部流量 在不可信 Wi-Fi 上保护一切
分流隧道 只有选定的应用或目的地 让银行应用或局域网打印机留在隧道之外

在全隧道里,设备的路由表把所有去往互联网的流量都指向隧道。在分流隧道里,一份简短的例外清单仍走普通连接。两种方式里隧道的机制完全相同,不同的只是允许进入隧道的流量清单。什么是分流(split tunneling) 一文说明了其中的取舍:便利对覆盖范围。凡是在隧道之外的流量,都得不到它的任何保护。

隧道不覆盖什么

隧道最重要的一点“不做”,是它不会延伸到自己的终点之外。有两个局限值得直说。

  1. 服务器之后。 VPN 服务器拆开你的数据包并转发出去之后,流量走的是普通互联网。如果到网站的连接是 HTTPS,它到网站为止依然是加密的;如果是普通 HTTP,在最后这一段就是可读的。所以隧道和 HTTPS 是互补的。
  2. 连接之前与断开之后。 隧道只在它建立期间存在。开机时自动启动、赶在 VPN 连上之前运行的应用,可能把最初的请求发到隧道之外。

隧道也不检查里面的内容是否安全。恶意文件或钓鱼页面经过隧道,和不经过隧道没有任何区别。隧道保护的是旅程,不是货物。

你可能读到的几种隧道

这个词在网络领域用得比较宽泛,了解主要的几类会有帮助。

  • 远程访问隧道 把一台设备(例如你的笔记本)连到服务器,个人 VPN 应用和在家办公的员工背后就是这一类。
  • 站点到站点隧道 把两个完整的网络连起来,比如总部和分公司,这样两边所有设备无需安装任何东西就能互相访问。
  • 隧道模式与传输模式 是 IPsec 标准家族里的两种选项。隧道模式下整个原始数据包被封装;传输模式下只保护载荷,原始包头保留。讲安全架构的标准 RFC 4301 对这两种模式都有定义。
  • 所用层级。 有的隧道承载整个网络帧,有的只承载 IP 数据包。面向个人的 VPN 应用几乎都用 IP 数据包,因为更简单、更轻。
  • 底层传输。 外层数据包可以走 UDP 或 TCP。UDP 往往更快,TCP 在某些严格网络里更容易通过,但效率有所损失。这是设计层面的细节,应用通常会替你选好。

隧道卡住时:现象与处理

隧道是可靠的,但偶尔也会沉默。下面是常见现象和合理的处理顺序。

现象 可能原因 可以尝试
设备唤醒后应用显示已连接,却打不开任何页面 休眠期间隧道已失效 断开后重新连接
小网页正常,大网页或上传卡住 数据包尺寸问题 换网络;若应用提供,调小数据包尺寸
从 Wi-Fi 切到手机流量后一切变慢 隧道正在重新建立 等几秒钟;仍然如此就重连
已连接,但个别网站报错 该路径上出现路由或 DNS 小故障 换一个位置
在某个网络上隧道反复掉线 该网络过滤或重置安静的会话 在那里改用手机流量;检查保活相关选项
关了 VPN 似乎也有流量在走 隧道掉线后没有任何东西阻止泄漏 若应用提供,打开 断网保护

一次只改一个地方。隧道原理简单,干净利落地重连,往往能解决大部分问题。

一幅总图:打开一个网页时,谁看到了什么

为了把所有内容串起来,我们跟踪一次请求。假设你在机场 Wi-Fi 上开着 VPN 打开一个新闻页面。你的应用把请求装进加密核心,并写上服务器地址为收件人。机场的路由器看到的是发往同一个地址的包裹,它照样转发,却不知道里面是什么。VPN 服务器收到后解密,用自己的地址向新闻网站发出请求。新闻网站作出回复,服务器重新封装回复,并发回给你。你的应用把它拆开。

在这短短的一瞬间,有三方各自看到了不同的部分:机场的运营者看到一条通往服务器的连接,新闻网站看到来自服务器的请求,服务器的运营方则看到两头。除了服务器运营方,没有人看到全貌。这就是为什么选择服务商和隧道技术本身一样重要。

总结

VPN 隧道是一种封装方法:你的每个数据包,连标签带内容,被包进一个新的加密数据包里,收件人是 VPN 服务器,由它拆封并转发。隧道只存在于你的设备与该服务器之间,要经历建立、保活、换密钥和拆除这些阶段,并在字节、处理和距离上有一点小开销。路径上的旁观者能看出隧道存在以及它有多忙,但看不到里面是什么;隧道不保护服务器之后发生的事,也不检查里面的货物。

如果想用简单的方式亲自试一试,价格页面 展示了通过免费应用连接的预付选项。

常见问题

VPN 隧道是真实存在的线缆或管道吗?

不是。隧道是一种打包数据的方式:你原来的数据包被放进新的加密数据包里,再走普通互联网传输。“隧道”这个词描述的是效果,即外人看不到里面的内容。

VPN 隧道会一直通到我访问的网站吗?

不会。隧道只在你的设备和 VPN 服务器之间。过了服务器,流量就走普通互联网,所以最后一段仍然需要 HTTPS。

为什么 VPN 隧道会让网速略微变慢?

封装会给每个数据包增加额外字节,加密需要处理时间,而且流量要绕经服务器,路径通常更长。在良好的网络上,这些代价都很小。

上网时隧道断了会怎样?

如果没有保护措施,设备可能悄悄回到普通线路发送流量。应用若提供断网保护(kill switch),会在隧道恢复之前阻断流量,请确认这项设置已开启。

分流(split tunnel)还算隧道吗?

算。分流只把选定的应用或目的地送进隧道,其余流量走普通连接。隧道本身的工作方式是一样的。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

VPN 安全

什么是 VPN 加密?

VPN 加密会把你的设备与 VPN 服务器之间的数据打乱。本文讲解密钥、算法和握手如何运作,以及加密做不到什么。

阅读约 10 分钟

VPN 基础

什么是 VPN 协议?

VPN 协议规定了你的设备与 VPN 服务器如何连接并保护流量。本文用通俗的语言讲清楚它的含义和主要取舍。

阅读约 9 分钟

VPN 安全

什么是分流隧道(Split Tunneling)?

分流隧道让你选择哪些应用或网站走 VPN,哪些直接访问互联网。它很灵活,但也会改变被保护的范围。

阅读约 9 分钟

VPN 安全

什么是 VPN 断网保护(Kill Switch)?

Kill Switch 能防止 VPN 断开时设备悄悄改用不受保护的连接。本文介绍它的原理,以及如何检查它是否有效。

阅读约 12 分钟

VPN 基础

VPN 是如何工作的?

逐步讲解连接 VPN 并打开网站时发生了什么:握手、隧道、服务器和返程。

阅读约 9 分钟