华为防火墙之NAT技术

1.源NAT

源NAT技术对IP报文的源地址进行转换,将私网IP地址转换成公网IP地址,使大量私网用户可以利用少量公网IP地址访问Internet,大大减少了对公网IP地址的消耗。

源NAT转换的过程如下图所示,当私网用户访问Internet的报文到达防火墙时,防火墙将报文的源IP地址由私网地址转换为公网地址;当回程报文返回至防火墙时,防火墙再将报文的目的地址由公网IP地转换为私网地址。整个NAT转换过程对于内部网络中的用户和Internet上的主机来说是完全透明的。

NAT地址池是一个虚拟的概念,它形象地把“公网IP地址的集合”比喻成一个“放IP地址的池子或容器”,防火墙在进行地址转换时就是从NAT地址池中挑选出一个公网IP地址,然后对私网IP地址进行转换。挑选哪个公网IP地址是随机的,和配置时的顺序、IP地址大小等因素都没有关系

配置NAT地址池的命令如下:

[FW] nat address-group 1 202.1.1.2 202.1.1.5  //配置包含4个公网地址的地址池

NAT地址池配置完成后,会被NAT策略所引用。NAT策略与安全策略相似,也是由条件和动作组成。不同的是,NAT策略中的动作是“源NAT转换”和“不进行NAT转换”,当动作是“源NAT转换”时必须引用NAT地址池,如下图所示:

多条NAT策略之间存在匹配顺序,如果报文命中了某一条NAT策略,就会按照该NAT策略中引用的地址池来进行地址转换;如果报文没有命中某条NAT策略,则会向下继续查找。

NAT No-PAT

No-PAT”表示不进行端口转换,所以NAT No-PAT方式只转换IP地址,故也称为“一对一地址转换”。

下面以图4-3所示的组网环境为例介绍No-PAT方式的配置过程,假设防火墙和Web服务器之间路由可达。

NAT No-PAT方式的配置过程如下:

①配置NAT地址池

[FW] nat address-group 1 202.1.1.2 202.1.1.3  ∥地址池中配置两个公网IP地址

②配置NAT策略

[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] policy souree 192.168.0.0 0.0.0.255   ∥匹配条件
[FW-nat-policy-interzone-trust-untrust-outbound-1] action source-nat  //动作为进行源NAT转换
[FW-nat-policy-interzone-trust-untrust-outbound-1]address-group 1 no-pat //弓用NAT 地址池并指定转换方式为No-PAT
[FW-nat-policy-interzone-trust-untrust-outbound-1] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit

③配置安全策略

  • 安全策略的作用是控制报文能否通过防火墙;
  • NAT策略的作用是对报文进行地址转换;

配置NAT的时候也需要配置安全策略允许报文通过。由于防火墙对报文进行安全策略处理发生在进行NAT策略处理之前,所以安全策略的源地址应该是进行NAT转换之前的私网地址

