05 防火墙网络地址转换技术
思维导图:
NAT概述
NAT产生背景
IPv4地址不足的权宜之计
公有地址与私有地址的区别:
公有地址:由专门的机构管理、分配,可以在Internet上直接通信的IP地址;
私有地址:组织和个人可以任意使用,无法在Internet上直接通信,只能在内网使用的IP地址。
A、B、C类地址中各预留了一些地址专门作为私有IP地址:
A类:10.0.0.0 ~ 10.255.255.255
B类:172.16.0.0 ~ 172.31.255.255
C类:192.168.0.0 ~ 192.168.255.255
防火墙NAT的实现 – NAT策略
防火墙的NAT功能可以通过配置NAT策略实现。
NAT策略由转换后的地址(地址池地址或者出接口地址)、匹配条件和动作三部分组成。
地址池类型包括源地址池和目的地址池
匹配条件包括源/目的地址、源/目的安全区域、出接口、服务和时间段等
动作包括源地址转换或者目的地址转换或者不转换
创建了多条NAT策略,按从上到下进行匹配,匹配后不再匹配
双向NAT策略和目的NAT策略会在源NAT策略的前面,双向NAT策略和目的NAT策略之间按配置先后顺序排列,源NAT策略也按配置先后顺序排列。新增的策略和被修改NAT动作的策略都会被调整到同类NAT策略的最后面。
NAT策略的匹配顺序可根据需要进行调整,但是源NAT策略不允许调整到双向NAT策略和目的NAT策略之前。
NAT分类与优缺点
根据应用场景的不同,NAT可以分为以下三类:
源NAT(Source NAT):适用于用户通过私网地址访问Internet的场景;
目的NAT(Destination NAT): 适用于用户通过公网地址访问私网服务器的场景;
双向NAT(Bidirectional NAT):适用于通信双方访问对方的时候目的地址都不是真实的地址,而是NAT转换后的地址的场景。
NAT的优点:
实现IP地址复用,节约宝贵的地址资源;
有效避免来自外网的攻击,对内网用户提供隐私保护,可以很大程度上提高网络安全性。
NAT的缺点:
网络监控难度加大;
限制某些具体应用。
NAT处理流程
防火墙上针对不同的NAT类型会采用不同的NAT策略,具体处理流程如下:
NAT处理流程简述如下:
步骤1:防火墙收到报文后,查找NAT Server生成的Server-Map表,如果报文匹配到Server-Map表,则根据表项转换报文的目的地址,然后进行步骤3处理;如果报文没有匹配到Server-Map表,则进行步骤2处理;
步骤2:查找NAT策略中目的NAT,如果报文符合匹配条件,则转换报文的目的地址后进行路由处理;如果报文不符合目的NAT的匹配条件,则直接进行路由处理;
步骤3:根据报文当前的信息查找路由(包括策略路由),如果找到路由,则进入步骤4处理;如果没有找到路由,则丢弃报文;
步骤4:查找安全策略,如果安全策略允许报文通过且之前并未匹配过NAT策略(目的NAT或者双向NAT),则进行步骤5处理;如果安全策略允许报文通过且之前匹配过双向NAT,则直接进行源地址转换,然后创建会话并进入步骤6处理;如果安全策略允许报文通过且之前匹配过目的NAT,则直接创建会话,然后进行步骤6处理;如果安全策略不允许报文通过,则丢弃报文;
步骤5:查找NAT策略中源NAT,如果报文符合源NAT的匹配条件,则转换报文的源地址,然后创建会话;如果报文不符合源NAT的匹配条件,则直接创建会话;
步骤6:防火墙发送报文。
源NAT技术
源NAT技术概述
背景:企业或家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的是公有地址。私有地址不能在公网中通信。
解决方案:多个用户共享少量公网地址访问Internet的时候,可以使用源NAT技术来实现。
源NAT技术只对报文的源地址进行转换;
源NAT技术可以分为NAT No-PAT、NAPT、Easy IP和三元组NAT等。
NAT No-PAT原理
NAT No-PAT(No-Port Address Translation,也就是动态NAT,非端口地址转换)是一种只转换地址,不转换端口,实现私网地址与公网地址一对一的地址转换方式。NAT No-PAT无法提高公有地址利用率。
NAT No-PAT适用于上网用户较少且公网地址数与同时上网的用户数量相同的场景。
当内部PC1和PC2需要访问公网的主机时,防火墙使用NAT从地址池选择公网地址进行映射,如果配置了No-PAT参数,那么设备会对内网IP和外网IP进行一对一的映射,而不进行端口转换。
如果地址池用尽了,只能等地址释放才能转换
转换后会生成对应的server-map,防火墙根据server-map进行转发
NAPT原理
NAPT(Network Address and Port Translation,网络地址端口转换)是一种同时转换地址和端口,实现多个私网地址共用一个或多个公网地址的地址转换方式。NAPT可以有效地提高公有地址利用率。
NAPT适用于公网地址数量少,需要上网的私网用户数量大的场景。
NAPT借助端口可以实现一个公有地址同时对应多个私有地址。该模式同时对IP地址和端口号进行转换,实现不同私有地址(不同的私有地址,不同的源端口)映射到同一个公有地址(相同的公有地址,不同的源端口)。
源NAT的两种转换方式的区别
源NAT有多种转换方式,这里只介绍其中的两种:
不带端口转换的地址池方式(No-PAT)
带端口转换的地址池方式(NAPT)
Easy IP:实现原理和NAPT相同,同时转换IP地址和传输层端口,区别在于Easy IP没有地址池的概念,使用出接口的公网IP地址作为NAT转后的地址。
Easy IP适用于不具备固定公网IP地址的场景。例如:拨号上网(PPPoE)。
PPPoE(PPP over Ethernet)是在以太网链路上运行PPP协议,在小区组网等一系列应用中被广泛采用。
三元组NAT
三元组NAT是一种转换时同时转换地址和端口,实现多个私网地址共用一个或多个公网地址的地址转换方式。
三元组NAT允许Internet上的用户能主动访问私网用户,如文件共享、语音通信和视频传输等。
当Host A访问Host B时,防火墙的处理流程如下:
防火墙收到Host A发送的报文后,根据目的IP地址判断报文需要在Trust区域和Untrust区域之间流动,通过域间安全策略检查后继而查找域间NAT策略,发现需要对报文进行地址转换。
防火墙从NAT地址池中选择一个公网IP地址,替换报文的源IP地址为1.1.1.10,替换报文的端口号2296,并建立会话表和Server-map表,然后将报文发送至Host B。
防火墙收到Host B响应Host A的报文后,通过查找会话表匹配到之前建立的表项,将报文的目的IP地址替换为192.168.1.2,端口号替换为6363,然后将报文发送至Host A。
防火墙上生成的Server-map表中存放Host的私网IP地址与公网IP地址的映射关系。
正向Server-map表项保证内部PC转换后的地址和端口不变;
反向Server-map表项允许外部设备可以主动访问内部PC。
源NAT策略配置举例
需求描述:
某公司在网络边界处部署了防火墙作为安全网关。为了使私网中10.1.1.0/24网段的用户可以正常访问Internet,需要在防火墙上配置源NAT策略;
除公网接口IP地址之外,公司还向运营商申请了6个IP地址(1.1.1.10 ~ 1.1.1.15)作为私网地址转换后的公网地址。如图所示,其中Router是运营商提供的接入网关。
配置思路:
配置接口IP地址和安全区域,完成网络基本参数配置;
配置安全策略,允许私网指定网段与Internet进行报文交互;
配置NAT地址池,配置时开启允许端口转换,以实现公网地址复用;
配置源NAT策略,实现私网指定网段访问Internet时自动进行源地址转换;
在防火墙上配置缺省路由,使私网与运营商路由器流量可以正常互通。
将防火墙接口加入相应的安全区域。
[FW] firewall zone trust
[FW-zone-trust] add interface GigabitEthernet 0/0/1
[FW-zone-trust] quit
[FW] firewall zone untrust
[FW-zone-untrust] add interface GigabitEthernet 0/0/2
[FW-zone-untrust] quit
配置安全策略,允许私网指定网段与Internet进行报文交互。
[FW] security-policy
[FW-policy-security] rule name policy1
[FW-policy-security-rule-policy1] source-zone trust
[FW-policy-security-rule-policy1] destination-zone untrust
[FW-policy-security-rule-policy1] source-address 10.1.1.0 24
[FW-policy-security-rule-policy1] action permit
[FW-policy-security-rule-policy1] quit
配置NAT地址池,配置时开启允许端口地址转换,实现公网地址复用。
[FW] nat address-group group1
[FW-address-group-addressgroup1] mode pat
[FW-address-group-addressgroup1] section 0 1.1.1.10 1.1.1.15
[FW-address-group-addressgroup1] route enable
配置源NAT策略,实现私网指定网段访问Internet时自动进行源地址转换。
[FW] nat-policy
[FW-policy-nat] rule name policy1
[FW-policy-nat-rule-policy1] source-zone trust
[FW-policy-nat-rule-policy1] destination-zone untrust
[FW-policy-nat-rule-policy1] source-address 10.1.1.0 24
[FW-policy-nat-rule-policy1] action source-nat address-group group1
在防火墙上配置缺省路由,使私网流量可以正常转发至运营商的路由器。
在私网主机上配置缺省网关,使私网主机访问Internet时,将流量发往防火墙。
目的NAT技术
目的NAT概述
目的NAT是指对报文中的目的地址和端口进行转换。通过目的NAT技术将公网IP地址转换成私网IP地址,使公网用户可以利用公网地址访问内部Server。
当外网用户访问内部Server时,防火墙的处理过程如下:
当外网用户访问内网Server的报文到达防火墙时,防火墙将报文的目的IP地址由公网地址转换为私网地址;
当回程报文返回至防火墙时,防火墙再将报文的源地址由私网地址转换为公网地址。
根据转换后的目的地址是否固定,目的NAT分为静态目的NAT和动态目的NAT。
静态目的NAT
静态目的NAT是一种转换报文目的IP地址的方式,且转换前后的地址存在一种固定的映射关系。
通常情况下,出于安全的考虑,不允许外部网络主动访问内部网络。但是在某些情况下,还是希望能够为外部网络访问内部网络提供一种途径。
当Host访问Server时,防火墙的处理过程如下:
防火墙收到Internet上用户访问1.1.1.10(Server对外发布的公网IP地址)的报文的首包后,将匹配NAT策略的报文的目的地址进行转换。
防火墙选择一个私网IP地址,替换报文的目的地址,同时可以选择使用新的端口替换目的端口号或者端口号保持不变。公网地址与私网地址一对一进行映射的场景下,公网地址与目的地址池地址按顺序一对一进行映射,防火墙从地址池中依次取出私网IP地址,替换报文的目的地址。
报文通过安全策略后,防火墙建立会话表,然后将报文发送至内网服务器。
防火墙收到Server响应Host的报文后,通过查找会话表匹配到步骤3中建立的表项,用原Host报文的目的地址(1.1.1.10)替换Server的IP地址(192.168.1.2),然后将报文发送至Host。
后续Host继续发送给Server的报文,防火墙都会直接根据会话表项的记录对其进行转换。
动态目的NAT
动态目的NAT是一种动态转换报文目的IP地址的方式,转换前后的地址不存在一种固定的映射关系。
通常情况下,静态目的NAT可以满足大部分目的地址转换的场景。但是在某些情况下,希望转换后的地址不固定。例如,移动终端通过转换目的地址访问无线网络。
当Host访问Server时,防火墙的处理过程如下:
防火墙收到Host发送的报文后,将匹配NAT策略的报文进行目的地址转换,从地址池中随机选择一个地址作为转换后的地址,将报文的目的IP地址由172.16.16.2转换为192.168.1.2;
防火墙通过域间安全策略检查后建立会话表,然后将报文发送至Server;
防火墙收到Server响应Host的报文后,通过查找会话表匹配到相应的表项,将报文的源地址替换为172.16.16.2,然后将报文发送至Host。
目的NAT策略配置举例
需求描述:
某公司在网络边界处部署了防火墙作为安全网关。为了使私网Web服务器能够对外提供服务,需要在防火墙上配置目的NAT;
除了公网接口的IP地址外,公司还向运营商申请了IP地址(1.1.10.10)作为内网服务器对外提供服务的地址。网络环境如图所示,其中Router是运营商提供的接入网关。
配置思路:
配置接口IP地址和安全区域,完成网络基本参数配置;
配置安全策略,允许外部网络用户访问内部服务器;
通过目的NAT,使得外网用户能够访问内部服务器时,防火墙将流量能够送给内网的服务器;
在防火墙和Router上配置缺省路由,使内网服务器与运营商路由器流量可以正常互通。
将防火墙接口加入相应的安全区域。
[FW] firewall zone DMZ
[FW-zone-dmz] add interface GigabitEthernet 0/0/2
[FW-zone-dmz] quit
[FW] firewall zone untrust
[FW-zone-untrust] add interface GigabitEthernet 0/0/1
[FW-zone-untrust] quit
配置安全策略,允许外部网络用户访问内部服务器。
[FW] security-policy
[FW-policy-security] rule name policy1
[FW-policy-security-rule-policy1] source-zone untrust
[FW-policy-security-rule-policy1] destination-zone dmz
[FW-policy-security-rule-policy1] destination-address 10.2.0.0 24
[FW-policy-security-rule-policy1] action permit
[FW-policy-security-rule-policy1] quit
配置目的NAT地址池,配置时开启允许端口地址转换,实现公网地址复用。
[FW1]destination-nat address-group group1
[FW1-dnat-address-group-group1]section 10.2.0.7 10.2.0.8
[FW-address-group-group1] quit
配置目的NAT策略,使得外网用户能够访问内部服务器时,防火墙将流量能够送给内网的服务器。
[FW] nat-policy
[FW-policy-nat] rule name policy1
[FW-policy-nat-rule-policy1] source-zone untrust
[FW-policy-nat-rule-policy1] destination-address 1.1.10.10 1.1.10.11
[FW-policy-nat-rule-policy1] service http
[FW-policy-nat-rule-policy1] action destination-nat static address-to-address address-group group1
[FW-policy-nat-rule-policy1] quit
双向NAT技术
双向NAT
双向NAT指的是在转换过程中同时转换报文的源/目的IP地址。双向NAT不是一个单独的功能,而是源NAT和目的NAT的组合。
双向NAT是针对同一条流,在其经过防火墙时同时转换报文的源地址和目的地址。
双向NAT主要应用在以下两个场景:
▫外网用户访问内部服务器;
▫私网用户访问内部服务器。
当外部网络中的用户访问内部服务器时,使用该双向NAT功能同时转换该报文的源和目的地址可以避免在内部服务器上设置网关,简化配置。
如图所示,当Host访问Server时,防火墙的处理过程如下:
▫防火墙对匹配双向NAT处理的策略的报文进行地址转换;
▫防火墙从目的NAT地址池中选择一个私网IP地址替换报文的目的IP地址,同时使用新的端口号替换报文的目的端口号;
▫判断是否满足安全策略的要求,通过安全策略后从源NAT地址池中选择一个私网IP地址替换报文的源IP地址,同时使用新的端口号替换报文的源端口号,并建立会话表,然后将报文发送至Intranet;
▫防火墙收到Server响应Host的报文后,通过查找会话表匹配到建立的表项,将报文的源地址和目的地址替换为原先的IP地址,将报文源和目的端口号替换为原始的端口号,然后将报文发送至Internet。
NAT ALG与NAT Server
NAT ALG概述
ASPF与NAT ALG两者区别如下:
ASPF功能的主要目的是通过对应用层协议的报文分析,为其开放相应的包过滤规则;
NAT ALG(Application Level Gateway,应用级网关)的主要目的是为其开放相应的NAT规则;
由于两者通常都是结合使用的,所以使用同一条命令就可以将两者同时开启。
多通道协议和一些应用层数据字段,NAT无法转换,而NAT ALG对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。
NAT ALG实现原理
私网侧的主机要访问公网的FTP服务器。NAT设备上配置了私网地址192.168.1.2到公网地址2.1.1.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。
整个通信过程包括如下四个阶段:
私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接;
控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接;
PORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址2.1.1.11,端口1084转换成12487;
公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为2.1.1.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是FTP服务器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。
NAT Server
NAT Server也称静态映射,是一种转换报文目的IP地址的方式,它提供了公网地址和私网地址的映射关系,将报文中的公网地址转换为与之对应的私网地址
如图所示,当Host访问Server时,防火墙的处理过程如下:
防火墙收到Internet上用户访问1.1.1.10的报文的首包后,查找并匹配到Server-Map表项,将报文的目的IP地址转换为192.168.1.2;
防火墙根据目的IP地址判断报文需要在Untrust区域和DMZ区域之间流动,通过域间安全策略检查后建立会话表,然后将报文发送至Intranet;
防火墙收到Server响应Host的报文后,通过查找会话表匹配到上一步骤中建立的表项,将报文的源地址替换为1.1.1.10,然后将报文发送至Internet;
后续Host继续发送给Server的报文,防火墙都会直接根据会话表项的记录对其进行转换,而不会再去查找Server-map表项。
另外,防火墙在进行地址映射的过程中还可以选择是否允许端口转换,是否允许服务器采用公网地址上网,以满足不同场景的需求。
NAT Server配置举例
需求描述:
某公司在网络边界处部署了防火墙作为安全网关。为了使FTP服务器能够对外提供服务,需要在防火墙上配置NAT Server功能。
除了公网接口的IP地址外,公司还向运营商申请了一个IP地址(1.1.1.10)作为内网服务器对外提供服务的地址。网络环境如图所示,其中Router是运营商提供的接入网关。
配置思路:
配置接口IP地址和安全区域,完成网络基本参数配置;
配置安全策略,允许外部网络用户访问内部服务器;
通过配置NAT Server,分别映射FTP服务器;
通过开启FTP协议的NAT ALG功能,完成应用层数据中携带的地址及端口号信息的转换;
在防火墙跟Router上配置缺省路由,使内网服务器与运营商路由器流量可以正常互通。
将防火墙接口加入相应的安全区域。
[FW] firewall zone dmz
[FW-zone-dmz] add interface GigabitEthernet 0/0/2
[FW-zone-dmz] quit
[FW] firewall zone untrust
[FW-zone-untrust] add interface GigabitEthernet 0/0/1
[FW-zone-untrust] quit
配置安全策略,允许外部网络用户访问内部服务器。
[FW] security-policy
[FW-policy-security] rule name policy1
[FW-policy-security-rule-policy1] source-zone untrust
[FW-policy-security-rule-policy1] destination-zone dmz
[FW-policy-security-rule-policy1] destination-address 10.2.0.0 24
[FW-policy-security-rule-policy1] action permit
[FW-policy-security-rule-policy1] quit
配置NAT Server功能。
[FW] nat server policy_ftp protocol tcp global 1.1.1.10 ftp inside 10.2.0.8 ftp unr-route
开启FTP协议的NAT ALG功能。
[FW] firewall interzone dmz untrust
[FW-interzone-dmz-untrust] detect ftp
[FW-interzone-dmz-untrust] quit
配置缺省路由,使内网服务器对外提供的服务流量可以正常转发至运营商的路由器。
[FW] ip route-static 0.0.0.0 0.0.0.0 1.1.1.254