1,问题1,联系了PA防火墙专家,确认PA防火墙逻辑没有问题,因为PA防火墙是先进行ACL匹配,再在出接口转发的时候进行地址转换,且双向地址转换和ACL为同一台设备,导致ACL需要写目的区域为trust,目的IP为公网IP;
2,问题2,目前怀疑和双向地址转换有关,但是没有找到具体原因;
四、结论
1,深信服双向地址原理如下,
1>源IP为PC(172.16.1.1),目的IP为WAN口IP(61.152.10.1);
2>数据包到了AD,先匹配DNAT,源IP为PC(172.16.1.1),目的IP为内网服务器IP(172.16.2.1);
3>再匹配AD源地址转换,源IP为AD LAN口IP(10.10.10.1),目的IP为内网服务器IP(172.16.2.1);
4>数据包到防火墙,防火墙正常配置ACL,WAN-->LAN允许通过;
5>服务器收到包,源IP为AD LAN口IP(10.10.10.1),目的IP为内网服务器IP(172.16.2.1);
6>服务器回包,源IP为内网服务器IP(172.16.2.1),目的IP为AD LAN口IP(10.10.10.1);
7>AF正常转发数据;
8>AD收到包,查询DNAT记录,数据包源IP为内网服务器IP(61.152.10.1),目的IP为AD WAN口IP(10.10.10.1);
#这里比较绕,因为DNAT是将61.152.10.1转换为172.16.2.1,所以需要将172.16.2.1转换为61.152.10.1
9>AD匹配SNAT记录,源IP为AD LAN口IP(61.152.10.1),目的IP为PC IP(172.16.1.1);
#SNAT是将10.10.10.1转换为172.16.1.1
10>
![](static/image/smiley/default/titter.gif)
C收到回包,源IP为AD LAN口IP(61.152.10.1),目的IP为PC IP(172.16.1.1),完成数据交互;
下图为大佬绘制的AD数据走向图:
2,AC问题还在排查,目前无思路
五、思考
1,AD双向地址,SNAT只能转换为AD LAN口IP么?能否转换为AD WAN口IP?
答:不能,因为在服务器回包查询DNAT记录后,数据包会变为源IP为AD WAN口IP(61.152.10.1),目的IP为AD WAN口IP(61.152.10.1)
2,如果本次变更是AF做出口,也同时配置双向地址转换和ACL,目的区域和目的IP是否也应该修改为trust、公网IP?
答:目的区域是trust是毋庸置疑,目的IP需要写为内网服务器IP,考虑从外网访问和从内网访问;
从外网访问,先匹配DNAT再匹配ACL,即目的IP写内网服务器IP即可;
从内网访问,先匹配DNAT再匹配ACL再匹配SNAT,即目的IP写内网服务器IP即可,源IP不需要额外添加AD LAN口IP,因为ACL优先级大于SNAT;
核心逻辑是接口在收到数据包和发出数据包时进行NAT处理(DNAT收到数据包先处理再扔给ACL,SNAT发送数据包的时候进行处理,所以DNAT优先级最高,SNAT优先级最低)
3,PA防火墙为什么目的地址配置为公网IP?
答:PA防火墙的逻辑是先进行ACL匹配,最后再接口发送数据包时进行NAT转换,即数据包在ACL匹配过程中,数据包目的IP依旧为公网IP(不论内网or外网访问内网服务器都是),所以需要将目的IP配置为公网IP;
4,AC问题什么时候确认?
答:不知道