[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 1
[FW-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-1] action permit
[FW-policy-interzone-trust-untrust-outbound-1] quit
[FW-policy-interzone-trust-untrust-outbound] quit

④配置黑洞路由

黑洞路由是一个让报文“有去无回”的路由,它的效果就是让防火墙丢弃命中黑洞路由的报文。为了避免产生路由环路,在防火墙上必须针对地址池中的公网IP地址配置黑洞路由。

[FW] ip route-static 202.1.1.2 32 NULL0
[FW] ip route-static 202.1.1.3 32 NULL 0

NAT No-PAT方式会生成Server-map表,而且生成了正向和反向两条表项。

在NAT No-PAT的转换方式中,一个公网IP地址不能同时被多个私网用户使用,其实并没有起到节省公网IP地址的效果

NAPT

NAPT(Network Address and Port Translation)表示网络地址和端口转换,即同时对IP地址和端口进行转换,也可称为PAT(PAT不是只转换端口的意思,而是IP地址和端口同时转换)。NAPT是一种应用最广泛的地址转换方式,可以利用少量的公网IP地址来满足大量私网用户访问Internet的需求

NAPT方式和NATNo-PAT方式在配置上的区别仅在于:NAPT方式的NAT策略在引用NAT 地址池时,不配置关键字“no-pat”,其他的配置都是一样的。

### ①配置NAT地址池
[FW] nat address-group 1 202.1.1.2 202.1.1.3  ∥地址池中配置两个公网IP地址
### ②配置NAT策略
[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] policy souree 192.168.0.0 0.0.0.255   ∥匹配条件
[FW-nat-policy-interzone-trust-untrust-outbound-1] action source-nat  //动作为进行源NAT转换
[FW-nat-policy-interzone-trust-untrust-outbound-1]address-group 1  //弓用NAT 地址池
[FW-nat-policy-interzone-trust-untrust-outbound-1] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit
### ③配置安全策略
[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 1
[FW-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-1] action permit
[FW-policy-interzone-trust-untrust-outbound-1] quit
[FW-policy-interzone-trust-untrust-outbound] quit
### ④配置黑洞路由
[FW] ip route-static 202.1.1.2 32 NULL0
[FW] ip route-static 202.1.1.3 32 NULL 0

NAPT方式不会生成Server-map表。

出接口地址方式

出接口地址方式(Easy-IP) 指的是利用出接口的公网IP地址作为NAT转换后的地址,也同时转换地址和端口一个公网IP地址可以同时被多个私网用户使用,可以看成是NAPT方式的一种“变体”

出接口地址方式(Easy-IP)在公网IP是动态变化的情况下使用。

Easy-IP方式无需配置NAT地址池,也不用配置黑洞路由,只需在NAT策略中指定出接口即可,下面以图4-4所示的组网环境为例介绍Easy-IP方式的配置过程。

(1)配置NAT策略

[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] poliey 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] policy souree 192.168.0.0 0.0.0.255
[FW-nat-policy-interzone-trust-untrust-outbound-1] action souree-nat
[FW-nat-policy-interzone-trust-untrust-outbound-1]easy-ip GigabitEthernetl/0/2 //指定出接口
[FW-nat-policy-interzone-trust-untrust-outbound-1] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit

(2)配置安全策略

[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 1
[FW-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-1] action permit
[FW-policy-interzone-trust-untrust-outbound-1] quit
[FW-policy-interzone-trust-untrust-outbound] quit

和NAPT一样,Easy-IP方式也不会生成Server-map表。

Smart NAT

Smart NAT方式也叫作“聪明的NAT”,这是因为它融合了NAT No-PAT方式和
NAPT方式的特点。

假设SmartNAT方式使用的地址池中包含N个IP,其中一个IP被指定为预留地址,另外N-1个地址构成地址段1(sectionl)。进行NAT地址转换时,Smart NAT会先使用section1进行NAT No-PAT方式的转换,即一对一的地址转换。当section1中的IP都被占用后,SmartNAT才使用预留地址进行NAPT方式的转换,即多对一的地址转换。

上图组网环境,Smart NAT方式的配置过程如下:

(1)配置NAT地址池

[FW] nat address-group 1
[FW-address-group-1] mode no-pat local
[FW-address-group-1] smart-nopat 202.1.1.3  //预留地址
[FW-address-group-1] section 1 202.1.1.2 202.1.1.2  //section中不能包含预留地址
[FW-address-group-]] quit

(2)配置NAT策略

[FW] nat-poliey interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-nat-policy-interzone-trust-untrust-outbound-1] action souree-nat
[FW-nat-policy-interzone-trust-untrust-outbound-1] address-group 1 /∥弓用NAT地址池
[FW-nat-policy-interzone-trust-untrust-outbound-1] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quít

(3)配置安全策略

[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] policy 1
[FW-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-1] action permit
[FW-policy-interzone-trust-untrust-outbound-1] quit
[FW-policy-interzone-trust-untrust-outbound] quit

(4)配置黑洞路由

[FW] ip route-static 202.1.1.2 32 NULL0
[FW] ip route-static 202.1.1.3 32 NULL 0

三元组 NAT

为了解决P2P业务和NAT共存的问题,需要用到一种新的地址转换方式:三元组 NAT

三元组 NAT在进行转换时,仅和源IP地址、源端口和协议类型这3个元素有关,这也正是“三元组”NAT名字的由来。

三元组 NAT的两个特点:

  • 对外呈现端口一致性
  • 支持外网主动访问

目前华为USG9500系列防火墙V300R001版本支持三元组NAT方式,对于USG2000/5000/6000系列防火墙来说,可以通过配置User-defined协议的ASPF来保证P2P业务的正常运行。下面结合下图所示的组网环境,给出三元组NAT的配置过程,三元组NAT不能配置黑洞路由,否则会影响业务。

(1)配置NAT地址池

