文章出处:www.net1980.com
         Eudemon防火墙在执行NAT时,当区域间存在多个NAT OUTBOUND的情况下,该命令不是根据命令配置的先后顺序(即排列顺序)来执行的,而是以该命令引用的ACL序号的大小顺利来执行。
故障现象:
         在某ISP的防火墙中,"客户A"的私网IP地址198.1.1.40需要转换成公网地址201.109.109.70;其他私网地址客户需要转换为公网地址201.109.103.20;数据配置完成之后,我们发现"客户A"(198.1.1.40)不能实现NAT转换,业务不通,而其他网段用户则能转化公网地址201.109.103.20正常上网。
 
数据配置如下:
acl number 3300
rule 101 permit ip source 10.10.46.0 0.0.0.255
rule 102 permit ip source 10.10.47.0 0.0.0.255
rule 103 permit ip source 10.10.48.0 0.0.0.255
rule 104 permit ip source 10.10.49.0 0.0.0.255
rule 105 permit ip source 10.10.53.32 0.0.0.31
rule 106 permit ip source 10.10.53.64 0.0.0.7
rule 107 permit ip source 10.10.54.0 0.0.0.255
rule 1000 deny ip
acl number 3301
rule 0 permit ip source 198.1.1.40 0
nat address-group 0 201.109.103.20 201.109.103.20
nat address-group 1 201.109.109.70 201.109.109.70
firewall interzone trust untrust
packet-filter 3200 inbound
packet-filter 3100 outbound
nat outbound 3301 address-group 1
nat outbound 3300 address-group 0

原因分析:
         Eudemon防火墙在做NAT时,当区域间存在多个NAT OUTBOUND的情况下,该命令不是根据命令配置的先后顺序(即排列顺序)来执行的,而是以该命令引用的ACL序号的大小顺利来执行的。在前一命令 ACL中匹配不到的语句则继续按照下一命令的ACL进行匹配。在此案例中即先执行了ACL 3300中的规则,而在此ACL最后却存在一条deny ip 的语句,导致后面ACL的用户匹配此规则而被拒绝NAT。
 
处理步骤:
要解决这个问题,需要修改ACL的编号,删除ACL 3301,新建ACL 3299:
acl number 3299
rule 0 permit ip source 198.1.1.40 0
firewall interzone trust untrust
packet-filter 3200 inbound
packet-filter 3100 outbound
nat outbound 3299 address-group 1
nat outbound 3300 address-group 0
经过上述调整后,重新测试,此时198.1.1.40地址的用户已经能够转换为公网IP 地址201.109.109.70上网,业务正常。

故障总结:
1、 在进行防火墙地址转换时,需要注意NAT OUTBOUND命令的执行顺序是按照ACL的大小顺序执行的,并非按照命令配置顺序执行。
2、 这也说明了维护经验积累的重要性,这种故障技术难度不大,但假如没有处理过这类故障的话,也要花费较多的时间进行检查。