记录某客户内网主机无法通过外网地址访问内网服务器问题的解决方法
一、问题起因
某天客户内网任意主机不能使用自已的公网IP访问自己,其它设备均可正常访问。是不是NAT回流问题?
二、原因分析
-
经过分析,原因就是做好端口映射以后,内部服务器通过外网IP访问内部server的时候流量没有回流到防火墙导致的。
-
NAT回流是什么?NAT回流是指服务器提供NAT映射,即满足公网用户通过公网地址访问;也满足内网用户通过公网地址访问,内网用户访问的数据能正常返回就是数据回流功能。出现Nat回流这是正常现象,任何设备只要做了端口映射,都绕不开这个问题,因为TCP/IP协议栈就是这样工作的。
三、解决办法
1、全局NAT地址转换。这一步主要是为了让内网用户可以正常访问外网用的。
nat-policy interzone trust untrust outbound #注意NAT策略方向
policy 0
action source-nat #是做源地址转换
policy source 10.11.10.0 mask 255.255.255.0 #匹配内网所有主机ip
easy-ip GigabitEthernet0/0/1 #将源地址转换为防火墙GigabitEthernet0/0/1接口的ip地址
2、端口映射:(略)
nat server 0 protocol tcp global X.X.X.X ip inside X.X.X.X ip
3、创建地址池
nat address-group 1 X.X.X.X X.X.X.X #ip地址为X.X.X.X-X.X.X.X
ps:以上三步之前都已经做过,现在主要做下一步解决nat回流的问题
4、做域内NAT,注意和上面第二步NAT的区别,策略方向不一样
nat-policy zone trust
policy 1
action source-nat
policy source 10.10.11.0 mask 24 #这里匹配需要通过公网访问的所有内网主机ip
policy destination X.X.X.X mask 32 #这里目的ip是映射的外网地址
address-group 1 #匹配以后,将源地址转换成这个地址池里的地址
按理再做完这一步以后,nat回流的问题就应该解决了,但是实际情况是并没有生效。有人说是防火墙bug,经过深入查找相关资料后,借鉴了一位网友的经验增加了以下映射,在源地址转换里面的目的区域加上了Untrust,在目的地址里把外网IP也加进去,然后就工作正常了。