[FW] nat address-group 1  //指定模式为三元组NAT方式
[FW-address-group-]] mode full-cone local
[FW-address-group-1] section 1 202.1.1.2 202.1.1.3
[FW-address-group-1] quit

(2)配置NAT策略

[FW] nat-policy interzone trust untrust outbound
[FW-nat-policy-interzone-trust-untrust-outbound] policy 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] policy souree 192.168.0.0 0.0.0.255
[FW-nat-policy-interzone-trust-untrust-outbound-1] aetion souree-nat  //引用NAT地址:池
[FW-nat-policy-interzone-trust-untrust-outbound-1] address-group 1
[FW-nat-policy-interzone-trust-untrust-outbound-1] quit
[FW-nat-policy-interzone-trust-untrust-outbound] quit

(3)配置安全策略

[FW] policy interzone trust untrust outbound
[FW-policy-interzone-trust-untrust-outbound] poliey 1
[FW-policy-interzone-trust-untrust-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-untrust-outbound-1] action permit
[FW-policy-interzone-trust-untrust-outbound-1] quit
[FW-policy-interzone-trust-untrust-outbound] quit

多出口场景下的源NAT

某企业在内部网络的出口处部署了防火墙作为出口网关,通过ISP1和ISP2两条链路连接到Internet,企业内部网络中的PC有访问Internet的需求,如下图;

选路的方式有多种,比如配置两条缺省路由(等价路由)或者配置明细路由,根据报文的目的地址进行选路;比如配置策略路由,根据报文的源地址进行选路。这里主要介绍NAT功能。

无论使用哪种选路方式,结果无非就是两种:报文走ISP1的链路出去,或者走ISP2的链路出去。不管是走哪条链路,只要在报文发出去之前把报文中私网地址转换成相应的公网地址,源NAT的作用就完成了。

通常情况,我们把防火墙与ISP1和ISP2相连的两个接口分别加入到不同的安全区域,然后基于内部网络所在安全区域(通常是Trust区域)与这两个接口所在安全区域之间配置源NAT策略,如下图所示:

假设ISP1分配的公网地址是1.1.1.101.1.1.12,ISP2分配的公网地址是2.2.2.102.2.2.12,NAPT方式的源NAT配置如下:

(1)将接口分别加入到不同的安全区域

[FW] firewall zone trust
[FW-zone-trust] add interface GigabitEthernet1/0/1
[FW-zone-trust] quit
[FW] firewall zone name isp1
[FW-zone-ispl] set priority 10
[FW-zone-ispl] add interface GigabitEthernet1/0/2
[FW-zone-ispl] quit
[FW] firewall zone name isp2
[FW-zone-isp2] set priority 20
[FW-zone-isp2] add interface GigabitEthernet1/0/3
[FW-zone-isp2] quit

(2)配置两个NAT地址池

[FW] nat address-group 1 1.1.1.10 1.1.1.12
[FW] nat address-group 2 2.2.2.10 2.2.2.12

(3)基于不同的域间关系配置两条NAT策略

[FW] nat-policy interzone trust ispl outbound
[FW-nat-policy-interzone-trust-isp1-outbound] policy 1
[FW-nat-policy-interzone-trust-isp1-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-nat-policy-interzone-trust-isp1-outbound-1] action source-nat
[FW-nat-policy-interzone-trust-ispl-outbound-1] address-group 1
[FW-nat-policy-interzone-trust-isp1-outbound-1] quit
[FW-nat-policy-interzone-trust-ispl-outbound] quit
[FW] nat-policy interzone trust isp2 outbound
[FW-nat-policy-interzone-trust-isp2-outbound] policy 1
[FW-nat-policy-interzone-trust-isp2-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-nat-policy-interzone-trust-isp2-outbound-1] action source-nat
[FW-nat-policy-interzone-trust-isp2-outbound-1] address-group 2
[FW-nat-policy-interzone-trust-isp2-outbound-1] quit
[FW-nat-policy-interzone-trust-isp2-outbound] quit

(4)基于不同的域间关系配置两条安全策略

[FW] policy interzone trust isp1 outbound
[FW-policy-interzone-trust-ispl-outbound] policy 1
[FW-policy-interzone-trust-isp1-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-ispl-outbound-1] action permit
[FW-policy-interzone-trust-ispl-outbound-1] quit
[FW-policy-interzone-trust-ispl-outbound] quit
[FW] policy interzone trust isp2 outbound
[FW-policy-interzone-trust-isp2-outbound] policy 1
[FW-policy-interzone-trust-isp2-outbound-1] policy source 192.168.0.0 0.0.0.255
[FW-policy-interzone-trust-isp2-outbound-1] action permit
[FW-policy-interzone-trust-isp2-outbound-1] quit
[FW-policy-interzone-trust-isp2-outbound] quit

