95、VPN基础:VPN类型、隧道协议、IPSec与OpenVPN

说实话,VPN 这个词在圈内已经被聊烂了。但真正动手搭过、踩过坑的人,其实不多。

我记得刚入行那会儿,给一家分公司搭站点到站点的 VPN,折腾了一整天连不上。后来发现是两边的 NAT 策略没对齐。嗯,从那以后我就养成了一个习惯——先画隧道拓扑,再动手配。

这一讲,咱们就把 VPN 的底裤扒干净。从类型到协议,再到 IPSec 和 OpenVPN 的实战对比,一次说透。

1. VPN 到底在解决什么问题?

说白了,VPN 就是在不安全的公共网络上,拉一条“虚拟的专用线路”。

你想想看,公司内网的服务器和数据库,总不能直接暴露在公网上吧?但员工出差、远程办公,又必须访问内网资源。怎么办?

VPN 就是干这个的——它帮你把远程的机器“拉”进内网,就像插了一根超长的网线。

核心三要素:

  • 身份认证:确认你是谁(证书、密码、令牌)
  • 数据加密:传输的内容不能被偷看
  • 完整性校验:数据在途中没有被篡改

2. VPN 的三大类型

我在项目中遇到过不少新手,一上来就问“哪种 VPN 最好”。其实没有最好,只有最合适。咱们按使用场景分三类:

类型 典型场景 我个人的看法
远程访问 VPN 员工从家里连公司内网 最常用,OpenVPN 是首选
站点到站点 VPN 分公司与总部互联 IPSec 是工业标准,稳
SSL VPN 浏览器直接访问,无需客户端 方便,但性能一般

你可能会问:那 PPTP 和 L2TP 呢?

嗯,PPTP 早就被证明不安全了,我建议直接放弃。L2TP 本身不加密,必须搭配 IPSec 使用,配置起来比较啰嗦。我个人现在基本只用 OpenVPN 和 IPSec。

3. 隧道协议:VPN 的“管道”是怎么建的?

隧道协议,说白了就是把一个数据包整个塞进另一个数据包里,然后发出去。接收方再拆开,取出原始包。

为什么会这样?因为原始包的目标地址是内网 IP,公网路由器不认识。你得给它套个“公网马甲”。

常见的隧道协议有:

  • GRE:最原始的隧道,只封装,不加密。我早期踩过坑,裸 GRE 跑业务,数据被中间人抓了个精光。
  • IPSec:既封装又加密,是目前最主流的方案。
  • OpenVPN 的 TUN/TAP:基于 SSL/TLS,灵活且安全。

小提示:如果你只需要加密,选 IPSec。如果你需要穿越复杂的 NAT 和防火墙,OpenVPN 更友好。

4. IPSec 深度解析

IPSec 其实不是一个协议,而是一套协议族。它工作在 IP 层,对上层应用完全透明。

我建议你记住两个核心协议:

  • AH(认证头):只做完整性校验,不加密。现在用得少了。
  • ESP(封装安全载荷):既加密又校验,是主力。

IPSec 有两种模式:

  • 传输模式:只加密 IP 载荷,不改动 IP 头。适合端到端通信。
  • 隧道模式:整个 IP 包都被封装,加一个新 IP 头。适合站点到站点。

我曾经帮一个客户排查 IPSec 连接问题,发现两边配置的 IKE 版本不一致——一边是 IKEv1,另一边是 IKEv2。折腾了两小时才找到原因。嗯,从那以后我配置 IPSec 时,第一件事就是确认 IKE 版本。

IPSec 工作流程(简化版)

  1. IKE 阶段 1:建立安全通道,协商加密算法和密钥。
  2. IKE 阶段 2:在安全通道内,协商具体的 IPSec SA。
  3. 数据传输:用协商好的 SA 加密传输数据。
  4. SA 删除:会话结束或超时,清理安全关联。

注意:IPSec 的 NAT 穿越是个老大难。如果两端都在 NAT 后面,记得启用 NAT-T(NAT 穿越),否则包会被丢弃。

5. OpenVPN 实战对比

OpenVPN 是我个人最喜欢的 VPN 方案。它基于 SSL/TLS,配置灵活,社区活跃。

和 IPSec 相比,OpenVPN 有几个明显的优势:

  • 穿越防火墙容易:默认用 443 端口,长得像 HTTPS,防火墙一般不会拦。
  • 配置简单:一个配置文件搞定,不像 IPSec 那样要配一堆参数。
  • 支持多种认证:证书、用户名密码、甚至双因素认证。

当然,它也有短板:

  • 性能不如 IPSec:因为 OpenVPN 在用户态运行,IPSec 在内核态。
  • 大规模部署时管理成本高:证书分发是个麻烦事。

我建议这样选:

  • 如果你要连几十个移动端,选 OpenVPN。
  • 如果你要连两个数据中心,选 IPSec。
  • 如果你两者都要,那就都上,各司其职。

6. 核心知识体系图

下面这张图,是我梳理的 VPN 核心知识脉络。你可以把它当作一张“地图”,学完这一章后对照着回顾。

VPN 核心知识 VPN 类型 远程访问 VPN 站点到站点 VPN SSL VPN 隧道协议 GRE(不加密) IPSec(加密+认证) OpenVPN TUN/TAP IPSec 详解 AH(认证头) ESP(封装安全载荷) 传输模式 / 隧道模式 IKE 阶段1 + 阶段2 OpenVPN 基于 SSL/TLS 默认 443 端口 证书 / 密码认证 选型对比 移动端多 → OpenVPN 数据中心互联 → IPSec 两者都要 → 混合部署

7. 避坑指南

最后,分享几个我亲身踩过的坑:

  • MTU 问题:VPN 隧道会增加包头,导致 MTU 超过链路限制。我曾经遇到过视频会议卡顿,查了半天发现是 MTU 没调。解决方案:在 OpenVPN 配置里加 mssfix 1400
  • 证书过期:OpenVPN 的客户端证书过期后,连接会静默失败。我建议在配置里加一个证书到期前的告警脚本。
  • DNS 泄漏:VPN 连接后,DNS 请求可能仍然走本地网络,暴露你的访问记录。记得在 OpenVPN 配置里加上 redirect-gateway def1dhcp-option DNS 10.8.0.1
  • 日志太多:IPSec 的日志默认很详细,容易撑爆磁盘。我习惯把日志级别调到 informational,并做日志轮转。

一句话总结:VPN 不难,难的是把细节想周全。多画图、多测试、多留日志,能省掉你 80% 的排障时间。


公众号:蓝海资料掘金营,微信 deep3321