网桥模式不是 VPN 穿透:两者各自改变了什么
网桥模式改变路由器的转发角色;穿透只允许客户端 VPN 穿过它。两者都不建立隧道,因此不能互相替代。
网桥模式和 VPN 穿透常出现在同一个排障帖里,因为两者都被当作 VPN 连不上的解决办法。它们描述的是路由器不同的功能,而且任何一方本身都不会建立 VPN 隧道。桥接改变的是设备如何接入网段,或者由谁来做路由;穿透决定的是客户端的 VPN 流量能否穿过网关。选错一个,小问题就会变成花一下午重新分配地址。
两个名称,两种不同的功能
判断方法很简单:你是想改变网络的形状,还是想让已经存在的流量穿过去?这是两类不同的需求,后果也不同。
一张表就能看清对比:
| Setting | What it actually does |
|---|---|
| Bridge mode | Changes the device's forwarding role: a modem bridge hands routing and NAT downstream, a software bridge joins selected interfaces |
| VPN pass-through | Lets a client's VPN traffic cross the router; the credentials and encryption stay with the client |
| Router VPN client | Terminates the tunnel on the router, so the router becomes the endpoint |
| Router VPN server | Accepts inbound tunnels, which needs an upstream path that can reach it |
只有后两种会在路由器上建立隧道。桥接和穿透都把端点留在别处,所以两者都无法解决由客户端缺失或服务器不可达引起的问题。这个区别很容易丢失,因为这些设置在同一界面里挨得很近。打开那个页面之前,先写下隧道归哪个端点所有。
穿透勾选框也不是协议支持的完整说明。现代 IPsec 的 NAT 穿越使用标准化的 UDP 封装,而较旧的辅助功能则因实现而异。
标着支持 VPN 的营销标签,并不会告诉你它指的是这四种角色中的哪一种。
网桥模式在你的设备上改变了什么
在调制解调器或路由器上,网桥选项通常把路由和 NAT 的职责移交给下游的另一台网关。在软件设备上,它可能意味着把选定的本地接口并入同一个广播域。具体范围取决于产品,所以要读该型号的文档,而不是只读这个词。两种解释都会改变地址分配、防火墙边界以及你访问管理界面的方式。
最后这一点正是桥接不适合作为 VPN 故障第一反应的原因。原始问题还没解决,你就可能先丢掉管理通道。
在改变网络角色之前先备份配置,因为地址分配可能随之一并改变。
先选角色,再动设置
要让家庭流量从外部出口出去,你需要兼容的路由器 VPN 客户端,而不是网桥。要从别处连回家里,你需要服务器角色,以及一条能到达它的上行路径。除了 VPN 这个词,这两个需求几乎没有共同点。在看菜单之前,先确定你在搭建哪一个。
一台设备可以同时支持两种角色,却仍可能达不到你期望的速度。
角色是设计决定;设置只是它的结果。
如果只有一种协议失败
当某一种协议在其余正常的路由器后面失败时,先查这种协议的传输方式和 NAT 路径。为了修好一个客户端而改动整个网关模式,相当于因为一盏灯坏了就重铺整栋房子的线路。检查流量是否采用 UDP 封装、路由器的辅助功能是否适用于该协议,以及故障是否对称。然后再判断是否真的需要改变角色。
RFC 3948 描述了让 IPsec 得以穿过 NAT 的 UDP 封装,在相信穿透勾选框之前,这才是应当核对的标准。
记录你改了什么以及为什么,因为下一个人会发现设备处于网桥模式,并以为那是有意为之。正确的结果是你自己选择形状的网络,而不是从一次排障会话里继承下来的网络。