前言
NAT回流是指在内网里面使用公网地址去访问内网的服务器。当内网用户通过公网IP访问内部服务器时,会产生NAT回流问题。内网用户通过源NAT将内网IP替换成公网IP上网,外部用户通过目标NAT将公网IP:端口映射到内网服务器:端口,以访问暴露在公网的内部服务。NAT回流的好处是不会受制于公网带宽限制,不用记太多的访问方式。NAT回流也称为Hairpin NAT,是一种端口回流技术。
配置举例
网络拓扑

问题分析
| 源地址 | 映射地址 |
|---|---|
| 12.1.1.3 | 192.168.0.122 |

-
内网主机访问(出口IP)12.1.1.3:80,会把流量送到出口设备RTA的G0/1接口(出口)。
-
出口设备RTA的G0/1接口配置了nat server(映射到内网服务器),数据包就会修改数据包的目的地址和目的端口号,并不对源地址进行改变。
-
数据包从出口设备发送到服务器,因为发过来数据包的源地址为10.0.0.10(内网主机)。
-
服务器对出口设备的数据包回复,源目地址对调,导致数据包直接通过交换机发送到内网主机。
-
内网主机解封装服务器回复的数据包,因为(源目)地址不匹配,则进行丢弃,导致访问失败。
NAT-hairpin解决
抓包分析
配置nat hairpin功能后,通过抓包可以发现出口设备发送给服务器的源地址将变为WAN口地址
RTA配置
#
sysname RTA
#
nat address-group 1
address 12.1.1.3 12.1.1.3
#
interface GigabitEthernet0/1
port link-mode route
combo enable copper
ip address 12.1.1.2 255.255.255.0
nat outbound 2000 address-group 1
nat server protocol tcp global 12.1.1.3 80 inside 192.168.1.122 80 // 内网映射
nat server protocol tcp global 12.1.1.3 443 inside 192.168.1.122 443
#
interface GigabitEthernet0/2
port link-mode route
combo enable copper
ip address 192.168.1.254 255.255.255.0
nat hairpin enable // nat回流
#
ip route-static 0.0.0.0 0 12.1.1.1
#
acl basic 2000
rule 0 permit
#
return
FWA配置
#
sysname FWA
#
interface GigabitEthernet1/0/3
port link-mode route
combo enable copper
ip address 192.168.1.122 255.255.255.0
#
security-zone name Management
import interface GigabitEthernet1/0/3
#
zone-pair security source Local destination Management
packet-filter 2000
#
zone-pair security source Management destination Local
packet-filter 2000
#
ip route-static 0.0.0.0 0 192.168.1.254
#
acl basic 2000
rule 0 permit
#
local-user admin class manage
password hash Admin@1234
service-type telnet terminal http https
authorization-attribute user-role network-admin
#
ip http enable
ip https enable
#
return
最终效果

双向NAT解决
RTA配置
# 修改RTA下联接口
interface GigabitEthernet0/2
nat outbound
nat server global 12.1.1.2 inside 192.168.1.122
