跳到主要内容

OpenVPN 是你在 VPN 应用设置里仍然能见到的最老牌的名字之一。它在二十一世纪初问世,是开源软件,被审查、部署和压力测试的时间,比大多数较新的选项都长。如果你见过以 .ovpn 结尾的文件,或者标着 TCP 和 UDP 的开关,那你已经和它打过照面了。

本文讲解 OpenVPN 在实际中如何工作:藏在一条隧道里的两个通道、TCP 或 UDP 的选择为什么会改变连接手感、对 OpenVPN 配置来说“安全”究竟指什么,以及如何读懂配置文件、排查连接不上的问题。内容只讲协议的一般原理,不说明任何具体服务支持哪些协议。想先了解整体格局,请看 什么是 VPN 协议。

OpenVPN 到底是什么

OpenVPN 既是协议,也是软件。软件可以运行在 Windows、macOS、Linux、Android、iOS 和许多路由器上。协议则是这些程序建立和使用加密隧道时遵循的规则。三个特点解释了它大部分的行为。

  • 运行在用户空间。 OpenVPN 是一个普通程序,而不是操作系统网络核心的一部分。这让它便于移植和更新,但每个数据包都要在内核和程序之间往返,会损失一些速度。
  • 复用 TLS。 OpenVPN 没有发明新的握手方式,而是借用已经在保护网页浏览的 TLS 机制。TLS 1.3 的规范是 RFC 8446,证书、密钥协商和会话密钥的思路在这里同样适用。
  • 可配置性极高。 端口、传输方式、加密算法、认证方式和路由规则都可以调整。这种灵活性对管理员是优点,对其他人则是出错的来源。

因为建立在标准部件之上,OpenVPN 并不神秘。它做的事和其他隧道协议一样:把数据包用加密包起来,发给服务器,再由服务器转发出去。它的特色在于如何包裹,以及对外开放了多少调节项。

一条隧道里的两个通道

最有用的心智模型是:一次 OpenVPN 连接其实是同时进行的两场对话。

控制通道

控制通道负责建立连接。你点击连接后,客户端和服务器会进行一次 TLS 握手。双方各自证明身份,通常出示证书,然后协商新的密钥。如果配置使用用户名和密码,也是在这里校验。控制通道会在后台持续运行,定期更新密钥,所以被盗的密钥只有有限的使用寿命。

许多配置会在这个通道之上再加一个共享密钥,常被称为 TLS 包裹或 TLS-crypt 密钥。它让握手数据包对不知道密钥的人看起来像噪声,也让服务器能以很低的成本丢弃未经授权的连接尝试。这是加固措施,不能代替好的证书。

数据通道

数据通道承载你真正的流量。它逐个取出 IP 数据包,用控制通道协商出的密钥加密,附上认证标签以便发现篡改,然后发送出去。现代配置使用自带认证的加密算法,比如 GCM 模式的 AES,或 ChaCha20-Poly1305,它们把加密与完整性校验合并在一步里完成。

把两个通道分开有实际好处:缓慢而谨慎的身份认证很少发生,快速的逐包处理则持续运行,并使用不断更换的密钥。想进一步了解加密部分,可以看 VPN 加密是什么。

TUN 与 TAP:路由还是桥接

OpenVPN 会在你的设备上创建一个虚拟网卡,有两种类型。

模式 传输内容 常见用途 代价
TUN IP 数据包(第 3 层) 几乎所有面向普通用户的 VPN、远程访问、站点互联 轻量,路由简单
TAP 以太网帧(第 2 层) 让远程机器看起来在同一局域网,依赖广播发现的老旧软件 额外开销大,流量更多,更难扩展

如果你的目标是保护公共 Wi-Fi 上的流量,要用的是 TUN。TAP 适用于依赖广播发现的老软件,或需要把两个站点当作一台交换机的场景。家庭用户很少需要选它,如果有教程让你改成 TAP 来“提速”,请保持怀疑。

TCP 还是 UDP:改变使用手感的选择

这是人们最容易察觉的决定。两种模式承载的是同样的加密数据,区别在于你和服务器之间用什么传输方式。

UDP 发送数据包时不保证送达,也不保证顺序。数据包丢了,隧道本身不会重传。这没有问题,因为隧道里的流量,比如通过 TCP 加载的网页,本来就有自己的恢复机制。可靠性由一层负责,隧道增加的延迟很小。

TCP 保证按顺序送达,所以隧道会重传丢失的数据包。当你自己的流量本来也是 TCP 时,就变成两层都在为同一次丢包做恢复。连接质量差时,两层的计时器互相冲突,内层发送的数据,外层还在重试,吞吐量可能骤降。这种现象常被称作 TCP meltdown,也是信号弱时 TCP 模式感觉迟钝的原因。

方面 基于 UDP 的 OpenVPN 基于 TCP 的 OpenVPN
网络良好时的速度 通常更好 通常略低
丢包时的表现 平缓下降 可能停滞或忽快忽慢
通话与游戏的延迟 通常更好 通常更差
网络不放行 UDP 时能否使用 不能 可以
典型角色 默认选项 备用选项

一条实用规则

