两个办公室都在用 192.168.1.0/24,因为没人做过别的规划,而大家指望隧道来解决。隧道做不到:路由器无法让同一个私有地址代表两个不同的地点。防止这件事的工作,必须在输入第一个隧道参数之前完成。

清点每一个网段,包括被遗忘的那些

收集局域网、服务器网段、远程访问客户端池、云上 VPC 网段,以及主机必须访问的任何容器或覆盖网络。客户端池最容易被遗忘,而且它们与办公网段重叠的频率高得惊人,因为两者都取自同一个默认值。还要把管理网络和任何带外网段算进去。

记录归属、网关、用途,以及该前缀是否需要从另一端访问。永远不需要跨越隧道的前缀不必唯一,知道这一点能减少重新编号的工作量。

IPv6 要单独处理,因为它的规划和重叠是独立的。

比较前缀,而不是熟悉的地址

两个主机地址不同的网络仍可能重叠,因为重叠是掩码的属性,而不是人们记住的数字的属性。10.20.0.0/16 包含 10.20.30.0/24,无论有没有人说出口。要比较完整的前缀对,并检查聚合网段内部是否有更小的网络。所以这项检查属于表格,而不属于某个人的脑子。

同样的检查适用于 VPN 自己的客户端池,也适用于你计划引入的任何转换后网段,因为发生冲突的转换网段比原来的重叠更糟。

有带掩码的前缀表就够了;没有掩码的拓扑图不够。

决定真正需要跨越的是什么

一个站点可能有三十个子网,而只有一个服务网络需要远程访问。从这个需求出发,只通告它需要的内容,因为更小的通告和匹配的访问规则更容易审查,也更难被意外放宽。把在用的每个私有网段都通告出去,是一种把隧道变成网桥的习惯。通告越窄,将来出错的波及范围就越小。

私有 DNS 必须返回目标客户端能够到达的地址,所以指向未通告或重叠网段的名称,即使查询成功也依然是坏的。

在写隧道配置之前写访问列表,而不是等它失败之后再写。

重新编号还是地址转换,并了解代价

重新编号一个网络通常是长期来看最清晰的解法,它会触及地址预留、设备、DNS、防火墙规则,以及任何把地址写死在配置里的东西。当地址重新编号不现实时,访问网段的转换就是替代方案,代价是源地址身份,外加一类会把地址嵌进载荷的协议。选一种并做完,因为半途而废的网络比两种选择都糟。

无论选哪种,都要同时记录原始地址和呈现地址,因为之后每一次排障对话都需要它们。

没有回程路径的变通方案不算变通方案。

用路由矩阵作为验收测试

最后用一张矩阵收尾:本地前缀、对端前缀、允许的服务和回程网关。这张表就是隧道建立时的验收测试,也是下一位工程师会读的文档。测试要从所选子网上的真实主机发起,而不是从网关。

隧道地址之间能 ping 通,只证明隧道存在,说明不了它背后的地址规划。

把矩阵和隧道配置放在一起,下一次增加站点就会从数据出发,而不是凭记忆。strongSwan 的转发指南讲了规划确定之后网关一侧怎么做。

相关文章