(5)配置黑洞路由

[FW] ip route-static 1.1.1.10 32 NULL 0
[FW] ip route-static 1.1.1.11 32 NULL 0
[FW] ip route-static 1.1.1.12 32 NULL 0
[FW] ip route-static 2.2.2.10 32 NULL 0
[FW] ip route-static 2.2.2.11 32 NULL 0
[FW] ip route-static 2.2.2.12 32 NULL 0

华为防火墙源NAT技术对比

2.NAT Server

NAT Server(服务器映射)基本原理

针对服务器的地址转换——NAT Server(服务器映射),服务器对公网用户提供服务时使用;

参照上图,NAT Server的配置过程如下:

(1)配置NAT Server

将服务器的私网地址10.1.1.2映射成公网地址1.1.1.1

[FW] nat server global 1.1.1.1 inside 10.1.1.2

如果服务器同时存在多种协议和端口的服务项,按上述配置会将服务器上所有服务项都发布到公网上,这样会带来安全风险。我们可以只将服务器上特定的服务项对公网发布,从而避免服务项全发布带来的风险。

例如,将服务器上80端口的服务项映射为9980端口供公网用户访问,配置如下:

[FW] nat server protocol tcp global 1.1.1.1 9980 inside 10.1.1.2 80

(2)配置安全策略

NAT Server场景下,为了让公网用户能够访问私网服务器,配置安全策略时策略的目的地址是服务器的私网地址

[FW] policy interzone dmz untrust inbound
[FW-policy-interzone-dmz-untrust-inbound] policy 1
[FW-policy-interzone-dmz-untrust-inbound-1] policy destination 10.1.1.2 0
[FW-policy-interzone-dmz-untrust-inbound-1] policy service service-set http
[FW-policy-interzone-dmz-untrust-inbound-1] action permit
[FW-policy-interzone-dmz-untrust-inbound-1] quit
[FW-policy-interzone- dmz-untrust-inbound] quit

(3)配置黑洞路由

NAT Server也需要配置黑洞路由,避免路由环路

[FW] ip route-static 1.1.1.1 32 NULL 0

多出口场景下的NAT Server

上图,防火墙作为出口网关,双出口、双ISP接入公网,NAT Server的配置通常需要一分为二,让一个私网服务器向两个ISP发布两个不同的公网地址供公网用户访问。一分为二的方法有两种。

方法一:将接入不同ISP的公网接口规划在不同的安全区域中,配置NAT Server时,带上zone参数,使同一个服务器向不同安全区域发布不同的公网地址,如下图所示:

假设私网服务器对ISP1发布的公网地址是1.1.1.20,对ISP2发布的公网地址是2.2.2.20,配置过程如下:

(1)将接口分别加入到不同的安全区域

[FW] firewall zone dmz
[FW-zone-dmz] add interface GigabitEthernet1/0/4
[FW-zone-dmz] quit
[FW] firewall zone name isp1
[FW-zone-ispl] set priority 10
[FW-zone-ispl] add interface GigabitEthernet1/0/2
[FW-zone-ispl] quit
[FW] firewall zone name isp2
[FW-zone-isp2] set priority 20
[FW-zone-isp2] add interface GigabitEthernet1/0/3
[FW-zone-isp2] quit

(2)配置带有zone参数的NAT Server

[FW] nat server zone isp1 protocol tcp global 1.1.1.20 9980 inside 172.16.0.2 80
[FW] nat server zone isp2 protocol tcp global 2.2.2.20 9980 inside 172.16.0.2 80

(3)基于不同的域间关系配置两条安全策略