先用 UDP。如果始终连不上,或者在某个特定网络上反复断线,再试 TCP。只在该网络需要时才用 TCP,换到别处就回到 UDP。有些网络,比如某些办公室、学校和酒店,出于策略只放行一小部分流量,TCP 模式有时能在那里连上,但本文不涉及绕过网络所有者刻意设置的限制。如果某个网络不允许 VPN 流量,直接的办法是询问网络管理方,或改用手机流量等其他连接。

一个简短的场景

安娜在网络良好的共享办公空间工作,用 UDP 时视频会议在隧道里很流畅。有一天她出差,住进一家网络对 UDP 放行不稳定的民宿,VPN 连不上。她改用 TCP 后连上了,网页能打开,但视频通话时断时续。这种断续正是双层恢复造成的,所以她在那里只用 TCP 收发邮件、轻度浏览,到了下一个地方就换回 UDP。她是为每种情况选择了合适的工具,而不是认为某个设置永远更好。

对 OpenVPN 配置来说,“安全”是什么意思

人们常问 OpenVPN 安不安全,好像这是协议的“是或否”属性。诚实的回答是:协议设计稳健,经过广泛审查;实际的安全性则取决于具体连接是如何配置的。以下是成败的关键点。

  1. 加密算法的选择。 AES-GCM、ChaCha20-Poly1305 等自带认证的现代算法是合理的选择。为兼容而保留的旧算法,尤其是 64 位分组的算法,强度较弱,已在新版本中逐步淘汰。如果某个配置仍写着很古老的算法,说明它的维护状况令人担忧。
  2. 证书校验。 客户端必须校验服务器的证书和名称。如果不校验,网络上的人就可能冒充服务器。好的配置默认就会让客户端做这项检查。
  3. 密钥寿命。 数据密钥会定期更新,这样一把密钥泄漏,只会暴露一部分流量。
  4. 控制通道加固。 TLS 包裹密钥降低了被扫描和未授权握手尝试的风险。
  5. 软件更新。 客户端和服务器都要保持更新,因为安全修复只有安装后才有用。
  6. 压缩。 加密前先压缩数据,在其他协议中曾与攻击相关联,目前的建议是关闭。启用它的配置值得再看一眼。
  7. 凭据处理。 用户名和密码在受保护的控制通道中校验,但账号本身的安全程度,取决于密码和背后的第二重验证。

这些都不意味着使用 OpenVPN 的连接就无懈可击。隧道保护的是你的设备到服务器之间的流量,它不能阻止设备上的恶意软件、钓鱼网站或弱密码。更完整的图景请看 VPN 无法保护你的哪些方面。

读懂客户端配置

OpenVPN 客户端通常由一个以 .ovpn 结尾的文本文件驱动。你不需要自己写,但能读懂主要几行,就能知道很多信息。下面是一个有意写得很通用的示例,数值均为虚构。

client
dev tun
proto udp
remote vpn.example.net 1194
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3

各行的含义用大白话说:

  • client 表示这台机器主动连接服务器,而不是等待别人连进来。
  • dev tun 选择前面说的路由型虚拟网卡。
  • proto udp 选择传输方式,改成 tcp 就是 TCP 备用模式。
  • remote 给出服务器名称和端口。端口只是个标签,不会改变加密的工作方式。
  • resolv-retry infinite 表示网络不可用时,持续重试解析服务器名称。
  • nobind 允许客户端使用任意本地端口。
  • remote-cert-tls server 让客户端要求对方出示服务器用途的证书,是防止冒充的基本措施。
  • cipher 和 auth 指定数据通道的算法。
  • verb 决定日志的详细程度,排查问题时有用。

真实文件还包含证书和密钥,可能内嵌,也可能是单独的文件。请把包含凭据或密钥的 .ovpn 文件当作密码对待:不要贴到求助论坛,不再需要的副本要删除。如果服务给你的是现成的应用而不是文件,应用会替你生成这些设置,通常不应修改。若应用提供协议选项,除非客服建议,否则保持默认。

性能:MTU、MSS 与一个忙碌的核心

人们常说 OpenVPN 比新协议慢。这有真实原因,其中几项你可以施加影响。

  • 用户空间处理。 每个数据包都要在内核和程序之间往返。在光纤很快但 CPU 一般的机器上,这可能成为瓶颈,而且一条隧道可能只用到一个核心。
  • 额外开销。 隧道会增加包头,压缩了每个数据包里装数据的空间。如果最终的包超过路径能承载的大小,就会被分片或丢弃。探测路径所能承载的最大包的方法,在 RFC 1191 中有描述。
  • MTU 不匹配。 症状很古怪:小网页能加载,大下载却卡住;或者有些网站正常,有些永远加载不完。减小隧道的包大小,或限制 TCP 段大小,通常能解决。客服人员熟悉这个设置,你在求助时说明这些症状即可。
  • 距离与延迟。 无论选哪种协议,距离远的服务器都会增加延迟。Cloudflare 关于延迟的文章解释了这个概念,为什么用 VPN 后网速会变化 则覆盖了其他因素。
  • 加密成本。 AES 硬件加速让 GCM 在许多手机和电脑上开销很低,没有加速的设备用 ChaCha20-Poly1305 可能表现更好。通常你不需要自己选,默认值是为兼容性选定的。

