一个公网地址可以同时承载分支隧道和一组漫游用户。但它无法承载一条共享的准入规则。分支对端与漫游用户的差别在于:他们各自证明身份的方式、该证明的校验方式、所获得的地址,以及哪些前缀可以回访他们。一旦把外部地址当作传输细节而不是身份,设计就会简单得多。

一个快速的自检:在动路由器之前,先把两条准入记录写出来。如果必须用一条匹配条件覆盖两者,策略已经含糊,而第一个症状看起来会像路由或防火墙故障,实际上是身份故障。

配置之前的两条记录

分支记录短而稳定。它列出对端地址或证书名称、预共享密钥或证书信任点、两侧受保护的子网、隧道接口,以及把发往分支的流量送入该隧道的静态路由。每个字段都针对一个已知对端和一固定前缀集合。

漫游记录更宽也更个人化。它列出客户端协议和端口、用户或设备如何认证、连接时下发的地址池、该地址池可访问的资源、拆分隧道前缀、推送给客户端的 DNS 服务器,以及任何第二因素。每个字段回答的是关于数量未知的用户的问题,而不是关于一个网关。

正是这种粒度差异,才是两种角色分道扬镳的全部原因。分支配置文件可以放心信任一把密钥,因为该密钥属于某一站点的一台设备。而让所有人共用一把组密钥的漫游配置文件会摧毁按用户问责,这通常要到事后复盘时才被发现,而不是在部署阶段。

对端匹配与认证在哪里分道

在 IOS XE 上,IKEv2 配置文件承载无法协商的参数,以及用于选择对端的条件。这意味着分支侧和漫游侧各自都需要自己的配置文件,即使它们终结在同一接口上,即使它们共用同一套加密 PKI。Cisco 在《IOS XE 17 IKEv2 配置指南》中说明了这些角色。

分支配置文件通常匹配较窄的身份:一个远端地址、一个 FQDN,或一个证书主题。match identity remote address 198.51.100.10 255.255.255.255这样的行固定住一个对端,而带按站点保存密钥的authentication remote pre-share就足够了。匹配要尽可能具体到对端清单允许的程度,因为选择顺序中靠上的重叠通配符会把分支流量拽进错误的配置文件。

漫游配置文件无法固定地址,因此它匹配组、key-id 或证书字段,然后把真正的用户检查交给 AAA 或挂在配置文件上的授权策略。这种分离很重要:对端认证回答的是客户端能否建立隧道,按用户授权回答的是它获得哪个地址池和哪些资源。把分支密钥当作通用登录,等于丢掉了第二个答案。

转发与地址转换也需要同样的分离

准入与可达性是两回事。IKE 和 IPsec 交换成功只能证明双方对密钥达成一致,并不会为客户端拿到的地址池创建路由。因此远程接入地址池需要回程路径:要么指向隧道接口的静态路由,要么注入地址池汇总的路由协议。分支前缀通常走的是服务站点其余部分的那套路由进程。

地址转换正是两种角色最常碰撞的地方。必须保留私有地址的站点间流量,需要一条仅限这两个前缀的 NAT 豁免,且双向生效。漫游客户端通常也需要对其隧道内流量豁免,但它们去往互联网的流量要么通过拆分隧道绕过隧道,要么经 NAT 后在中心出口。把来自隧道的一切都豁免,是经典错误,因为那也剥夺了真正需要转换的流量的转换。

豁免规则要和准入规则一样窄。如果地址池汇总与分支前缀重叠,回程路径在任何丢包之前很久就已含糊,症状表现为某个站点偶尔丢失一个子网,而不是干净的隧道故障。

能暴露交叉策略的验收用例

构建四个用例并按顺序执行。分支主机访问仅分支可用的资源。漫游客户端通过自己的地址池访问同一资源。漫游客户端尝试本不应触碰的分支前缀。分支对端尝试从远程接入地址池获取地址。后两个才是能抓住共享配置文件的用例,因为它们在常规监控中静默失败。

然后验证数据面,而不是配置。show crypto ikev2 sa和show crypto ipsec sa告诉你每个流由哪个配置文件和哪些选择器承载,而show ip nat translations和隧道计数器显示回程路径与豁免是否真的匹配。在隧道接口上做 tracer 或抓包可以闭合这个环路。

把观察到的身份、地址池地址和选中的策略写在每个结果旁边。当每个用例都精确对应一条记录,且没有任何用例需要临时例外才能通过时,这轮验证才算结束。

相关文章