华为防火墙NAT技术
阅读原文时间:2023年07月30日阅读:4

———我是陈小瓜,一个普通的路人,和大家一起交流学习,完善自己。

NAT-no-pat

安全策略写法: 源NAT,写安全策略,写转换前的私网IP,因为先匹配安全策略。再匹配NAT策略

NAT No-PAT是一种NAT转换时只转换地址,不转换端口,实现私网地址到公网地址一对一的地址转换方式。适用于上网用户较少且公网地址数与同时上网的用户数量相同的场景。

此方式下,公网地址和私网地址属于一对一转换。如果地址池中的地址已经全部分配出去,则剩余内网主机访问外网时不会进行NAT转换,直到地址池中有空闲地址时才会进行NAT转换。

配置命令:

第一步: 配置地址池
nat address-group chen 0
 nat-mode no-pat     默认是PAT
 mode no-pat global
 section 0 223.3.3.3 223.3.3.3
#
第二步:配置NAT策略
#
nat-policy
 rule name nat
  source-zone trust
  destination-zone untrust
  source-address 192.168.1.1 mask 255.255.255.255
  destination-address 222.2.2.2 mask 255.255.255.255
  action source-nat address-group chen
#
第三步:配置黑洞路由(静态路由)
第四步:放行安全策略
#
 security-policy
    rule name chen   //创建安全策略规则,并进入安全策略规则视图
       source-zone trust
       destination-zone untrust
       source-address 192.168.1.1 mask 32    //地址为转换前的地址
       destination-address 222.2.2.2 mask 32
       action permit   //动作为允许

第五步:测试检查

NAT-no pat,可以生成server-map表项,但需要流量的触发,记录了正反条目,Host的私网IP地址与公网IP地址的映射关系,老化时间6分钟,表项需要流量触发刷新来更新老化时间

server-map表是记录临时协商的数据连接的表项

功能:如果命中了该Server-Map条目执行安全策略检查

server-map表项不老化的情况下,外网是可以主动访问内网的

做NAT-no pat,虽然会生成server-map表项,但安全策略还是需要写,不会绕过安全策略的

server-map验证步骤:

<USG6000V1>display firewall server-map
反向条目:
 Type: No-Pat Reverse, ANY -> 223.3.3.3[192.168.1.1],  Zone:---
 Protocol: ANY, TTL:---, Left-Time:---,  Pool: 0, Section: 0
 Vpn: public

正向条目:
 Type: No-Pat,  192.168.1.1[223.3.3.3] -> ANY,  Zone:---
 Protocol: ANY, TTL:360, Left-Time:359,  Pool: 0, Section: 0
 Vpn: public

mode no-pat 后面可选参数:

global:表示全局的三元组模式或No-PAT模式,生成的Server-Map表中不包含安全区域参数,

不受域间关系限制

local :表示本地的三元组模式或No-PAT模式,生成的Server-Map表中包含安全区域参数,

受域间关系限制。

#
nat address-group chen 0
 mode no-pat global
#

NAPT

安全策略写法:源NAPT,写安全策略 写转换前的私网IP,因为先匹配安全策略。再匹配NAT策略

NAPT是一种同时转换地址和端口,实现多个私网地址共用一个或多个公网地址的地址转换方式。适用于公网地址数量少,需要上网的私网用户数量大的场景。

1、FW根据源IP Hash算法从NAT地址池中选择一个公网IP地址,替换报文的源IP地址。一个源IP会固定使用那个地址。

2、NAPT方式不会生成Server-map表,这一点也与NAT No-PAT方式不同。

第一步:配置地址池
 nat address-group NAPT
 section 0 202.100.1.20 202.100.1.200
 nat-mode  pat    已经默认了,不显示该命令

第二步:配置NAT策略
nat-policy
 rule name NAPT
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.0 mask 255.255.255.0
  action nat address-group NAPT

第三步:放行安全策略

第四步:测试检查

NAPT为什么不会产生Server-map?

如果产生,需要大量表项,消耗资源,影响性能。

display firewall session table
  icmp  VPN: public --> public  192.168.1.1:256[223.3.3.3:2049] --> 222.2.2.2:2048

ICMP分析:

ICMP是没有port id的,防火墙用的其中一个字段去标识,id号:256,是私网IP地址的ICMP源端口,如下图:

