家庭实验室的拆分隧道:只路由你需要的,而不是全部
全隧道是一种教程习惯,而不是实验室的硬性要求。列出你真正需要的子网、名称和管理路径,然后只路由这些。
家庭实验室需要全隧道的说法,通常来自一篇本身就这么做的教程,而不是来自某项要求。拆分隧道并不是正规 VPN 的妥协版本;它是你能讲清楚路由表的那一版。一个有五个服务和一个管理界面的实验室,不需要让离家的每个数据包都穿过隧道。它需要的是一份清单,以及为清单上每一项准备的路由。
误区:拆分隧道是一种妥协
这个误区之所以流行,是因为全隧道配置一次更容易,之后排查却更难。这笔交易对公共 Wi-Fi 上的笔记本很合理,对地下室里的机柜就是错的。
它还藏着一个假设:实验室的地址规划,与你接入的网络毫无交集。
先清点资源,再规划路由
写下每个实验室子网、其中运行的服务、你用来解析它的名称,以及谁被允许访问它;转发说明会说明你打算依赖的返回路径。把容器网段和远程客户端可能已经在用的局域网网段也加进去,因为地址重叠正是这份清单要防的故障。覆盖所有私有地址的路由,迟早会和家庭网络撞上。清单同时也是测试计划,所以值得在配置之前做完,而不是之后。
给每个资源指定一条路径:走隧道、直连,或者拒绝。没有指定路径的资源,就是日后产生混乱工单的那一个。
五行加一列决策,胜过一张谁都读不懂的路由表。
网关需要一条返回路径
网关上的转发只是一半。实验室还需要一条回到客户端地址池的路由,或者一套受支持的地址转换方案,让回程成为可能。如果回包找不到客户端,隧道看起来是连上的,每个请求却都超时;这是路由问题,不是 VPN 故障。把返回路径当作设计的一部分来检查,而不是排障步骤。
客户端地址池与实验室自身地址重叠,是这个问题另一半,而且失败方式一模一样。
两段地址冲突时,要改计划,而不是改症状。
管理角色和上网角色是分开的
要决定只有实验室流量走隧道,还是隧道同时成为上网出口。不要仅仅因为某篇教程用了默认路由就跟着加,因为那个决定会改变每次 DNS 查询和每次更新检查的去向。为 VPN 端点本身保留一条外部路径,否则隧道会试图承载自己的外层连接。管理入口要保持收窄,并且能通过经过批准的恢复方式进入。
可以为实验室名称选择私有 DNS,而不必假设每个公共查询都需要同一个解析器。这是解析器的决定,不是路由的决定。
把两者分开,才能让日后出现的故障模式可以被区分。
要从外部测试,而不是从局域网测试
使用外部的授权连接,而不是在同一个局域网里测试,因为同网测试可能完全掩盖缺失的返回路由。要验证一个实验室地址、它的私有主机名、一个有意直连的目的地,以及所需的失败行为。失败情形和成功情形同样重要:本应无法访问的资源必须真的无法访问。在宣布设计完成之前,把这四项结果都记录下来。
然后把路由和 DNS 配置保存到清单旁边,并写明负责人。实验室新增一个子网时,两处都要更新,并重新测试。
一条与现有家庭网络重叠、又没人解释得清的路由,就是跳过这一步的默认结果。
完成后的设计很小、有文档、很无聊,而这正是一个实验室希望自己的网络具备的样子。有意思的那一版,是你不在家时坏掉的那一版。