防火墙NAT技术简介
NAT(Network Address Translation)是一种地址转换技术,可以将IPv4报文头中的地址转换为另一个地址。通常情况下,利用NAT技术将IPv4报文头中的私网地址转换为公网地址,可以实现位于私网的多个用户使用少量的公网地址同时访问Internet。因此,NAT技术常用来解决随着Internet规模的日益扩大而带来的IPv4公网地址短缺的问题。
NAT类型:
根据转化方式的不同,NAT可以分为三类:
源NAT,源地址转化的NAT。
有:NO—PAT, NAPT, Easy_ip,Smart_nat, 三元组NAT
目的NAT:将目的地址做转化。
有:NAT-Server, SLB
双向NAT:即做源地址转化,又做目的地址转化。
NAT基本概念:
NAT地址池: 是指用NAT转换时用于分配公网的IP地址范围。进行转换时,设备会从该地址池中选择一个地址,用于替换报文的源IP地址。
源NAT技术
源NAT简介:
源NAT是指对报文中的源地址进行转换。
通过源NAT技术将私网IP地址转换成公网IP地址,使私网用户可以利用公网地址访问Internet。
No-PAT:
NAT No-PAT是一种NAT转换时只转换地址,不转换端口,实现私网地址到公网地址一对一的地址转换方式。适用于上网用户较少且公网地址数与同时上网的用户数量相同的场景。
此方式下,公网地址和私网地址属于一对一转换。如果地址池中的地址已经全部分配出去,则剩余内网主机访问外网时不会进行NAT转换,直到地址池中有空闲地址时才会进行NAT转换。
no_pat可以产生Server-map,但需要流量的触发
FW上生成的Server-map表中存放Host的私网IP地址与公网IP地址的映射关系。
正向Server-map表项保证特定私网用户访问Internet时,快速转换地址,提高了FW处理效率。
正向Server-map作用:地址转换映射,加速转发
反向Server-map表项允许Internet上的用户主动访问私网用户,将报文进行地址转换。
反向server-map作用:为外网用户主动访问内网用户,匹配映射。
NAT NO-PAT有两种:
本地(Local)NO-PAT
本地NO-PAT生成的Server-Map表中包含安全区域参数,只有此安全区域的Server可以访问内网Host。
全局(Global)NO-PAT
全局NO-PAT生成的Server-Map表中不包含安全区域参数,一旦建立,所有安全区域的Server都可以访问内网Host。
防火墙在选地址池中的地址时,根据轮询算法从NAT地址池中国选择一个空闲的地址。
注意:源NAT策略放行转化之前的地址。因为先匹配安全策略。再匹配NAT策略。
No-PAT配置思路:
1 | 第一步: 配置地址池 |
配置黑洞路由的原因:
如果地址池地址和出接口不在同一段,会发现环路
解决方案: 必须配置黑洞路由
ip route-static 1.1.1.2 255.255.255.255 NULL0如果地址池地址和出接口在同一个网段,不会发生环路,但会多一个ARP请求
解决方案:建议配置黑洞路由
NAPT:
NAPT是一种转换时同时转换地址和端口,实现多个私网地址共用一个或多个公网地址的地址转换方式。适用于公网地址数量少,需要上网的私网用户数量大的场景。
FW根据源IP Hash算法从NAT地址池中选择一个公网IP地址,替换报文的源IP地址。一个源IP会固定使用那个地址。
NAPT方式不会生成Server-map表,这一点也与NAT No-PAT方式不同。
NAPT配置思路:
1 | 第一步:配置地址池 |
Napt为什么不会产生Server-map?
如果产生,需要大量表现,消耗资源,影响性能。
natp需要配置黑洞路由不?
两种情况:
第一种情况:地址池地址与出接口在不同网段,会形成环路
解决方案:配置路由黑洞
ip route-static 1.1.1.2 255.255.255.255 NULL0第二种情况:地址池地址与出接口在同一个网段,不会形成环路,但会多一个ARP请求
ip route-static 202.100.1.200 255.255.255.255 NULL0
华为NAT复用技术:地址池,端口的选择
地址池地址的选择是随机的吗?
地址池中的地址选择不是随机的,而是按照一定的算法来选择。
X —- 表示需要被转化的地址 10.0.0.1 - 10.10.10.10
Y—–地址池地址 202.100.1.1 - 202.100.1.5
Y = 5 (地址池中地址的个数,外网地址个数)
算法:X / Y 取余数:
- 当余数为0的时候,对应地址池的第一个地址,202.100.1.1
- 1 202.100.1.2
基于源IP地址做Hash,来选择一个地址池中的地址,一个源IP会固定使用那个选择的地址
端口是不是随机的?
端口的分配是随机的,但是可能会冲突。
端口冲突检测技术:
Z —代表端口值,利用(地址池地址 协议 目的地址 目的端口)参数进行某种数学算法,求出端口Z。
例如:Z = 2000 ,与会话表的端口比较,如果相同端口执行Z++。 2049,继续检测。
Easy IP:
Easy IP是一种利用出接口的公网IP地址作为NAT转后的地址,同时转换地址和端口的地址转换方式。对于接口IP是动态获取的场景,Easy IP也一样支持。
Easy ip配置思路:
1 | nat-policy |
Easy ip不会产生Server-map
不需要配置黑洞路由。
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 | 1.配置nat地址池: |
三元组NAT:
三元组:源IP,源端口,协议号。 为PAT产生server-map,老化时间内保持不变。
支持外网主动访问,保障P2P应用。
动态端口对外一致性。
三元组NAT是一种转换时同时转换地址和端口,实现多个私网地址共用一个或多个公网地址的地址转换方式。它允许Internet上的用户主动访问私网用户,与基于P2P技术的文件共享、语音通信、视频传输等业务可以很好地共存。
当内网PC访问Internet时,如果FW采用五元组NAT(NAPT)方式进行地址转换,外部设备无法通过转换后的地址和端口主动访问内部PC。
三元组NAT方式可以很好的解决上述问题,因为三元组NAT方式在进行转换时有以下两个特点:
三元组NAT的端口不能复用,保证了内部PC对外呈现的端口的一致性,不会动态变化,但是公网地址利用率低。
支持外部设备通过转换后的地址和端口主动访问内部PC。FW即使没有配置相应的安全策略,也允许此类访问报文通过。
通过生成Server-map来实现。
FW上生成的Server-map表中存放Host的私网IP地址与公网IP地址的映射关系。
- 正向Server-map表项保证内部PC转换后的地址和端口不变。
- 反向Server-map表项允许外部设备可以主动访问内部PC。
三元组NAT有两种:
本地(Local)三元组NAT
本地三元组NAT生成的Server-Map表中包含安全区域参数,只有此安全区域的Host可以访问内网Host。
全局(Global)三元组NAT
全局三元组NAT生成的Server-Map表中不包含安全区域参数,一旦建立,所有安全区域的Host都可以访问内网Host。
FW支持Smart三元组NAT功能,可以根据报文的目的端口来选择分配端口的模式,在一定程度上提高公网地址的利用率。当报文的目的端口属于设置的端口范围之内,就采用NAPT模式来分配端口,如果报文的目的端口不属于设置的端口范围之内,则采用三元组NAT模式来分配端口。
三元组nat配置:
1 | 1.配置地址池 |
端点无关过滤功能:
firewall endpoint-independent filter enable
该命令只对NAT三元组、NAT64三元组和PCP生效,对DS-Lite三元组不生效。
开启端点无关过滤功能后,当Internet上的用户主动访问位于内部网络的用户时,将会匹配三元组的目的Server-map表或PCP映射表(Server-map表),FW根据目的Server-map表中的转换关系进行地址转换,然后不进行域间安全策略处理,直接转发报文。如果没有开启端点无关过滤功能,则还是会查找域间安全策略规则,由安全策略规则决定是否转发报文。
管理员可以根据实际需要选择开启端点无关过滤功能,或者在安全域间配置安全策略规则。
缺省情况下,端点无关过滤功能处于开启状态。
源NAT技术对比:
NAT ALG
作用:解决应用层信息的转换
出现的原因:NAT只能IP和TCP/UDP,不能对应用层信息进行转换
开启命令: firewall detect ftp
NAT ALG 与ASPF相同与不同:
相同点:
- 一条命令开启两个功能
不同点:
ASPF——产生临时的安全通道,识别协议
NAT ALG——-转换应用信息
NAT ALG简介:
通常情况下,NAT只对报文中IP头部的地址信息和TCP/UDP头部的端口信息进行转换,不关注报文载荷的信息。但是对于一些特殊的协议(如FTP协议),其报文载荷中也携带了地址或端口信息,而报文载荷中的地址或端口信息往往是由通信的双方动态协商生产的,管理员并不能为其提前配置好相应的NAT规则。如果提供NAT功能的设备不能识别并转换这些信息,将会影响到这些协议的正常使用。
FW提供NAT ALG(Application Level Gateway)功能,可以对报文的载荷字段进行解析,识别并转换其中包含的重要信息,保证类似FTP的多通道协议可以顺利的进行地址转换而不影响其正常使用。
下面以FTP(File Transfer Protocol)协议为例,简要描述其工作原理。
FTP协议的NAT ALG处理:
FTP协议是一个典型的多通道协议,在其工作过程中,FTP Client和FTP Server之间将会建立两条连接(也称为通道):控制连接和数据连接。控制连接用来传输FTP指令和参数,数据连接用来传输数据。
FTP协议包括两种工作模式:主动模式和被动模式。主动模式中,FTP Server主动向FTP Client发起数据连接;被动模式中,FTP Server被动接收FTP Client发起的数据连接。无论是主动模式还是被动模式,在控制连接交互报文的载荷中,都包含用于建立数据连接的IP地址和端口号信息。
如果在FTP Client和FTP Server之间部署了NAT设备,这就要求NAT设备必须能够识别出控制连接中包含的IP地址和端口号并进行处理,否则数据连接无法成功建立,FTP协议不能正常工作。
下面以FTP协议工作在主动模式为例,介绍NAT ALG功能对FTP协议的处理过程。
FTP Client位于私有网络,FTP Server位于公共网络。FW对FTP协议的报文处理过程如下:
- FTP Client通过源NAT地址转换后可以访问FTP Server,与FTP Server完成FTP控制连接的TCP三次握手,并交付用户名和密码信息。
- FW收到FTP Client发送的PORT命令报文后,将报文载荷字段中携带的私网地址和端口替换为公网地址和新的端口,然后发送至FTP Server。
- FW收到FTP Server请求建立数据连接的报文后,替换报文的目的地址和目的端口为原始的地址和端口,然后发送至FTP Client。由此保证数据连接可以成功建立,FTP协议正常工作。
除FTP协议外,FW还支持对DNS、H.323、ICQ、ILS、MMS、MSN、NETBIOS、PPTP、QQ、RSH、RTSP、SCCP、SIP和SQLNET协议提供NAT ALG功能。
NAT ALG与ASPF的关系:
差异点:
- 开启ASPF功能的目的是识别多通道协议,并自动为其开放相应的安全策略。
- 开启NAT ALG功能的目的是识别多通道协议,并自动转换报文载荷中的IP地址和端口信息。
共同点:二者使用相同的配置。开启其中一个功能,另一功能同时生效。
开启命令:firewall detect protocol
目的NAT技术
目的nat简介:
目的NAT是指对报文中的目的地址和端口进行转换。
配置思路:
1 | 配置思路 |
Nat Server:
NAT-Server—–服务器映射
既可以转换目的地址,又可以转换目的端口
语法:
1 | nat server name zone untrust protocol tcp global 202.100.1.20 80 inside 192.168.1.1 80 |
注:只要配置NAT-Server,就会产生Server-map,不需要流量的触发。 默认一直存在,直到NAT-Server被删除,Server-map才会消失。
配置思路:
1 | 第一步:配置NAT -Server(全局配置) |
nat server中产生Server-map的作用:
- 正向作用: 只是做映射关系,加速转发
- 反向作用:让服务器主动发起访问internet(前提是安全策略要放行)
1 |
|
no-reverse:
配置指定no-reverse参数的NAT Server来实现同一个内部服务器发布多个公网IP供外部网络访问的需求时,由于配置了no-reverse参数,内部服务器将无法主动访问外部网络。此时,如果内部服务器想要访问外部网络,需要在内部服务器所在区域和外部网络所在区域的域间配置源NAT策略,将服务器的私网地址转换为公网地址。源NAT策略中引用的地址池可以是global地址也可以是其他的公网地址。
默认配置reverse,配置reverse的优缺点:
优点:
服务器上网的源NAT转换不需要配置了。节省配置缺点:
只转换IP地址,不转换端口
Server-map要不是reverse 32字真言:
一去一返 ,来去自如
正向作用:映射关系
反向作用:提供服务器上网
去反存正,自断其路
场景:IPSEC VPN场景 +NAT-Server+源NAT
在该场景下:因为nat-server产生的server-map,优先级大于源nat策略。此时,则不能触发IPSec VPN的感兴趣流。所以不能产生反向server-map。
解决方案:
不能产生反向Server-map ,加上参数no-reverse
nat server NAT_Server zone untrust protocol tcp global 202.100.1.20 www inside 192.168.1.1 www no-reversel另外:解决源转换问题—–配置NAT豁免(NAT旁路)
一分为二,源进源出
针对多出口的环境配置NAT-Server ,解决inside地址重复:
方案一: 如果接口来自的不同的ZONE,NAT-Server配置不同的ZONE
nat server AAA zone isp1 global 1.1.1.10 inside 10.1.1.2
nat server BBB zone isp2 global 2.2.2.10 inside 10.1.1.2方案二接口来自相同的ZONE,配置no-reverse
nat server AAA zone isp1 global 1.1.1.10 inside 10.1.1.2 no-reverse
nat server BBB zone isp1 global 2.2.2.10 inside 10.1.1.2 no-reverse
针对来回路径不一致的场景配置NAT-Server
解决方案:配置源进源出(高于路由表,除了直连路由)USG6000序列
int xxxx
reverse-route nexthop X.X.X.XUSG9000序列
int xxxx
redirect-reverse next-hop X.X.X.XUSG6000V
int xxxx
redirect-reverse enableredirect-reverse命令用来开启报文从同一接口进入和发出功能。
虚假变化,合二为一
针对双机热备,配置NAT-Server会产生免费APR的冲突 (针对于USG2000/5000 V3R1)
解决方案:
nat server qyt global 202.100.1.100 inside 10.1.1.1 vrrp 2USG6000 9000不需要绑定。
Nat-server需要配置黑洞路由吗?
分情况:
粗矿的NAT-Server:可以匹配会话表。
nat server nat_server 0 global 1.1.1.1 inside 10.1.1.1 ——-不需要黑洞路由精确的NAT-Server :只能匹配tcp:80端口。其他不能匹配。所以有环。
nat server nat_server 0 protocol tcp global 1.1.1.1 80 inside 10.1.1.1 80 ——需要黑洞路由
不同的网段(公网地址与出接口在不同的网段)一定要配置黑洞路由,相同的网段呢(公网地址与出接口在同一网段)建议配置黑洞路由
解决方案:
ip route-static 1.1.1.1 255.255.255.255 NULL0 (不同段的)
ip route-static 202.100.1.200 255.255.255.255 NULL0(同一个段的)
SLB 服务器负载均衡:
只要创建SLB,就会产生SERVER-MAP
算法:
轮询算法 ———-加权
最小连接————加权
会话保持(源HASH算法)——–加权
配置思路:
1 | 第一步:启动SLB |
参考文档:华为HedEx 文档。
双向NAT技术
双向nat:
针对同一数据流,如果需要同时改变报文的源地址和目的地址,就可以配置“源NAT + NAT Server”,称此类NAT技术为双向NAT。
域间双向NAT:
当外部网络中的用户访问内部服务器时,使用该双向NAT功能同时转换该报文的源和目的地址可以避免在内部服务器上设置网关,简化配置。
如下图:untrust区域PC访问DMZ区域Server。源IP由11.1.1.20转化为192.168.1.20,目的IP由202.100.1.20转化为192.168.1.1.报文的源地址和目的地址同时进行了转化,完成了双向NAT。
NAT Server + 源NAT配置的最大优势为,服务器可以不用设置网关。
配置思路:
1 | 第一步:配置NAT-Server |
域内双向NAT:
私网用户与内部服务器在同一安全区域同一网段时,私网用户希望像外网用户一样,通过公网地址来访问内部服务器的场景。
由于私网用户与死亡服务器被规划到同一个网络中,为了提高内部网络的安全性,使私网服务器的回应报文也经过防火墙,就需要配置域内NAT。
配置思路:
1 | 配置思路: |
参考资料:华为HedEx文档