VPN=借公网挖加密隧道:把"只能走公网"这个缺点,用加密封装包装成"像有根私有专线"——Private 是"用起来像私有",不是线真的私有。
第七章前八节解决的是"网购这一条链路"的安全(7.8 收口)。本节把镜头拉远:公司有总部和分部、还有满世界出差的员工,他们要的不是一条安全链路,而是两个内网之间整体打通。隧道是封装思想(6.5 拆旧封新)和对称加密(7.3)+ 密钥交换与证书(7.4/7.7)的组合应用;两端路由器还要替整个内网做转发(6.7 路由表)。
一、先看需求:两个内网要"直通"
设想一个场景:
- 公司总部在内网
192.168.1.0/24,在宜昌; - 分部在内网
192.168.2.0/24,在上海; - 员工出差到北京,笔记本挂在酒店 Wi-Fi 上,需要访问总部的文件服务器。
总部和分部的机器用的都是私有 IP(3.11 讲过:私有地址不出公网,公网路由器直接丢弃)。想两边互访,怎么办?
二、老办法:专线
运营商可以给你拉一根物理专线(专用线):一头接总部、一头接分部,这根线不经过互联网,物理上只有你两家在用。
- 优点:真·私有(物理隔离),稳定,时延可控;
- 缺点:贵。按距离按月计费,跨省专线一年几十万起步,小公司直接劝退。
专线安全是安全,但大多数公司付不起这个钱。于是问题变成:能不能用便宜的公网,达到"像专线一样"的效果?
三、VPN 的答案:隧道
VPN(Virtual Private Network,虚拟专用网络)的思路不是换一根线,而是在公网上"挖"一条隧道:
- 总部要发给分部的数据包,整个包(含内层 IP 头
192.168.x.x)被当作"货物"; - 外面再套一层新的 IP 头——外层的源/目的地址是两端的公网 IP;
- 货物部分用对称密钥加密(7.3 的 AES 一类);
- 包在公网上正常路由(走的就是第六章那一套逐跳转发),窃听者只能看到"某公网 IP 发给另一公网 IP 的密文包裹";
- 分部的 VPN 网关收到后拆掉外层、解密,还原出内层包,再交给分部内网。
这个过程叫封装(隧道):把一个完整的 IP 包塞进另一个 IP 包的载荷里。是不是很眼熟?6.5"拆旧帧、封新帧"的封装思想再加一层——只不过这次加的是加密。
关键技术上,主流是 IPsec 协议族(在网络层给 IP 包做加密+认证),一套完整流程里:
- 两端先用 DH 之类的方法协商出会话密钥(对称密钥,7.3/7.4 那套);
- 互相验证身份时用数字证书或预共享密钥(7.7 的证书在这里上岗);
- 之后的数据全程 AES 加密 + 完整性校验(7.2/7.6)。
第七章前八节的零件,在这里又组装了一次——这次装的对象不是 HTTPS,而是路由器到路由器。
四、"低成本"从哪来
对比账本:
| 专线 | 互联网 VPN | |
|---|---|---|
| 线路 | 运营商专用线,独占 | 已有的普通宽带,零新增 |
| 费用 | 按月高额租费 | 几乎为零(只花带宽和设备钱) |
| 安全 | 物理隔离 | 密码学保障(密钥足够长即足够安全) |
| 稳定性 | 高 | 受公网质量影响 |
VPN 的成本优势来自"借用"——公网是现成的,你只是往上加了一层加密封装。代价也很清楚:
- 多一层封装就多一点开销(MTU 被占掉一块、加解密耗 CPU);
- 稳定性看公网脸色,断网即断隧道;
- 排障时多一层"隧道通不通"要查。
五、两种用法
站点到站点(Site-to-Site):
- 隧道架在总部路由器 ↔ 分部路由器之间;
- 两个内网整片打通,内网里的普通电脑完全无感——它们只管把包发给默认网关(6.18),加解密是网关的事;
- 适合总部↔分部这种长期固定的连接。
远程接入(Remote Access):
- 隧道架在单台电脑 ↔ 公司网关之间;
- 出差员工装个 VPN 客户端拨入,电脑就"像搬进了公司内网",能访问内网资源;
- 验证用户身份时常用 7.1 讲的那一套(账号密码、证书,企业里配合 RADIUS —— 802.1X 那位老熟人);
- 适合人动地方的场景。另一种轻量形态是 SSL VPN:浏览器里登录即用,走的是 7.8 的 TLS 那套。
六、30 秒实验:看看你机器上的 VPN 痕迹
Windows 自带一个 VPN 客户端。按 Win+R 输入 ncpa.cpl 回车,打开网络连接窗口——这里能看到"新建传入连接 / VPN"的入口;再在"设置 → 网络和 Internet → VPN"里能看到系统级 VPN 配置界面。虽然你现在没配,但 Windows 原生就支持 IKEv2/L2TP/IPsec 这些 VPN 协议——IPsec 就是本节的主角。
(动手 Demo 见文末 Demo97。)
七、常见误区
- 误区一:"VPN 线是私有的"。V 是 Virtual——线就是公网,私有的是"加密后的内容"。隧道断了,包就裸奔在公网上了吗?不会:隧道断,包根本发不出去(或走普通路由被丢),不会自动变明文。
- 误区二:"VPN 能让人匿名上网"。公司 VPN 的目的是接入内网,你的流量对 VPN 网关完全可见。所谓"隐藏 IP"只是把出口换成了 VPN 服务器,服务商照样看得一清二楚。
- 误区三:"VPN 防病毒防钓鱼"。VPN 只保证传输途中的保密与完整,落到你电脑上的文件该有毒还是有毒——那是终端安全的事。
- 误区四:隧道和 6 章的"路由"没关系。恰恰相反:两端 VPN 网关要把对面整个内网网段写进自己的路由表(指到隧道口),本质上就是 6.9 的静态路由——目的网段=对面内网,下一跳=隧道。
八、Demo97:亲手翻一遍 Windows 的 VPN 支持与路由痕迹
用 PowerShell(管理员不需要,普通即可):
# 1. 看 Windows 原生支持的 VPN 协议(IPsec 就在列)
Get-VpnConnection -AllUserConnection
# 没有配置会返回空——重点看下面这条
# 2. 看系统 VPN 能用的协议类型(内置枚举)
[Enum]::GetNames([Microsoft.Management.Infrastructure.CimInstance]) | Select-String -Pattern "vpn" -SimpleMatch
# 3. 最直观的:看你当前路由表里有没有 VPN 接口类型的路由
route print | Select-String "0.0.0.0"
观察点:
- 第 3 步你会看到默认路由的接口列表——若你此刻连着公司 VPN,这里会多一个虚拟接口;没连 VPN 也能看到,VPN 一旦接通就会往路由表里插一条指向新接口的路由(6.7 学的知识当场兑现:VPN 接通 = 路由表多几行)。
九、自测
点开自测(5 题)
1. VPN 的 Private 指什么?线是私有的吗? 2. 隧道封装时,内层和外层 IP 头分别是什么地址? 3. 窃听者在公网上截到一个 VPN 包,能看到哪些信息、看不到哪些信息? 4. 站点到站点 VPN 和远程接入 VPN 的区别?各适合什么场景? 5. VPN 接通后,本机路由表会发生什么变化?为什么? **参考答案**: 1. 指"用起来像私有网络"——线是公网,私有的是加密后的内容。 2. 外层是两端 VPN 网关的**公网 IP**(负责在互联网上路由),内层是源主机和目的主机的**私有 IP**(被当货物封装)。 3. 能看到:外层公网源/目的地址、包的大小时间等元数据;看不到:内层 IP 头(内网拓扑)和数据内容(已加密)。 4. 站点到站点:网关对网关,整片内网打通,用户无感,适合固定分部;远程接入:单机对网关,验证用户身份,适合出差员工,另有轻量的 SSL VPN 走浏览器。 5. 多出指向 VPN 虚拟接口的路由(通常是通往公司内网网段的条目)——因为本机要决定"哪些包该进隧道",这个决定就是查路由表(6.3 最长前缀匹配),VPN 客户端替你静态写好了(6.9)。十、下一步
- ☐ 7.10(按教材顺序,等波仔报标题)
相关笔记
- 使用一个密钥管理数据(共享密钥加密方式) —— 隧道里全程跑的对称加密,源头在这里
- 使用两个密钥管理数据(公开密钥加密方式) —— 两端协商会话密钥、验证身份的底座
- 加密使用的公开密钥是真的吗(数字证书) —— IPsec 验证对端身份时证书上岗
- 确保网络购物的安全性(SSL、混合加密) —— 同样的零件装出的另一种形态(SSL VPN 走 TLS)
- 路由器所掌握的网络信息(路由表) —— VPN 网关凭什么知道"对面的网段走隧道":查路由表
- 登记非直接连接路由信息的方法(静态路由、路由协议) —— 隧道路由本质上就是一条指到隧道口的静态路由
- IP地址范围的分隔符(子网掩码) —— 私有地址不出公网,正是 VPN 要解决的问题