[FW] policy interzone isp1 dmz inbound
[FW-policy-interzone-dmz-ispl-inbound] policy 1
[FW-policy-interzone-dmz-isp1-inbound-1] policy destination 172.16.0.2 0
[FW-policy-interzone-dmz-ispl-inbound-1] policy service service-set http
[FW-policy-interzone-dmz-isp1-inbound-1] action permit
[FW-policy-interzone-dmz-isp1-inbound-1] quit
[FW-policy-interzone-dmz-isp1-inbound] quit
[FW] policy interzone isp2 dmz inbound
[FW-policy-interzone-dmz-isp2-inbound] policy 1
[FW-policy-interzone-dmz-isp2-inbound-1] policy destination 172.16.0.2 0
[FW-policy-interzone-dmz-isp2-inbound-1] policy service service-set http
[FW-policy-interzone-dmz-isp2-inbound-1] action permit
[FW-policy-interzone-dmz-isp2-inbound-1] quit
[FW-policy-interzone-dmz-isp2-inbound] quit

(4)配置黑洞路由

[FW] ip route-static 1.1.1.20 32 NULL0
[FW] ip route-static 2.2.2.20 32 NULL 0

方法二:如果防火墙与ISP1和ISP2相连的两个接口在同一个安全区域内且无法调整,则通过配置NAT Server时带上no-reverse参数,使同一个服务器向外发布两个不同的公网地址,如下图所示:

上图中其他配置与方法一相同,不同的是配置带有no-reverse参数的NAT Server,配置如下:

[FW] nat server protocol tep global 1.1.1.20 9980 inside 172.16.0.2 80 no-reverse
[FW] nat server protocol tcp global 2.2.2.20 9980 inside 172.16.0.2 80 no-reverse

配置源进源出

如下图,如果防火墙只配置了缺省路由,用户通过ISP1通过GE1/0/2接口访问内部服务器,返回的数据有可能通过ISP2链路的GE1/0/3接口发出,数据就无法返回给用户,访问中断,避免此种情况出现就需要在防火墙上配置源进源出,即请求报文从某条路径进入,响应报文依然沿着同样的路径返回,而不用查找路由表来确定出接口,
保证了报文从同一个接口进出;

源进源出功能在接口上配置,防火墙连接ISP1和ISP2的两个接口上都需要配置。

假设ISP1提供的下一条地址是1.1.1.254,在接口GE1/0/2上开启源进源回功能的配置命令如下:

USG9500系列防火墙源进源出命令

[FW] interface GigabitEthernet 1/0/2
[FW-GigabitEthernet1/0/2] redirect-reverse nexthop 1.1.1.254

USG2000/5000系列防火墙源进源出命令

[FW] interface GigabitEthernet 1/0/2
[FW-GigabitEthernet1/0/2] reverse-route nexthop 1.1.1.254

USG6000系列防火墙源进源出命令

[FW] interface GigabitEthernet 1/0/2
[FW-GigabitEthernet1/0/2] gateway 1.1.1.254
[FW-GigabitEthernetl/0/2] reverse-route enable

3.双向NAT

源NAT+NAT Server技术被称为双向NAT;双向NAT不是一个单独的功能,而是源NAT和NAT Server的组合,是针对同一条流(例如公网用户访问私网服务器的报文),在其经过防火墙时同时转换报文的源地址和目的地址。

源NAT根据报文在防火墙上的流动方向分为:域间NAT域内NAT

域间NAT:报文在两个不同的安全区域之间流动时对报文进行NAT转换,根据流动方向的不同,分为以下两类:

  • NAT Inbound:报文由低安全级别的安全区域高安全级别的安全区域方向流动时,对报文进行的转换。一般来说,这种情况是公网用户访问内部网络,不太常见。
  • NAT Outbound:报文由高安全级别的安全区域低安全级别的安全区域方向流动时,对报文进行的转换。私网用户访问 Internet的场景使用的都是NAT Outbound。

域内NAT:报文在同一个安全区域之内流动时对报文进行NAT转换,一般来说,域内NAT都会和NAT Server配合使用,单独配置域内NAT的情况较少见。

当域间NAT或域内NAT和NAT Server一起配合使用时,就实现了双向NAT。

双向NAT还要合理的设置安全区域的安全级别并规划网络——内网网络属于Trust区域(高安全级别),私网服务器属于DMZ区域(中安全级别),Internet属于Untrust 区域(低安全级别)

NAT Inbound + NAT Server

上图,公网用户访问私网服务器,安全策略和黑洞路由的配置与前面介绍过的内容没有区别,这里不写配置了,NAT Server和源NAT的配置如下:

//NAT Server的配置
[FW] nat server protocol tcp global 1.1.1.1 9980 inside 10.1.1.2 80