![](https://img2023.cnblogs.com/blog/1735097/202306/1735097-20230607161418766-778935004.png" width="50%" height="50%" /)

NAPT需要配置黑洞路由不?

当公网用户主动访问NAT地址池中的地址时,FW收到此报文后,无法匹配到会话表,根据缺省路由转发给路由器,路由器收到报文后,查找路由表再转发给FW。此报文就会在FW和路由器之间循环转发,造成路由环路。

配置该命令后,FW将会为NAT地址池中的地址生成UNR(User Network Route)路由,该UNR路由的作用与黑洞路由的作用相同,可以防止路由环路,同时也可以引入到OSPF等动态路由协议中发布出去(ospf进程中import unr)。

要分两种情况:

  • 当NAT地址池地址与出接口地址不在同一网段时,会发生环路,必须配置黑洞路由;

  • 当NAT地址池地址与出接口地址在同一网段时,不会发生环路,但会多一个ARP请求,建议配置黑洞路由。

    #
    nat address-group chen
    route enable

查看路由表的效果(自动生成类似于黑洞类型的路由)

Easy-ip

1、Easy IP是一种利用出接口的公网IP地址作为NAT转后的地址,同时转换地址和端口的地址转换方式

2、无需定义公网地址池,直接基于边界连接公网出接口IP执行源转换,使用场景对接运营商网段IP地址动态获取场景。

3、Easy ip不会产生Server-map

4、不需要配置黑洞路由。

5、FW通过查询路由 自动找到对应的出接口地址。

nat-policy
 rule name XXX
  source zone trust
  source-address 192.168.1.1 mask 255.255.255.255
  action source-nat easy-ip
  最后检查安全策略和路由是否可达

Smart NAT

Smart_nat =no_pat+pat,自动预留一个IP地址做PAT

Smart NAT是No-PAT方式的一种补充。Smart NAT是一种可以在No-PAT的NAT模式下,指定某个IP地址预留做NAPT方式的地址转换方式。适用于平时上网的用户数量少,公网IP地址数量与同时上网用户数基本相同,但个别时段上网用户数激增的场景。

使用No-PAT方式时,进行地址池的一对一转换。随着内部用户数量的不断增加,地址池中的地址数可能不再能满足用户上网需求,部分用户将得不到转换地址而无法访问Internet。此时,用户可以利用预留的IP地址进行NAPT地址转换,然后访问Internet。

Smart nat配置:

1.配置nat地址池:
[FW] nat address-group addressgroup1
[FW-address-group-addressgroup1] mode no-pat local
[FW-address-group-addressgroup1] section 0 1.1.1.10 1.1.1.14
[FW-address-group-addressgroup1] smart-nopat 1.1.1.15
[FW-address-group-addressgroup1] route enable
[FW-address-group-addressgroup1] quit

2.配置nat策略:
[FW] nat-policy
[FW-policy-nat] rule name policy_nat1
[FW-policy-nat-rule-policy_nat1] source-zone trust
[FW-policy-nat-rule-policy_nat1] destination-zone untrust
[FW-policy-nat-rule-policy_nat1] source-address 10.1.1.0 24
[FW-policy-nat-rule-policy_nat1] action source-nat address-group addressgroup1
[FW-policy-nat-rule-policy_nat1] quit
[FW-policy-nat] quit
3.配置安全策略

4.配置默认路由

放行的地址:安全策略目的地址写转换后的私网地址

类似于目的NAT,对报文中的目的IP地址,端口实现转换,从外到内的访问

即可以转换目的地址,又可以转换目的端口

global:公网地址

inside:私网地址

global 是将整个地址所有服务都通过公网地址发布

protocol 针对服务

nat server 一个公网IP 可以对外呈现不同的业务(以协议区分、以端口区分)映射到不同的私网节点、实现外网访问内部服务器

nat server 0 protocol icmp global 202.100.1.1 inside 172.16.2.2
nat server 1 protocol tcp global 202.100.1.1 www inside 172.16.2.2 www

安全策略怎么写?

思路:防火墙接收到报文后,首次无会话,会匹配server-map表项,server-map会执行地址转换,将公网地址转换为内部私网地址,然后查询路由表,再匹配安全策略,所以安全策略目的地址,写转换后的私网地址,最后通过安全策略检查后创建会话。

nat server映射的信息如何存放?

只要配置NAT-Server,就会产生Server-map,不需要流量的触发。 默认一直存在,直到NAT-Server被删除,Server-map才会消失。

一条nat语句 会有两条map表项,分别是正向条目、反向条目。

  • 正向作用: 只是做映射关系,加速转发
  • 反向作用:让服务器主动发起访问internet(前提是安全策略要放行)

配置reverse的优缺点:

  • 优点:

服务器上网的源NAT转换不需要配置了。节省配置

  • 缺点:

只转换IP地址,不转换端口

双出口场景

通过ISP_1和ISP_2都可以访问私网服务器172.16.2.2 的http服务

双出口不在一个安全区域,no-reverse 可以加,也可以不加

nat server 0 zone isp_1 protocol tcp global 201.100.1.10 80 inside 172.16.2.2 80
nat server 1 zone isp_2 protocol tcp global 202.100.1.10 80 inside 172.16.2.2 80

双出口在同一个安全区域,no-reverse 一定要加,不加的话,反向条目逻辑是有问题的。

nat server 0 zone isp_1 protocol tcp global 201.100.1.10 80 inside 172.16.2.2 80  no-reverse
nat server 1 zone isp_1 protocol tcp global 202.100.1.10 80 inside 172.16.2.2 80  no-reverse

优点:可以让服务器不用配置默认路由指向公网

场景一:域间双向NAT

NAT Server+源NAT

场景二:域间双向NAT

场景:DMZ区域Web Server、FTP Server要求可以被公网Client访问,需要简化服务器网关配置,让服务器回包的ip和自己同网段,在防火墙上部署双向NAT可以实现(源NAT + NAT Server)。

nat address-group nat_source 0
 mode pat
 route enable
 section 1 172.16.1.10 172.16.1.10
 #
 destination-nat address-group nat_des 0
 section 172.16.1.1 172.16.1.1
 #
destination-nat address-group nat_des_ftp 1
 section 172.16.1.2 172.16.1.2
#
源地址是放行转换前的地址、目的地址是放行转换后的地址
#
security-policy
 rule name web
  source-zone untrust
  destination-zone dmz
  source-address 202.130.1.1 mask 255.255.255.255
  destination-address 172.16.1.1 mask 255.255.255.255
  service http
  action permit
 rule name ftp
  source-zone untrust
  destination-zone dmz
  source-address 202.130.1.1 mask 255.255.255.255
  destination-address 172.16.1.2 mask 255.255.255.255
  service ftp
  action permit
#
nat-policy
 rule name web
  source-zone untrust
  destination-address 202.101.1.1 mask 255.255.255.255
  service http
  service icmp
  action source-nat address-group nat_source
  action destination-nat static address-to-address address-group nat_des
 rule name ftp
  source-zone untrust
  destination-address 202.101.1.2 mask 255.255.255.255
  service ftp
  service icmp
  action source-nat address-group nat_source
  action destination-nat static address-to-address address-group nat_des_ftp

场景三:域内双向NAT

流量转发是发生在域内的情况,具体见手册

静态目的NAT

目的NAT是指对报文中的目的地址和端口进行转换。

通过目的NAT技术将公网IP地址转换成私网IP地址,使公网用户可以利用私网地址访问内部Server

动态目的NAT

此技术和源NAT技术的NAPT类似

设备上开启了ASPF相当于开启了ALG,关掉了ASPF相当于关掉了ALG

ASPF是监听多通道协议的控制平面,预测出数据通道连接,让数据通道绕开安全策略转发

ALG是应用层网关,ALG是和NAT结合使用的

为什么需要ALG?

多通道协议的场景穿越防火墙NAT时,可能会出问题,因为NAT 仅仅能对IP层、传输层TCP、UDP源目的端口 进行转换,NAT无法对应用层载荷携带的IP、端口 执行转换,比如需要交换应用层的IP和端口进行交互的应用,就会造成业务异常,FTP协议就是典型的例子


防火墙的NAT技术就不再赘述,简单讲一下路由器的NAT技术配置命令

NAT Server 配置:

interface GigabitEthernet0/0/1
 ip address 201.1.1.2 255.255.255.0
 nat server protocol tcp global 201.1.1.100 ftp inside 192.168.1.2 ftp
 nat server protocol tcp global 201.1.1.101 telnet inside 192.168.1.2 telnet

静态NAT配置:

nat static global 201.1.1.100 inside 192.168.1.1

动态NAT配置:

nat address-group chen 201.1.1.199 201.1.1.121
#
acl 2000
 rule 5 permit source 192.168.0.0 0.0.255.255
 rule 10 permit source 192.168.1.99 0.0.0.0
 #
 interface GE0/0/1
  nat outbound 2000 address-group chen no-pat
  #

easy ip配置:

#
acl 2000
 rule 10 permit source 192.168.1.99 0.0.0.0
 #
 interface G0/0/1
  nat outbound 2000
  #