学习防火墙之前,对路由交换应要有一定的认识
- 源NAT基本原理
- 1.1.NAT No-PAT
- 1.2.NAPT
- 1.3.出接口地址方式(Easy IP)
- 1.4.Smart NAT
- 1.5.三元组 NAT
- 1.6.多出口场景下的源NAT
- 总结
- 延伸
——————————————————————————————————————————————————
源NAT基本原理
源NAT技术对IP报文的源地址进行转换,将私网IP转换成公网IP,大大减少了公网IP的消耗。
当私网用户访问Internet报文到达防火墙时,防火墙将报文的源IP地址由私网地址转换为公网地址,当回程报文返回至防火墙,防火墙再将报文的目的地址由公网IP转换为私网地址。
华为防火墙支持的源NAT转换方式:
每一种NAT转换方式都曾在IP网络中走过秀、亮过相,都有自己的特色,但也有自己的不足。
——————————————————————————————————————————————————
1.1.NAT No-PAT
No-PAT表示不进行端口转换,只转换IP地址,所以也称为:一对一地址转换。
下面介绍No-PAT方式过程,假设防火墙和WEB服务器之间路由可达。。
配置NAT地址池和NAT策略
配置地址池
nat address-group GW 1mode no-pat global local和global参数,global生成的Server-map表项不包含安全域参数,不受域间限制,local包含安全区域参数,受域间限制section 0 210.1.1.5 210.1.1.10 地址池有5个公网IProute enable 用来开启NAT地址池中地址的OPR路由下发功能配置NAT
nat-policy
rule name source_natsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action source-nat address-group GW 配置NAT策略规则的动作,表示源NAT地址转换,引用地址池
配置完NAT,还需要配置安全策略和黑洞路由。
安全策略和NAT策略二者各司其职,安全策略控制报文是否能通过防火墙,而NAT策略作用是对报文地址进行转换。因此配置NAT的时候需要配置安全策略允许报文通过。
由于防火墙对报文进行安全策略处理发生在进行NAT策略处理之前,所以如果要针对源地址设置安全策略,源地址应该是进行NAT转换之前的私网地址。
security-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
配置黑洞路由,为了避免产生环路,在防火墙上针对地址池中的公网IP地址配置黑洞路由。
有两种方式:
ip route-static方式
ip route-static 210.1.1.5 255.255.255.255 NULL0
ip route-static 210.1.1.6 255.255.255.255 NULL0
ip route-static 210.1.1.7 255.255.255.255 NULL0
ip route-static 210.1.1.8 255.255.255.255 NULL0
ip route-static 210.1.1.9 255.255.255.255 NULL0
ip route-static 210.1.1.10 255.255.255.255 NULL0
route enable 方式
nat address-group GW 1route enable
当NAT地址池地址与出接口地址不在同一网段时,必须配置黑洞路由;当NAT地址池地址与出接口地址在同一网段时,建议配置黑洞路由。
当地址池地址与出接口地址一致时,不会产生路由环路,不需配置黑洞路由。产生的原因后续会介绍。
在配置策略后,可以访问210.1.1.2。
查看会话表,会话表中两个私网地址都分别转换了2个不同的公网IP,而端口没有转换,使用随机端口。
NAT No-PAT方式也会生成Server-map表,而且生成了正向和反向两张表。
这里生成的正向Server-map表,Type:No-Pat,作用是保证特定私网用户访问Internet快速转换地址。在老化时间范围内,直接命中该表,提高转换效率。同理,Type:No-Pat Reverse,反向主动访问私网用户报文,也命中反向Server-map表直接进行地址转换。
命中server-map表后,还需要检查安全策略是否通过。Server-map表在NAT里叫alg功能。在多通道协议里叫ASPF。
总结:如果私网地址过多大于地址池的话,需要等待地址池地址释放后,其他私网地址用户才可以访问WEB服务器,在No-Pat转换方式中,一个公网IP地址不能同时被大于多个私网用户使用。并没有起到节省IP的作用。
——————————————————————————————————————————————————
1.2.NAPT
NAPT表示网络地址和端口转换,即同时对IP地址和端口进行转换,也可称为 PAT。
NAPT 是一种应用最广泛的地址转换方式,可以利用少量的公网 IP 地址来满足大量私网用户访问Internet的需求。
NAPT方式和NAT No-PAT在配置上区别仅在于:NAPT方式NAT策略在引用NAT地址池时,不配置关键字no-pat。
和上案例其他配置一样。
配置NAT地址池和NAT策略
配置地址池
nat address-group GW 1mode pat section 0 210.1.1.5 210.1.1.10 route enable 配置NAT
nat-policy
rule name source_natsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action source-nat address-group GW 配置安全策略
security-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
会话表可以看出,两个私网地址分别转换公网地址,同时端口也转换为新的端口。在地址池选择地址的时候,设备是随机选择。
再次观察,192.168.20.2第一条,转换的IP210.1.1.6,端口为2051。192.168.10.2第六条,转换IP210.1.1.6,端口为2052。
私网用户共用一个公网IP,但是端口不一样。也就不必担心转换冲突的问题。
NAPT方式不会产生server-map表项,与NAT No-Pat不同。
——————————————————————————————————————————————————
1.3.出接口地址方式(Easy IP)
出接口地址方式Easy-IP:是利用出接口的公网IP地址作为NAT 转换后的地址,也同时转换地址和端口,一个公网IP地址可以同时被多个私网用户使用。
出接口方式比较特殊,如果防火墙公网接口通过动态获取IP时,想用一个公网IP地址来进行转换,不能在地址池中配置固定地址。因为公网IP是可变的,此时使用出接口方式,即使出接口获取IP发生变化,防火墙也只会按照公网IP地址进行转换。
Easy IP,不需要配置NAT地址池,也无需配置路由黑洞。只需要在NAT策略中指定出接口即可。
为了方便,用210.1.1.2服务器开启DHCP来模拟防火墙G1/0/1端口自动获取地址。
配置防火墙G1/0/1接口为自动获取地址
interface GigabitEthernet1/0/1
ip address dhcp-alloc
服务器上已经看到地址下发了。
交换机上也看到获取的地址。210.1.1.10/24
配置NAT策略
nat-policyrule name easynatsource-zone trustsource-zone untrustegress-interface GigabitEthernet1/0/1 出接口方式source-address 192.168.0.0 mask 255.255.0.0action source-nat easy-ipsecurity-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
两个私网用户IP地址已经转换为接口的公网IP地址,同时端口也转换为新的端口。
和NAPT一样,Easy-IP方式不会生成Server-map表。
——————————————————————————————————————————————————
1.4.Smart NAT
前面我们介绍过NATNO-PAT方式,一对一地址转换,NAT地址池中的公网IP地址被私网用户占用后,其他私网用户就无法再使用该公网IP地址,在这种情况下如何使其他私网用户也能访问Internet呢?
Smart NAT方式也叫做聪明的NAT,它融合了NAT No-PAT和NAPT方式特点。
其实我们可以把Smart NAT 方式理解成是对NPAT功能的增强,它克服了NO-PAT的缺点:只能让有限的私网用户访问Intermet,当私网用户数量大于地址池中公网IP地址数量时后面的私网用户将无法访问Intermet,只能等待公网IP地址被释放。
使用SmartNAT方式后,即使某一时刻私网用户数量激增Smart NAT也留有后手,即预留一个公网IP地址进行NAPT方式的地址转换这样就可以满足大量新增的私网用户的需求。
配置NAT地址池
nat address-group GW 1mode no-pat localsmart-nopat 210.1.1.10section 0 210.1.1.5 210.1.1.9route enable配置NAT策略
nat-policyrule name smartsource-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group GW配置安全策略
security-policyrule name smartsource-zone trustdestination-zone trustsource-address 192.168.0.0 mask 255.255.0.0action permit
就不过多演示,明白意思就行。只有公网IP地址被NAT No-pat转换用尽后,才会进行NATP转换。
——————————————————————————————————————————————————
1.5.三元组 NAT
前面介绍了4种源NAT,其中NAPT和Easy-IP应用最广泛,不但解决地址短缺,还隐藏内部IP。但是NAT技术与文件共享、语音通信、视频传输等方面的P2P技术不能很好的共存。当P2P业务遇到NAT的时候,产生的不是完美的NAT-P2P,而是,你可能无法下载最新影视资源,无法视频聊天等。
为了解决共存问题,需要一种新的转换方式,即三元组NAT,先看看P2P业务交互过程。
————————————————————
PC1和PC2是两台运行P2P业务的客户端,运行时首先和P2P服务器进行交互(登录、认证等操作),P2P服务器会记录客户端的地址和端口,如果PC1位于内部网络,防火墙会对PC1访问服务器的报文进行NAPT方式转换,这样P2P服务器记录的是经过转换后的公网地址和端口。当PC2需要下载文件时,服务器会将拥有该文件的客户端地址和端口发送给PC2(如PC1的IP和端口),然后PC2会向PC1发送请求,从PC1上下载文件。
过程看起来很顺畅,但对于P2P业务来说,存在两个问题。
1、为了保持联系,PC1会定期向P2P服务器发送报文,经过NAPT转换后,端口会动态变化,并不是固定的。这样P2P服务器记录的PC1地址和端口信息也要经常刷新,会影响P2P业务正常运行。
2、更重要的是,根据转发原理,只有P2P服务器返回给PC1的报文命中会话表才能通过防火墙,其他主机如PC2不能通过转换后的地址和端口来主动访问PC1,默认情况,防火墙安全策略不允许这一类访问报文通过。
三元组NAT方式可以完美解决。
1、对外呈现端口一致性
PC1访问P2P服务器后,在一段时间内,PC1再次访问P2P服务器或者访问internet其他主机时,防火墙都会将PC1的端口转换成相同的端口。这样就保证了PC1所呈现的端口一致性,不会动态变化。
2、支持外网主动访问
无论PC1是否访问过PC2,只要PC2获取到PC1经过NAT转换的IP和端口后,就可以主动向该地址和端口发起访问。防火墙及时没有配置相应的安全策略,也允许此类报文通过。
正是由于三元组NAT的这两个特点,使得P2P业务可以正常运行。
对于华为USG6000系列防火墙来说,可以通过配置ASPF来保证P2P业务的正常运行。新式的设备应该支持的越来越多。
三元组NAT方式配置如下:(三元组NAT不能配置黑洞路由,否则会影响业务)
配置NAT地址池
nat address-group GW 1mode full-cone localsection 0 210.1.1.5 210.1.1.6配置NAT策略
nat-policyrule name NATsource-zone trustsource-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group GW配置安全策略rule name NATsource-zone trustsource-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action permit
连续访问2次服务器,HTTP协议。
在一时间内,转换的端口都是固定的。
查看MAP表。由于是闲置了会,抓的,和上面的端口就有差别了。同一时间的通信,端口都是固定的。
从表中可以看出,三元组NAT生成了两条Server-map表项(FullCone Src),和目的(FullCone Des)。作用如下:
源Server-map表项(FullCone Src):
老化之前,PC1访问Untrust区域内任意主机ANY,NAT转换后的地址和端口都是210.1.1.6:61440,端口不会变化,这样就保证了PC1对外所呈现的端口一致性。
目的(FullCone Des)
表项老化之前,Untrust区域内的任意主机ANY都可以通过210.1.1.6:53248端口来访问PC1的:138端口,这样就保证了Internet上的P2P客户端可以主动访问PC1。
由此可知,三元组NAT方式通过源和目的Server-Map表项解决了P2P业务与NAT地址转换共存的问题。三元组在转换时,仅和源IP地址、源端口和协议类型这个3个元素有关,故称三元组。
————————————————————
大家又可以说,三元组NAT生成的Server-map表项不就是ASPF功能生成的Server-map表项那样,报文命中表项之后就不受安全策略控制了?其实还暗藏玄机,防火墙针对三元组NAT还支持端点无关过滤功能。
命令:firewall endpoint-independent filter enable
命令中: endpoint-independent 原意是:不关心对端地址和端口转换模式。表示一种NAT转换模式,其实可以看成三元组NAT方式另一种叫法。
endpoint-independent 使用此命令代表三元组NAT方式下控制报文是否进行安全策略检查。
开启后,报文只要命中Server-map就可以通过防火墙,不受安全策略控制。关闭后,就要配置相应的策略允许报文通过。默认情况下,防火墙是开启了端点无关过滤功能。所以说internet上的P2P客户端可以主动访问内部网络的PC1。
——————————————————————————————————————————————————
1.6.多出口场景下的源NAT
各种各样的源NAT都见识了吧,看似各种源地址转换问题都能一网打尽了,但实际上吧这些NAT理论应用在现实网络中很快就会出现告急。在多出口网络中,源NAT该何去何从?
首先,我们以防火墙通过两个出口连接Internet为例,探讨源NAT的配置方法,如图:某企业在内部网络的出口处部署了防火墙作为出口网关,通过ISP1和ISP2两条链路连接到Internet,企业内部网络中的PC有访问Internet的需求。
该场景中,防火墙面临主要问题是在转发内部网络访问Internet报文如何进行出口选路,本应该从ISP1发出的却从ISP2发出,可能会导致报文绕路到达目的地。
选路方式有很多种,如果根据报文目的地址进行选路,可以配置两条缺省路由,如果根据源地址进行选路,还可以配置策略路由。这些都不是目前的重点,后续对出口选路会详细的介绍。对于源NAT来说,无非就是报文从ISP1出去或者从ISP2出去,不管走那条路,只要在发出去之前把报文私网地址转换成相应的公网地址,源NAT作用就完成了。
我们会把防火墙ISP1和ISP2两个接口分别加入到不同的区域,然后基于内部网络所在的安全区配置源NAT策略。
下面给出配置:假设ISP1,给的公网地址是:210.1.1.5·····210.1.1.6。ISP2,给的公网地址是:110.1.1.5·····110.1.1.6。
配置区域加入端口
firewall zone name ISP1 set priority 20add interface GigabitEthernet1/0/1
#
firewall zone name ISP2set priority 21add interface GigabitEthernet1/0/0配置地址池
nat address-group ISP1 2section 0 210.1.1.5 210.1.1.6route enable
nat address-group ISP2 3section 0 110.1.1.5 110.1.1.6route enable基于不同域间关系配置两条NAT策略
nat-policyrule name ISP1source-zone trustdestination-zone ISP1source-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP1rule name ISP2source-zone trustdestination-zone ISP2source-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP2配置安全策略
security-policydefault action permitrule name ISP1source-zone trustdestination-zone ISP1action permitrule name ISP2source-zone trustdestination-zone ISP2action permit配置默认路由
ip route-static 0.0.0.0 0.0.0.0 210.1.1.2
ip route-static 0.0.0.0 0.0.0.0 110.1.1.2
在这种情况下,分别有两个区域,配置默认路由如果是等价的,防火墙还会选择随机的转换。除非指定默认路由的优先级或在rule Nmae ISP的时候精确匹配网段。
我们把防火墙接口规划成1个区域。
firewall zone untrustadd interface GigabitEthernet1/0/1add interface GigabitEthernet1/0/0nat-policyrule name ISP1source-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP1rule name ISP2source-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP2security-policydefault action permitrule name NATsource-zone trustdestination-zone untrustaction permitip route-static 0.0.0.0 0.0.0.0 210.1.1.2
ip route-static 0.0.0.0 0.0.0.0 110.1.1.2
经过好几次老化,一直会从ISP1走。
如果我们把防火墙与ISP1和ISP2两个接口加入同一安全区域,无论报文走ISP1还是ISP2,安全域间关系都是Trust到Untrust,基于相同安全域间关系配置NAT策略,就无法区分两条链路。由于ruleISP1匹配顺序高于ISP2,此时内部访问外部都匹配ISP1,不会再向下继续匹配ISP2。
两种配置关系,两种不同的效果。
——————————————————————————————————————————————————
总结
NAT No-PAT:一对一,不转换端口,生成Server-map表,需要配置路由黑洞。
NAPT:多对一,多对多。转换端口,不生成server-map表,需要配置路由黑洞。
Easy-IP:多对一,转换端口,不生成server-map表,无需配置路由黑洞。
Smart NAT:一对一,多对一(针对预留地址),预留地址会转换端口,仅NAT No-PAT方式生成Server-map表,需要配置路由黑洞。
三元组NAT:多对一,多对多,转换端口,生成Server-map表,不必配置路由黑洞。
——————————————————————————————————————————————————
延伸
三元组NAT还有一个学名:Full Cone(全圆锥)。(Full Cone)全圆锥是4种NAT端口映射方式的一种,
其他3种分为:(Restricted Cone)受限圆锥、(Port Restricted Cone)端口受限圆锥和(Symmetric)对称型。
介绍下Full Cone(全圆锥)和(Symmetric)对称型。由于RFC3489已废弃,故不对(Restricted Cone)受限圆锥、(Port Restricted Cone)端口受限圆锥进行介绍。
Full Cone(全圆锥):内网主机进行NAT转换后的地址和端口在一段时间内保持不变,不会因为目的地址不同而不同,所以内网主机可以使用转换后相同三元组访问不同的外网主机,外网主机也都可以通过该三元组访问内网主机。就是前面说的P2P业务。
(Symmetric)对称型:内网主机根据不同的目的地址进行NAT转换,NAT转换后的地址和端口一般是不相同的,由于对不同外网主机呈现不同三元组,所以只有特定的外网主机的特定端口才能进入内网,即需要限定目标主机和端口。对称型NAT也称为五元组NAT,NAPT方式即五元组NAT。