//源NAT的配置
[FW] nat address-group 1 10.1.1.100 10.1.1.100
[FW] nat-policy interzone untrust dmz inbound
[FW-nat-policy-interzone-dmz-untrust-inbound] policy 1
[FW-nat-policy-interzone-dmz-untrust-inbound-1] policy destination 10.1.1.2 0 //由于先进行NAT Server转换,再进行源NAT转换,所以此处的目的地址是NAT Server转换后的地址,即服务器的私网地址
[FW-nat-policy-interzone-dmz-untrust-inbound-1] action source-nat
[FW-nat-policy-interzone-dmz-untrust-inbound-1] address-group 1
[FW-nat-policy-interzone-dmz-untrust-inbound-1] quit
[FW-nat-policy-interzone-dmz-untrust-inbound] quit

通过下图来看一下报文的转换过程:公网用户访问私网服务器的报文到达防火墙时,目的地址(私网服务器的公网地址)经过NAT Server转换为私网地址,然后源地址经过NAT Inbound也转换为私网地址,且和私网服务器属于同一网段。这样报文的源地址和目的地址就同时进行了转换,即完成了双向NAT。当私网服务器的回应报文经过防火墙时,再次进行双向NAT转换,报文的源地址和目的地址均转换为公网地址。

配置NAT Inbound的好处是:NAT地址池中的地址配置成和私网服务器在同一网段,当私网服务器回应公网用户的访问请求时,发现自己的地址和目的地址在同一网段,此时私网服务器就不会去查找路由,而是发送ARP广播报文询问目的地址对应的MAC地址。防火墙会及时将连接私网服务器的接口的MAC地址发给私网服务器,告诉私网服务器:“把回应报文发送给我吧”,所以私网服务器将回应报文发送至防火墙,防火墙再对其进行后续处理。私网服务器上省去了查找路由的环节,也就不用设置网关了

在这个场景中应用双向NAT时还有一个前提条件,那就是私网服务器与防火墙必须在同一个网段,否则就不能应用这个功能了。

域内NAT + NAT Server

域内NAT+NAT Server的场景多见于小型网络,如下图所示,管理员在规划网络时“偷懒”,将私网用户和私网服务器规划到同一个网络中,并将二者置于同一个安全区域。

此时,如果希望私网用户像公网用户一样,通过公网IP地址1.1.1.1访问私网服务器,就要在防火墙上配置NAT Server。但是仅仅配置NAT Server会有问题,如下图所示,私网用户访问私网服务器的报文到达防火墙后进行目的地址转换(1.1.1.1->10.1.1.2),私网服务器回应报文时发现目的地址和自己的地址在同一网段,回应报文经交换机直接转发到私网用户,不会经过防火墙转发。

如果希望提高内部网络的安全性,使私网服务器的回应报文也经过防火墙处理,就需要配置域内NAT,将私网用户访问私网服务器的报文的源地址进行转换。转换后源地址可以是公网地址也可以是私网地址,只要不和私网服务器的地址在同一网段即可,这样私网服务器的回应报文就会被发送到防火墙。

黑洞路由的配置与前面介绍过的内容没有区别,这里就不给出具体配置了。下面是NAT Server和域内NAT的配置;

//NAT Server的配置
[FW] nat server protocol tcp global 1.1.1.1 9980 inside 10.1.1.2 80

//域内NAT的配置
[FW] nat address-group 1 1.1.1.100 1.1.1.100  //公网地址或私网地址均可,不能和私网服务器的地址在同一网段
[FW] nat-policy zone trust
[FW-nat-policy-zone-trust] policy 1
[FW-nat-policy-zone-trust-1]policy destination 10.1.1.20 //由于先进行NAT Server转换,再进行域内NAT转换,所以此处的目的地址是NAT Server转换后的地址,即服务器的私网地址
[FW-nat-policy-zone-trust-1] action source-nat
[FW-nat-policy-zone-trust-1] address-group 1
[FW-nat-policy-zone-trust-1] quit
[FW-nat-policy-zone-trust] quit

报文的转换过程如下图所示;

如果在这个组网环境的基础上做一个变化,将私网用户和私网服务器通过不同的接口连接到防火墙,此时私网用户和私网服务器交互的所有报文都需要经过防火墙转发,所以只配置NAT Server是可以的。

4.NAT ALG

NAT ALG(Application Level Gateway),即NAT的应用层网关。NAT ALG是一种穿越NAT设备的技术,防火墙在进行地址转换时,除了转换报文头中的IP地址信息,还转换报文载荷中携带的IP地址信息。下图展示了在防火墙上开启NAT ALG功能后,FTP协议的交互过程。

