华为防火墙中所有NAT技术解析

nat分类

根据源地址分类

根据目的地址

Inbound/outbound

静态动态

分类


转换内容

是否转换端口

特点

NAT

地址池方式

IP地址

可选

采用地址池中的公网地址为私网用户进行地址转换,适用于大量私网用户访问Internet的场景。


出接口地址方式(Easy IP

IP地址

内网主机直接借用公网接口的IP地址访问Internet,特别适用于公网接口IP地址是动态获取的情况。

服务器映射

静态映射(NAT Server

目的IP地址

可选

公网地址和私网地址一对一进行映射,适用于公网用户访问私网内部服务器的场景。


服务器负载均衡

目的IP地址

可选

适用于多个内网服务器提供相同的服务,对外虚拟成一个服务器,对用户的访问流量进行负载均衡的场景。

目的NAT


目的IP地址

可选

主要应用在转换手机用户WAP网关地址,使手机用户可以正常上网的场景。

NAT类型

私网IP和公网IP的数量对应

是否转换端口

是否生成server-map

是否有黑洞路由

NAT  No-PAT

一对一

NAPT

多对一

多对多

出接口地址方式(Easy-IP

多对一

Smart  NAT

(仅高端防火墙USG9000

系列支持)

一对一

(预留IP做多对一转换)

(预留IP做端口

转换)

(仅NAT NO-PAT

三元组NAT

(仅高端防火墙USG9000

系列支持)

多对一

多对多

 

 

easy-ip中配置(USG6000)时:源地址可以不写,但是目的地址必须写,因为easy-ip转换根据出接口寻找

nat-policy

rule name easy_ip

  source-zone dmz

  destination-zone untrust

  action nat easy-ip

 

 

NAPT  --- NAT  NO-PAT                                                                               技术分享

配置基于域间:(USG5500

定义地址池:

nat address-group 1 20.1.1.10 20.1.1.20

 

配置NAT策略:

nat-policy interzone huawei ahang inbound

 policy 1

  action source-nat (no-pat)

  policy source 10.1.1.0 0.0.0.255

  address-group 1

 

dis cur conf nat-policy-interzone

 

 

NAT-serverUSG5500

基于目的的IP转换

nat server 0 protocol tcp global 20.1.1.254 3333 inside 10.1.1.1 telnet

nat server 1 protocol icmp global interface GigabitEthernet0/0/2 inside 10.1.1.1

 

查看NAT表项----一对一静态绑定中会出现server-map,无需动态触发,静态生成,动态的会产生大量的map表,占用大量资源

                        ------三元组,smart-nat也存在server-map

 

Display Firewall server-map

 Current Total Server-map : 2

 Type: No-Pat Reverse, ANY -> 10.1.1.254[10.1.2.1],  Zone:---

 Protocol: ANY, TTL:---, Left-Time:---,  Pool: 0, Section: 0

 Vpn: public

 

 Type: No-Pat,  10.1.2.1[10.1.1.254] -> ANY,  Zone:---

 Protocol: ANY, TTL:360, Left-Time:357,  Pool: 0, Section: 0

 Vpn: public

 

 

questionsNAT Server 中为了让公网用户访问私网的服务器,那么配置安全策略时目的地址私网地址,还是转换的公网地址?

公网用户通过20.1.1.254:3333访问服务器时,防火墙收到报文首包后查看目的地址和端口匹配到server-map,然后转换为私网

10.1.1.1:23 ,然后根据目的私网地址查路由表,从出接口trust出去,从入接口UNtrust进入。

因此安全策略中,destination-address 私网的IP地址20.1.1.1,不是公网的

 

 

nat server C 0 zone untrust protocol tcp global 10.1.2.250 ftp inside 10.1.1.1 ftp

一条NAT server会生成两条server-map,一条用于外网访问内网时可针对特定端口,一条用于内网主动去往外网

[FW]dis firewall server-map

 Current Total Server-map : 2

 Type: Nat Server,  ANY -> 10.1.2.250:21[10.1.1.1:21],  Zone: untrust ,  protocol:tcp

 Vpn: public -> public

 

 Type: Nat Server Reverse,  10.1.1.1[10.1.2.250] -> ANY,  Zone: untrust ,  protocol:tcp

 Vpn: public -> public,  counter: 1

但是存在几点问题:

1.同一区域不同出接口不能同时配

[FW]nat server D zone  untrust  protocol  tcp  global  10.1.3.250 ftp  inside  10.1.1.1 ftp

Error: This inside address has been used

因为如果多个出口会生成多个Reverse,但是10.1.1.1映射成哪一个会出现混乱,故不能同时配

但是可以配置为

[FW]nat server D zone  untrust  protocol  tcp  global  10.1.3.250 ftp  inside  10.1.1.1 ftp  no-reverse

 

2.不同区域可以同时配

[FW]nat server D zone  untrust11  protocol  tcp  global  10.1.3.250 ftp  inside  10.1.1.1 ftp

 

3.no-reverse作用:

不会生成一条反向的NAT条目

 

4.配置源进源出,保证来回的路径一致。

多出口不同ISP时,做了地址转换后,回包时防火墙上存在多个默认路由,可能会导致回包路径不一致

接口下配置:USG9500---redirect-reverse next-hop 1.1.1.254(下一跳地址)

                          USG6000-----gateway1.1.1.254         redirect-reverse enable

            USG5500/2000---reverse-route nexthop 1.1.1.254

 

5.NAT-ALG(Application level gateway)

通过在全局,区域下开启ASPF  detect ftp)实现

Firewalls session table中存在控制连接,数据传输时生成server-map放行ftp数据

 

6.nat-servereasy-ip同时配置时,且转换同一个地址时,nat-server会生效,因为nat-server生成server-map表项

根据策略顺序先查server-map表。

 

 

双向转换

NAT-server+ NAT inbound

第一步:NAT-server转换,当外部用户访问服务器时,将服务器私网地址和公网映射,此时外部用户直接访问公网地址

20.1.1.1--->20.1.1.254    ==等价==  20.1.1.1---->10.1.1.1

此时  SIP:20.1.1.1   DIP:10.1.1.1

 

第二步:在外部访问内部域间做NAT策略,使SIP公网IP变为私网IP

nat address-group 0 10.1.1.254 10.1.1.254

nat-policy interzone trust untrust inbound

 policy 1

  action source-nat

  policy destination 10.1.1.1 0

  address-group 0

此时   SIP10.1.1.254   DIP:10.1.1.1

 

好处:服务器不用找网关了,同一网段的

            不用学到公网地址

            当网关变了,不用重新配置(当有数百台服务器时)

 

NAT-server + 域内NAT

 

 

端口复用技术

技术分享

 

Smart-NAT

只有USG9500上才有

同时配置基于接口的和基于地址池的

正常用接口的,接口的端口不够用时用地址池的

 

 

三元组NAT

只有USG9500上才有

对于P2P业务中,对外访问的地址和端口会保持一致(如100.1.1.1---3000),支持外网其他主机以目的地址和端口(100.1.1.1---3000)访问内网时,由UNtrusttrust为放行。

会存在server-map用来控制连接

 

 

服务器负载均衡SLBserver load balance

将多个提供相同服务的服务器虚拟成一个服务器,在防火墙上配置使三个私有IP共用一个公有的IP地址

然后当外部访问时,根据防火墙上的负载方式:1.hash负载 2.简单轮询 3.加权轮询 走流量到服务器

不能与NAT server共同提供服务

配置注意:

USG6000

<FW>dis cur conf slb

#

 slb

  group 1 A

   metric roundrobin

   health-check type tcp port 23

   rserver 0 rip 10.1.2.1 port 23

   rserver 1 rip 10.1.3.1

  vserver 0 A

   vip 0 10.1.1.10

   protocol any

   group A

 

<FW>dis security-policy  rule  2

 (2564 times matched)

 rule name 2

  source-zone local(当配置了health-check后,需要匹配出源zonelocal,检查local去往trust的包)

  source-zone untrust

  destination-zone trust

  action permit

 

 

NAT黑洞路由问题

场景一:A------FW----B  NAT地址转换  10.1.1.0/24----FW-----10.1.2.0/24

[FW-address-group-a]d thi

#

nat address-group a 0

 mode pat

 route enable

 section 0 10.1.4.1 10.1.4.10

 

[FW-policy-nat]d thi

#

nat-policy

 rule name A

  source-zone trust

  destination-zone untrust

  action nat address-group a

 

此时A访问B正常转换为虚地址转发,但是当B访问虚地址时,此时虚地址时不存在的,FW为出口所以存在出口网关默认路由指向B

B去往10.1.4.0/24FW,形成了环路。

解决方法:

1.写条去往虚地址的路由指向NULL0

2.在地址池中有一条命令: route enable 开启了之后效果跟1是相同的

 

场景二:A----FW---B  目的地址nat-server转换DMZ---FW---UNtrust

如果写nat-server时只是针对某些端口做了映射,当B去访问其他的端口时,也会出现环路

如果nat-server中针对一个地址的直接映射,包含了所有的端口则不会出现默认路由

解决方法:

写条去往虚地址的路由指向NULL0

 

写条虚地址指向NULL0还有个好处,当内部运行IGP时,可以将虚地址引入IGP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


本文出自 “hcietea” 博客,请务必保留此出处http://hcietea.blog.51cto.com/9642637/1975828

文章来自:http://hcietea.blog.51cto.com/9642637/1975828
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3