如果速度是你最关心的事,而你的应用提供了其他选项,试试另一种协议是合理的实验,WireGuard 与 OpenVPN 的比较 梳理了其中的取舍。

排查 OpenVPN 连接问题

由简入繁,一次只改一处,这样你才知道是什么起了作用。

  1. 先检查网络。 不开 VPN,打开一个网页。如果打不开,问题不在 VPN。
  2. 确认登录信息。 用户名或密码输错,是启动失败最常见的原因。请从账户页面复制,而不是重新输入。
  3. 检查日期和时间。 证书只在一段日期内有效。设备时钟严重错误,可能会拒绝完全正常的证书。
  4. 重启应用和设备。 这能清除卡住的虚拟网卡,这是 Windows 和 macOS 上的常见原因。
  5. 换个网络试试。 如果手机流量能用,而某个 Wi-Fi 不行,那个 Wi-Fi 很可能在过滤流量。
  6. 只有应用允许时才切换传输方式。 如果 UDP 在某个网络上失败,在那里试试 TCP,之后再切回来。
  7. 查看日志。 提到 TLS 握手失败的行,指向流量被拦截或证书有问题;提到认证失败的行,指向凭据;提到证书无效或过期的行,指向时钟或过时的配置。
  8. 更新应用。 旧客户端可能无法连接已经淘汰过时设置的服务器。
  9. 带着具体信息联系客服。 说明是哪台设备、哪个网络、日志写了什么、你已经试过什么。

帮助文章 VPN 连接不上怎么办 更详细地介绍了应用层面的修复办法。

局限与注意事项

  • OpenVPN 是建立隧道的一种方式,不是隐私保证。流量离开隧道后服务商怎么处理,是信任问题,不是协议问题。
  • 它的灵活性意味着可能出现糟糕的配置。除非你清楚每一行的作用,否则优先使用默认值合理的现成应用,而不是手改文件。
  • 端口号不是安全功能,改端口不会让加密更强。
  • TCP 模式是兼容性工具,不是升级。
  • 速度取决于服务器、距离、你的设备和网络,至少和协议同等重要。
  • 本文属于一般性科普,不构成法律建议,也不声称任何协议能在所有网络上使用。

小结

OpenVPN 用两个协作的通道构建加密隧道:控制通道用 TLS 验证身份并协商密钥,数据通道逐包加密。UDP 是更好的默认选择,TCP 是 UDP 连不上时的备用方案。安全的配置取决于现代加密算法、正确的证书校验、定期更新密钥以及及时更新的软件。连接失败时,依次检查网络、凭据、时钟、传输方式和日志。

如果你想要一张几分钟就能设置好、到期自动结束的通行证,可以看看 价格页面 和 下载页面。

常见问题

用简单的话说,OpenVPN 是什么?

OpenVPN 是一种开源的 VPN 协议和程序,在两台计算机之间建立加密隧道。它使用保护网站的同一类技术 TLS 来验证双方身份并协商密钥,然后用标准加密算法加密你的流量。

OpenVPN 该选 TCP 还是 UDP?

对多数人来说,UDP 是更好的默认选择,因为它避免了把一层可靠传输嵌套在另一层里。TCP 模式主要是 UDP 连不上时的备用方案,信号不好时往往更慢、更容易卡顿。

OpenVPN 安全吗?

OpenVPN 成熟,经过广泛审查,使用的是标准密码学。具体某次连接是否安全,取决于配置:现代加密算法、正确的证书校验和及时更新的软件,比协议名称重要得多。

TUN 和 TAP 有什么区别?

TUN 传输 IP 数据包,几乎所有面向普通用户的 VPN 都用它。TAP 传输完整的以太网帧,能让隧道像网线一样工作,但开销更大,除特殊场景外很少需要。

本文会说明 XPASS 使用哪些协议吗?

不会。本文只讲 OpenVPN 的一般原理。你的通行证可用的连接方式显示在 My Pass 页面,除非客服建议,否则使用应用的默认设置即可。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

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

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

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

查看通行证

继续阅读

VPN 基础

什么是 VPN 协议?

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

阅读约 9 分钟

VPN 安全

WireGuard 与 OpenVPN 有什么区别

WireGuard 和 OpenVPN 都能建立加密隧道,但设计、复杂度和灵活性不同。本文用通俗的方式比较,并说明该怎样选择。

阅读约 9 分钟

VPN 安全

什么是 VPN 加密?

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

阅读约 10 分钟

VPN 基础

为什么使用 VPN 后网速会变化

使用 VPN 会给网络路径增加距离、加密和另一段网络,所以速度常常会变化。本文解释原因、正确的测量方法,以及感觉变慢时可以尝试的做法。

阅读约 9 分钟

故障排除

VPN 连接不上?逐步排查方法

VPN 连接不上时的清晰排查顺序:通行证状态、登录信息、Wi-Fi 与移动数据、权限、防火墙、应用冲突和错误提示。

阅读约 8 分钟