开启NATALG功能后,防火墙将PORT命令报文中携带的IP地址信息转换成了公网地址1.1.1.1,FTP服务器收到该报文后,就可以向1.1.1.1这个地址发起数据连接了。

此时,还需开启防火墙的ASPF功能,防火墙会为FTP的数据连接开辟隐形通道,使其绕过安全策略检查,直接穿越防火墙,从而使FTP服务器发起的数据连接请求报文顺利穿越防火墙,准确到达位于私网的FTP客户端。

FTP协议的完整交互过程如下图所示;

除了源NAT场景,NAT Server场景中也需要开启NAT ALG和ASPF功能。以FTP客户端位于公网、FTP服务器位于私网,并且FTP工作在被动模式为例,下图给出了FTP协议的完整交互过程。

如果网络中存在FTP、SIP、H323等这些多通道协议,在防火墙进行地址转换的场景中,一般都建议在防火墙上同时开启NAT ALG和ASPF功能,保证基于这些协议的业务能够正常运行。

目前绝大多数防火墙产品,都是由一条命令来同时开启ASPF和NAT ALG这两个功能,即在域间或域内配置detect命令开启ASPF功能后,同时就开启了NAT ALG功能。

针对几个典型协议,下表给出了执行detect命令后,防火墙上的处理方式。

5.NAT场景下黑洞路由的作用

对于源NAT来说:

  • 如果NAT地址池地址与公网接口地址不在同一网段,必须配置黑洞路由;
  • 如果NAT地址池地址与公网接口地址在同一网段,建议也配置黑洞路由。

对于指定了特定协议和端口的NAT Server来说:

  • 如果NAT Server的Global地址与公网接口地址不在同一网段,必须配置黑洞路由;
  • 如果NAT Server的Global地址与公网接口地址在同一网段,建议也配置黑洞路由。

除了防止路由环路、节省设备的系统资源,其实黑洞路由还有一个作用,那就是在防火墙上引入到OSPF中,发布给路由器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32476.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟系统安装mysql数据库[mysql-5.7.28-linux-glibc2.12-x86_64]

银河麒麟系统安装mysql数据库 1.1 准备材料 mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz MySQL5.7下载地址 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 1.1 安装前准备工作 1、检查是否已经安装MySQL [rootlocalhost ~]# rpm …

redismariadb + keepalived 高可用

目录 机器准备 安装后服务 redis 安装redis mariadb 安装mariadb 启动和配置 互为主从同步配置 keepalived keepalived安装 修改主从 keepalived的配置 主从配置-mariadb监控 主从配置-redis监控 查看和使用 Keepalived Mariadb redis 机器准备 两台机器&…

transformer零基础学习

声明:以下文章链接仅用于个人学习与备忘。 基础知识 1:零基础解析教程 [推荐] https://zhuanlan.zhihu.com/p/609271490 2:Transformer 详解 [推荐] https://wmathor.com/index.php/archives/1438/ 3:如何从浅入深理解transfor…

行为型模式--状态模式

目录 举例 状态模式 定义 结构 代码实现 优缺点 优点: 缺点: 使用场景 举例 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一 种状态改变,都…

STM32外设系列—BH1750

文章目录 一、BH1750简介二、BH1750原理图三、BH1750数据手册3.1 指令集3.2 IIC通信读/写 四、BH1750程序设计4.1 IIC程序4.2 BH1750初始化程序4.3 读取BH1750测量结果4.4 获取光照强度4.5 相关宏定义 五、应用实例六、拓展应用6.1 实时调节LED亮度6.2 实时调整颜色阈值 一、BH…

C++【位图/布隆过滤器—海量数据处理】

