NAT回流问题分析

1,416 阅读2分钟

前言

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


配置举例

网络拓扑

image.png

问题分析

源地址映射地址
12.1.1.3192.168.0.122

image.png

图片.png

  1. 内网主机访问(出口IP)12.1.1.3:80,会把流量送到出口设备RTA的G0/1接口(出口)。

  2. 出口设备RTA的G0/1接口配置了nat server(映射到内网服务器),数据包就会修改数据包的目的地址和目的端口号,并不对源地址进行改变

  3. 数据包从出口设备发送到服务器,因为发过来数据包的源地址为10.0.0.10(内网主机)。

  4. 服务器对出口设备的数据包回复源目地址对调,导致数据包直接通过交换机发送到内网主机

  5. 内网主机解封装服务器回复的数据包,因为(源目)地址不匹配,则进行丢弃,导致访问失败。

NAT-hairpin解决

抓包分析

配置nat hairpin功能后,通过抓包可以发现出口设备发送给服务器的源地址将变为WAN口地址 image.png

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

最终效果

image.png

双向NAT解决

RTA配置

# 修改RTA下联接口

interface GigabitEthernet0/2
 nat outbound
 nat server global 12.1.1.2 inside 192.168.1.122