路由器在转发包的时候优先顺序依次是NAT,路由表,IPSec策略。
IPSec报文的处理流程如下(参考:https://forum.huawei.com/enterprise/zh/thread/580935480827068416):
FW处理流程中,IPSec的处理位于NAT、路由、安全策略之后,故应保证NAT策略对IPSec保护的报文不进行处理,IPSec保护的报文能够通过匹配路由和安全策略被送达应用了IPSec安全策略的接口。具体要求如下:
1. 到达FW的报文不能匹配NAT Server建立的Server MAP表和反向Server MAP表,否则报文目的地址将被转换。
2. 到达FW的报文不能匹配目的NAT的策略,否则报文目的地址将被转换。
3. 路由表中必须有到达IKE对等体私网的路由(一般为缺省路由),路由的出接口为应用了IPSec策略的接口。若没有匹配的路由,报文将被丢弃;若匹配路由的出接口为其它接口,报文也将无法进入IPSec处理模块,以明文形式发送。
4. IPSec VPN数据流一般在域间流动,故要求开放源域(内网接口所在域)和目的域(应用了IPSec策略的外网接口所在域)之间的域间包过滤,否则报文将被丢弃。
5. 通过域间包过滤策略检查的报文可以做源NAT,也可以不做。当匹配源NAT的域间NAT策略时,报文源地址被转换,此时匹配security acl的是转换后的源IP地址。当不匹配域间NAT策略时,报文被直接送入IPSec模块。
6. 进入IPSec模块的报文只有在匹配了security acl的情况下才能被保护,否则被丢弃。
所以理论上来说只要被路由器接收到并且匹配security acl的报文都会被IPSec转发,接收到的报文可以来自物理接口,也可以是隧道接口或者其它VPN策略接收到的报文。
因为ipsec使用ACL来匹配要处理的报文,而ACL规则又比较灵活。在ACL中可以同时指定源地址和目的地址,也可以只指定目的地址或源地址,当只指定目的地址时则起到与路由表类似的效果。
关于security acl有如下描述:
该命令用于通过ACL方式指定需要IPSec保护的数据流。实际应用中,首先需要通过配置ACL的规则定义数据流范围,再在IPSec安全策略中引用该ACL,才能起到保护该数据流的作用。
当以IPSec安全策略模板方式创建IPSec安全策略时,定义需要IPSec保护的数据流在协商的响应方为可选:
•如果协商的响应方不指定需要IPSec保护的数据流,则表示接受发起方定义的需要IPSec保护的数据流的范围。
•如果协商的响应方指定需要IPSec保护的数据流,则需要与发起方镜像配置或者包含发起方指定的保护的数据流范围。
也就是说IPSec会结合连接双方的acl配置选取其子集作为生效的报文匹配策略,并不要求双方一致。IPSec连接本身是点对点的。
基于以上可做如下配置:
– 在响应方(中心IPSec)配置ACL的目的网段匹配所有分支机构的网段
– 在请求方(分支机构)配置ACL的目的网段匹配其它分支机构和中心IPSec的网段
在ACL中仅指定目的网段即可,这样配置等于把对应的目的网段路由到IPSec通道。也可以同时指源网段,但是分支机构多时中心IPSec上的ACL会非常复杂,每个组合都要写才行,所以不建议,也没必要。