组网如下:
服务器对外提供8089和1188端口的服务,本案例以8089实现为准,1188端口完全一样。
现在要实现内网PC 192.168.10.64 访问电信口公网地址1.1.1.1 ,在防火墙上做源目地址转换,访问内网服务器 172.16.0.2。
这个流量来回都走G1/0/2内网口。
不涉及
现网配置如下,发现配置完毕后报文被服务器RST了,三次握手建立失败。
# nat global-policy rule name test description NAT service 8089 source-zone trust destination-ip 1.1.1.1 action snat easy-ip action dnat ip-address 172.16.0.2 local-port 8089 # # policy-based-route PBR permit node 5 if-match acl 3007 apply next-hop 192.168.250.1 # policy-based-route PBR permit node 20 if-match acl 3001 apply output-interface GigabitEthernet1/0/1 # acl advanced 3007 rule 0 permit tcp destination 172.16.0.2 0 destination-port eq 8089 # acl advanced 3001 rule 5 permit ip source 192.168.3.0 0.0.0.255 rule 10 permit ip source 192.168.4.0 0.0.0.255 rule 15 permit ip source 172.16.0.0 0.0.255.255 rule 20 permit ip source 192.168.100.0 0.0.0.255 rule 25 permit ip source 192.168.5.0 0.0.0.255 rule 30 permit ip source 192.168.12.0 0.0.0.255 rule 35 permit ip source 192.168.6.0 0.0.0.255 rule 40 permit ip source 192.168.7.0 0.0.0.255 rule 50 permit ip source 192.168.15.0 0.0.0.255 rule 55 permit ip source 172.18.0.0 0.0.255.255 |
---|
抓包如下(ACL写nat转换前后的,然后web界面全局抓包):
分析抓包,发现我们防火墙转发了syn_ack,但是PC没有收到,所以又重传了两次,最终被服务器RST了。
查看syn_ack报文的目的MAC不是G1/0/2对端直连交换机接口的MAC,说明墙转发的时候没有按照我们设想的转发到1/0/2口发出。
debug看确实如此:
如上可以看到,NAT转换都是正常的,没有问题,说明我们配置的全局NAT是正确的。
但是如上红框,发现回包源目都转换完毕后的流量走了错误的接口出去了。
上述debug可以看到,设备处理回程syn_ack报文的时候,先根据会话,将流量的目的地址转换了,随后立即查设备的路由表,然后再根据会话转源地址。
所以,上述syn_ack报文 s= 172.16.0.2, d= 192.168.10.64,会匹配上我们配置的policy-based-route PBR permit node 20,走G1/0/1出去。
在ACL 3007中添加回程的 s= 172.16.0.2, d= 192.168.10.64 :
#
nat global-policy
rule name test
description NAT
service 8089
source-zone trust
destination-ip 1.1.1.1
action snat easy-ip
action dnat ip-address 172.16.0.2 local-port 8089
#
# policy-based-route PBR permit node 5
if-match acl 3007
apply next-hop 192.168.250.1
#
policy-based-route PBR permit node 20
if-match acl 3001
apply output-interface GigabitEthernet1/0/1
#
acl advanced 3007
rule 0 permit tcp destination 172.16.0.2 0 destination-port eq 8089
rule 5 permit tcp destination 172.16.0.2 0 destination-port eq 1188 //添加这个配置
#
acl advanced 3001
rule 5 permit ip source 192.168.3.0 0.0.0.255
rule 10 permit ip source 192.168.4.0 0.0.0.255
rule 15 permit ip source 172.16.0.0 0.0.255.255
rule 20 permit ip source 192.168.100.0 0.0.0.255
rule 25 permit ip source 192.168.5.0 0.0.0.255
rule 30 permit ip source 192.168.12.0 0.0.0.255
rule 35 permit ip source 192.168.6.0 0.0.0.255
rule 40 permit ip source 192.168.7.0 0.0.0.255
rule 50 permit ip source 192.168.15.0 0.0.0.255
rule 55 permit ip source 172.18.0.0 0.0.255.255
总结,转源转目的的全局NAT的处理流程如下:
1. 正向: 转目的-->查路由-->找到出接口后转源
2. 反向:匹配会话转目的-->查路由-->匹配会话转源
尤其要注意,反向查路由在转目的之后,转源之前。