文章目录 一、位图(1)位图概念介绍(2)简单模拟实现(3)位图应用 二、布隆过滤器(1)关于布隆过滤器概念及介绍(2)布隆过滤器的使用场景(3&#xff0…

【前端布局篇】浮动、定位、弹性布局,固比固、双飞翼、圣杯布局

一、布局方式介绍 布局模型是基于盒模型基础上进行的拓展,关于布局有流式布局(标准的布局),浮动布局、定位布局、flex布局等。 1.1 标准流(流动模型) 描述:元素按照自己默认的元素类型在页面…

Unity3D 连接MySQL数据库

1、MySQL下载安装运行 详见:MySQL下载安装运行 2、使用mysql-connector-net (1)官方下载地址:https://downloads.mysql.com/archives/c-net/,下载后直接双击安装即可。 提示:不要使用版本过高的connect…

Jmeter(三) - 从入门到精通 - 测试计划(Test Plan)的元件(详解教程)

1.简介 上一篇中我已经教你如何通过JMeter来创建一个测试计划(Test Plan),那么这一篇我们就将JMeter启动起来,创建一个测试计划(Test plan),然后现在给大家介绍一下测试计划(Test P…

C# wpf 附加属性实现任意控件拖动调整大小

摘自这里 https://blog.csdn.net/u013113678/article/details/121719278 调试效果如下 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using Syst…

【信号】信号处理与进程通信:快速上手

目录 0. 信号概述 1. 产生信号的方式: 1.1 当用户按某些终端键时,将产生信号。 1.2 硬件异常将产生信号。 1.3 软件异常将产生信号。 1.4 调用kill函数将发送信号。 1.5 运行kill命令将发送信号。 2. 信号的默认(缺省)处理…

Visual C++类的继承及类中成员的访问特性——搞懂public、protected、private

我是荔园微风,作为一名在IT界整整25年的老兵,今天来说说Visual C中类的继承及类中成员的访问特性,也就是来搞懂public、protected、private这三个东西。 很多人搞不清楚这三个东西,并且很容易弄错,其实不是学习的人的…

ModaHub魔搭社区:向量数据库MIlvus服务端配置(三)

目录 gpu 区域 logs 区域 metric_config 区域 gpu 区域 在该区域选择是否在 Milvus 里启用 GPU 用于搜索和索引创建。同时使用 CPU 和 GPU 可以达到资源的最优利用,在特别大的数据集里做搜索时性能更佳。 若要切换到 CPU-only 模式,只要将 enable 设…

【VMD-LSTM】变分模态分解-长短时记忆神经网络研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

数据库大题

(计算题,20分) 设有两个关系R和S,求① R ∪ S R \cup S R∪S;② R − S R - S R−S;③ R S R \times S RS;④ ∏ C , A ( R ) \prod_{C,A}(R) ∏C,A​(R);⑤ σ B > ′ 4 ′ ( R ) \sigma_{B>4}(R) σB>′4′​(R) 关系R关系S (简答题,10…

基于深度学习FasterRCNN模型Restnet50 的生活垃圾智能分类(准确率达84%)-含python工程全源码

目录 前言总体设计系统整体结构图系统流程图 运行环境1. 硬件环境2. Python 环境 模块实现1. 数据预处理2. 数据加载3. 模型构建4. 模型训练及保存5. 模型加载与调用 系统测试1. 模型准确率2. 分类别准确率 工程源代码下载其它资料下载 前言 本项目基于Faster R-CNN模型&#…

jenkins流水线Pipeline的使用

pipeline流水线 1、jenkins安装pipeline插件 2、创建流水线项目 1、创建pipeline的流水线项目 2、编写流水线 pipeline {agent anystages {stage(拉去代码) {steps {git credentialsId: gitee, url: https://gitee.com/xwb1056481167/jenkins-demo.gitecho 拉去代码}}stage(m…

Vue中如何进行数据导入与Excel导入

Vue中如何进行数据导入与Excel导入 Vue是一款非常流行的JavaScript框架,它提供了一套用于构建用户界面的工具和库。在Vue中,我们可以使用多种方式来导入数据,包括从服务器获取数据、从本地存储获取数据、从文件中读取数据等等。其中&#xf…

NVIDIA Jetson TX1,TX2,TX2 NX,AGX Xavier 和 Nano开发板GPIO口配置及应用

NVIDIA Jetson TX1,TX2,TX2 NX,AGX Xavier 和 Nano开发板GPIO口配置及应用 简介 ​ Jetson TX1、TX2、TX2 NX、AGX Xavier和Nano开发板都配备了一个包含40个引脚的GPIO接头,这些引脚可以用于数字输入输出。如下图 ​ 类似于Rasp…

Solid Converter PDF v10 安装及使用教程

目录 一、软件介绍二、下载教程三、安装教程四、使用教程1.PDF转Word、Html等2.合并PDF文件 一、软件介绍 Solid Converter PDF是一套专门将PDF文件转换成Word的软件。 能够将PDF转换为Word、Excel、HTML、PowerPoint、纯文本文件从PDF文档中提取数据并以CSV等格式保存能够转…