问题现象:出公网,nat Ip与出接口不一致
接口1.211 电信 nat outbound 3500 address-group name CT
接口1.212 移动 nat outbound 3500 address-group name CM
操作
1、默认路由从主走电信改为 移动和电信双链路负载
2、添加明细路由指向移动
3、路由追踪发现nat会话是电信Ip而非移动IP,防火墙上显示出接口为移动,路由也是生效;
修改:添加新的acl,rule不变
接口1.212 移动
undo nat outbound 3500 address-group name CM
nat outbound 3501 address-group name CM
nat会话与路由选路一致;
疑问:接口匹配同一个acl这种不被允许还是bug?
这不是Bug,而是由H3C防火墙的NAT会话匹配机制导致的预期行为。
简单来说,设备在创建NAT会话时,会按照特定顺序在所有接口上遍历NAT规则。即使数据包的实际出接口是G1/0/2(移动),只要nat outbound 3500匹配成功且顺序更靠前,防火墙就会“抢先用”这个规则,转换出的源IP自然就是电信的地址池。
这个现象的根本原因在于H3C防火墙在创建NAT会话时的默认匹配机制:
匹配阶段与转发分离:数据包在进行NAT转换时,防火墙会先全局地确定NAT规则,然后再判断从哪个接口转发出去。
NAT规则匹配顺序:当数据包匹配了您定义的ACL(比如3500)时,防火墙会按照规则添加顺序或编号大小-19,在所有配置了该ACL的出接口上查找NAT规则。您的nat outbound 3500先在电信口(G1/0/1)生效,因此被优先匹配。
独立的路由选路:策略路由(PBR)或明细路由的判断顺序可能将数据包的实际出接口指向了移动口(G1/0/2)。这就造成了“NAT转换用的是电信池,实际走的是移动链路”的矛盾现象。
您在移动接口上重新配置nat outbound 3501(换了一个新的ACL编号)直接解决了问题。这是正确的做法,也是推荐的标准配置方法。
为了避免类似问题,在H3C防火墙多出口场景下,建议遵循以下最佳实践:
为每个出口链路创建独立ACL
添加ACL描述信息:为每个ACL添加清晰的description,便于后期维护和排障。
核对回包路由:确保电信、移动两条链路的外部回程路由都正确指向防火墙,否则可能影响通信。
简单来说,就是让防火墙精确区分从哪些内部IP发起的流量,各自匹配到专属的NAT规则上。具体实现可以总结为下表:
| 出口链路 | 关联的内网业务网段 | ACL编号 (示例) | NAT地址池 (示例) | 配置命令 |
|---|---|---|---|---|
| 电信接口 (G1/0/1) | 192.168.10.0/24 | 3500 | CT | nat outbound 3500 address-group CT |
| 移动接口 (G1/0/2) | 192.168.20.0/24 | 3501 | CM | nat outbound 3501 address-group CM |
这样就可以确保手机流量使用电信NAT池,监控流量使用移动NAT池,两者互不干扰。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论