人类如今对计算机网络的使用已经扩展到各个领域,而计算机网络的设计者当时没法想象互联网能有今天这样的规模。任何一个接入互联网的计算机、手机以及智能电视,要想在互联网中畅游,必须有一个合法的IP地址。而IP地址,曾经觉得足以容纳全球的计算机,可是在今天看来,已经严重枯竭。IPV6的出现就是为了解决地址不足的问题,但在IPV6普及以前,须要有一个过渡技术——NAT。NAT的出现缓解了地址不足的问题,它可让同一局域网内60000多用户能够同时使用一个合法IP地址访问互联网。关于Cisco设备的NAT技术,不清楚的朋友本人推荐博文——网络地址转换——NAT技术 今天主要介绍华为设备的NAT技术。安全
博文大纲:
1、华为设备NAT的分类;
2、如何解决源地址转换场景下的环路和无效ARP问题;
3、Server-map表的做用;
1.经过Server-map表来解决FTP数据传输的问题;
2.Server-map表在NAT中的做用;
4、NAT对报文的处理流程;
5、各类经常使用的NAT的配置方法;
1.NAT NO-PAT配置方式;
2.NAPT配置方式;
3.Easy-IP配置方式;
4.NAT server配置方式;服务器
在内外网的边界,流量有出、入两个方向,因此NAT技术包含源地址转换和目标地址转换两类。通常状况下,源地址转换主要用于解决内部局域网计算机访问Internet的场景;而目标地址转换主要是用于解决Internet用户访问局域网服务器的场景,目标地址转换一般被称为服务器地址映射。网络
华为设备支持的源地址转换方式有:session
- NAT NO-PAT:相似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网地址,实际状况下使用不多,主要适用于须要上网的用户较少,且公网地址足够的状况下;
- NAPT:相似于Cisco的PAT转换,NAPT既转换报文的源地址,又转换源端口。转换后的地址不能是外网接口的IP地址,属于多对多或多对一转换,能够节约IP地址,使用场景较多,主要适用于内部大量用户须要上网,同时仅有少数几个公网IP地址可用的场景下;
- 出接口地址:因其转换方式很是简单,因此也称为Easy-IP,和NAPT同样,既转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,能够节约IP地址,主要适用于没有额外的公网地址可用,内部上网用户很是多的场景下,直接经过外网接口自己的IP地址做为转换目标;
- Smart NAT(智能转换):经过预留一个公网地址进行NAPT转换,而其余的公网地址用来进行NAT NO-PAT转换。其主要用户平时上网用户比较少,而申请的公网地址基本能够知足这些少许用户进行NAT NO_PAT转换,可是偶尔会出现上网用户倍增的状况;
- 三元组NAT:与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普通NAT中没法实现的问题。其主要用于外部用户访问局域网用户的一些P2P应用。
本篇博文主要介绍前三种源地址转换。tcp
华为设备的目标地址转换技术主要是NAT Server,能够基于IP地址转换,也能够基于“IP+端口+协议”进行转换。ide
在配置华为NAT转换时,常常会配置黑洞路由来解决路由环路和大量的无效ARP报文,关于其如何产生,大概就是,在有些NAT的转换方式中,是为了解决内网链接Internet,而映射出了一个公有IP,经过映射后的公网地址访问互联网。那么,若此时有人经过internet来访问这个映射出来的公有IP,就会产生路由环路及大量无效的ARP报文。若要详细提及来,又是很麻烦,可是解决这两个问题很简单,就是配置黑洞路由(将internet主动访问映射出来的地址的流量指定到空接口null 0)。这样就不会造成路由环路和产生大量ARP报文的状况。ui
须要配置黑洞路由的几种常见的NAT转换方式,如图:计算机网络
华为的防火墙时基于状态化转发数据包,针对首个包严格执行策略检查,一旦被策略容许,将生成会话表,而同一个会话的后续包及返回报由于可以匹配会话表,将直接经过防火墙,不须要进行额外的策略检查,从而提升了转发效率。可是在有些状况下,仅仅依懒会话表不能转发某些特殊应用的流量。例如:FTP服务,其在主动模式下的工做流程图,以下:
由此能够看出,当客户端要求主动链接FTP服务器时,一点问题都没有;可是当FTP服务器主动发起请求时,就会发生FTP链接失败的状况。华为防火墙就是经过Server-map表来解决相似问题的。Server-map表记录应用层的关键信息,包括目标地址、目标端口和协议烈性,和会话表相似,匹配了Server-map表的数据流也可直接经过防火墙,如图:设计
这样就能够解决FTP服务器主动发起请求时,就不会致使FTP服务链接失败的状况。code
Server-map表和会话表的区别:
- 会话表记录的是链接信息,包括链接状态;
- Server-map表记录的不是当前的链接信息,而是经过分析当前链接的报文后获得的信息。该信息能够解决接下来的数据流经过防火墙的问题。能够将Server-map表的做用理解为提早经过预判来解决未来可能发生的问题;
Server-map表除了解决相似FTP服务的问题外,Server-map表也被应用在NAT技术中。当在防火墙上配置某些类型的NAT后,在防火墙上会生成server-map表,默认生成两个server-map条目,分别是正向条目和反向条目(Reverse),如图:
Server-map表在NAT中的做用是:
- 正向条目:携带端口信息,用来使Internet用户访问内网中的服务器时直接经过server-map表来进行目标地址转换。
- 反向条目(Reverse):不携带端口信息,且目标地址是任意的,用来使服务器能够访问Internet;
小结:
防火墙接口从收到一个保温到最终发送出去须要经历一系列的处理流程,而NAT只是其中一项任务。NAT的配置受到路由即安全策略的影响,因此了解NAT对报文的处理流程对配置NAT有很是大的帮助。NAT对报文的处理流程图,以下:
NAT处理报文的流程以下:
(1)防火墙收到报文后,首先检查报文是否匹配Server-map中的条目,若是是,则根据表项转换报文的目标地址,而后进行步骤(3)处理;不然进行步骤(2)处理。
(2)查找是否存在目标NAT的相关配置,若是是,而且符合NAT条件,则转换目标地址后进行步骤(3)处理;不然直接进行步骤(3)处理。
(3)根据报文的目标地址查找路由表,若是存在目标路由,则进行步骤(4)处理;不然丢弃报文。
(4)依次匹配安全策略中的规则,若是策略容许报文经过,则进行步骤(5)处理;不然丢弃报文。
(5)查找是否存在源NAT的相关配置及是否符合NAT条件,若是是,则转换源地址后进行步骤(6)处理;不然直接进行步骤(6)处理。
(6)在发送报文以前建立会话,后续和返回的报文能够直接匹配会话表转发。
(7)防火墙发送报文。
注意:由于防火墙处理报文的顺序是目标地址转换→安全策略→源地址转换,因此在NAT环境中,安全策略的源地址应该是源地址转换以前的地址,目标地址应该是目标地址转换后的地址。
PC1经过202.106.0.20~21地址与PC2实现通讯!
建议:实验环境尽可能不要使用防火墙的G0/0/0接口,该接口默认是管理接口,而且由大量的默认配置。
[FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24 [FW1-GigabitEthernet1/0/0]undo shutdown [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24 [FW1-GigabitEthernet1/0/1]undo shutdown Info: Interface GigabitEthernet1/0/1 is not shutdown. [FW1-GigabitEthernet1/0/1]quit [FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2
[FW1]firewall zone trust [FW1-zone-trust]add int g1/0/0 [FW1-zone-trust]quit [FW1]firewall zone untrust [FW1-zone-untrust]add int g1/0/1 [FW1-zone-untrust]quit //将内外网接口加入防火墙的指定区域 [FW1]security-policy //配置安全策略 [FW1-policy-security]rule name sec_1 //配置规则并制定规则名为sec_1 [FW1-policy-security-rule-sec_1]source-zone trust [FW1-policy-security-rule-sec_1]destination-zone untrust [FW1-policy-security-rule-sec_1]source-address 192.168.1.0 24 //指定条件 [FW1-policy-security-rule-sec_1]action permit //指定动做 [FW1-policy-security-rule-sec_1]quit [FW1-policy-security]quit [FW1]
[FW1]nat address-group natgroup //配置NAT地址组,指定名称为natgroup [FW1-address-group-natgroup]section 0 202.106.0.20 202.106.0.21 //经过section关键字指定地址组的起始地址和结束地址 [FW1-address-group-natgroup]mode no-pat local //指定地址组的模式为no-pat。local关键字表示对本区域有效 [FW1-address-group-natgroup]quit [FW1]
[FW1]nat-policy //配置NAT策略 [FW1-policy-nat]rule name natpolicy //配置名称为natpolicy的NAT规则 [FW1-policy-nat-rule-natpolicy]source-zone trust [FW1-policy-nat-rule-natpolicy]source-address 192.168.1.0 24 [FW1-policy-nat-rule-natpolicy]destination-zone untrust //指定条件 [FW1-policy-nat-rule-natpolicy]action nat address-group natgroup //指定动做,知足条件的数据包将依据地址组作NAT NO-PAT方式的源地址转换 [FW1-policy-nat-rule-natpolicy]quit [FW1-policy-nat]quit [FW1]
注意:NAT策略不一样于安全策略,安全策略是针对通过的数据流作规则检查:匹配的数据包或者转发,或者丢弃,安全策略决定了流量可否经过防火墙;而NAT策略对通过的数据流作规则检查,匹配的数据包或者作地址转换,或者不作地址转换,NAT策略决定了哪些流量须要NAT转换。
[FW1]ip route-static 202.106.0.20 32 null 0 [FW1]ip route-static 202.106.0.21 32 null 0
[AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 202.106.0.2 24 [AR1-GigabitEthernet0/0/0]undo shutdown [AR1-GigabitEthernet0/0/0]int g0/0/1 [AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 24 [AR1-GigabitEthernet0/0/1]undo shutdown [AR1-GigabitEthernet0/0/1]quit [AR1]ip route-static 202.106.0.0 24 202.106.0.1
PC进行验证:
防火墙进行验证:
[FW1]display firewall session table //查看防火墙的会话表 Current Total Sessions : 3 icmp : public --> public 192.168.1.2:13610[202.106.0.20:13610] --> 100.1.1 .2:2048 icmp : public --> public 192.168.1.2:13354[202.106.0.20:13354] --> 100.1.1 .2:2048 icmp : public --> public 192.168.1.2:13098[202.106.0.20:13098] --> 100.1.1 .2:2048 //由此能够看出,内部地址192.168.1.2在通过防火墙以后更换为202.106.0.20地址进行通讯 [FW1]display firewall server-map //查看防火墙Server-map表 Current Total Server-map : 2 Type: No-Pat Reverse, ANY -> 202.106.0.20[192.168.1.2], Zone: untrust Protocol: ANY, TTL:---, Left-Time:---, Pool: 0, Section: 0 : public Type: No-Pat, 192.168.1.2[202.106.0.20] -> ANY, Zone: untrust Protocol: ANY, TTL:360, Left-Time:360, Pool: 0, Section: 0 : public //能够看出192.168.1.1.2与202.106.0.20造成映射关系
实验拓补与NAT NO-PAT同样!(在NAT NO-PAT基础上也可),为了初学者能够看懂,本人就从新部署网络设备了!
PC1经过202.106.0.100地址与PC2实现通讯!
[FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24 [FW1-GigabitEthernet1/0/1]q [FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2 //配置防火墙网络参数及路由 [FW1]firewall zone trust [FW1-zone-trust]add int g1/0/0 [FW1-zone-trust]quit [FW1]firewall zone untrust [FW1-zone-untrust]add int g1/0/1 [FW1-zone-untrust]quit [FW1]security-policy [FW1-policy-security]rule name sec_2 [FW1-policy-security-rule-sec_2]source-zone trust [FW1-policy-security-rule-sec_2]source-address 192.168.1.0 24 [FW1-policy-security-rule-sec_2]destination-zone untrust [FW1-policy-security-rule-sec_2]action permit [FW1-policy-security-rule-sec_2]quit [FW1-policy-security]quit //配置防火墙安全策略 [FW1]nat address-group natgroup1 [FW1-address-group-natgroup1]section 0 202.106.0.100 202.106.0.100 [FW1-address-group-natgroup1]mode pat //指定地址组的模式为pat,即NAPT模式 [FW1-address-group-natgroup1]quit //配置NAT地址组 [FW1]nat-policy [FW1-policy-nat]rule name natpolicy1 [FW1-policy-nat-rule-natpolicy1]source-address 192.168.1.0 24 [FW1-policy-nat-rule-natpolicy1]source-zone trust [FW1-policy-nat-rule-natpolicy1]destination-zone untrust [FW1-policy-nat-rule-natpolicy1]action nat address-group natgroup1 //指定动做,知足条件的数据包将依据地址组作NAPT方式转换 [FW1-policy-nat-rule-natpolicy1]quit [FW1-policy-nat]quit //配置防火墙NAT策略 [FW1]ip route-static 202.106.0.100 32 null 0 //配置黑洞路由 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24 [R1-GigabitEthernet0/0/1]quit [R1]ip route-static 202.106.0.0 24 202.106.0.1 //配置路由器的IP地址及路由
PC1进行验证:
防火墙进行验证:
[FW1]display firewall session table //查看防火墙会话表 Current Total Sessions : 2 icmp : public --> public 192.168.1.2:12082[202.106.0.100:2058] --> 100.1.1 .2:2048 icmp : public --> public 192.168.1.2:12338[202.106.0.100:2059] --> 100.1.1 .2:2048 [FW1]display firewall server-map //查看防火墙的Server-map Current Total Server-map : 0 //NAPT方式进行NAT地址转换时,并不会生成Server-map表
实验拓补与NAT NO-PAT同样!(在NAPT基础上也可),为了初学者能够看懂,本人就从新部署网络设备了!
PC1经过防火墙接口地址与PC2实现通讯!
[FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24 [FW1-GigabitEthernet1/0/1]q [FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2 //配置防火墙网络参数及路由 [FW1]firewall zone trust [FW1-zone-trust]add int g1/0/0 [FW1-zone-trust]quit [FW1]firewall zone untrust [FW1-zone-untrust]add int g1/0/1 [FW1-zone-untrust]quit [FW1]security-policy [FW1-policy-security]rule name sec_3 [FW1-policy-security-rule-sec_2]source-zone trust [FW1-policy-security-rule-sec_2]source-address 192.168.1.0 24 [FW1-policy-security-rule-sec_2]destination-zone untrust [FW1-policy-security-rule-sec_2]action permit [FW1-policy-security-rule-sec_2]quit [FW1-policy-security]quit //配置防火墙安全策略 [FW1]nat-policy [FW1-policy-nat]rule name natpolicy2 [FW1-policy-nat-rule-natpolicy2]source-address 192.168.1.0 24 [FW1-policy-nat-rule-natpolicy2]source-zone trust [FW1-policy-nat-rule-natpolicy2]destination-zone untrust [FW1-policy-nat-rule-natpolicy2]action nat easy-ip //配置知足条件的数据包根据地址组作出接口方式转换 [FW1-policy-nat-rule-natpolicy2]quit [FW1-policy-nat]quit [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24 [R1-GigabitEthernet0/0/1]quit [R1]ip route-static 202.106.0.0 24 202.106.0.1 //配置路由器的IP地址及路由
PC1进行验证:
防火墙进行验证:
[FW1]display firewall session table //查看防火墙会话表 Current Total Sessions : 2 icmp : public --> public 192.168.1.2:12082[202.106.0.1:2073] --> 100.1.1 .2:2048 icmp : public --> public 192.168.1.2:12338[202.106.0.1:2074] --> 100.1.1 .2:2048 [FW1]display firewall server-map //查看防火墙的Server-map Current Total Server-map : 0 /Easy-IP方式进行NAT地址转换时,并不会生成Server-map表
互联网用户经过202.106.0.20访问DMZ区域中的FTP服务器。
[FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24 [FW1-GigabitEthernet1/0/1]quit [FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2 //配置防火墙网络参数及路由 [FW1]firewall zone dmz [FW1-zone-dmz]add int g1/0/0 [FW1-zone-dmz]quit [FW1]firewall zone untrust [FW1-zone-untrust]add int g1/0/1 [FW1-zone-untrust]quit //将防火墙接口加入相应的区域中 [FW1]security-policy [FW1-policy-security]rule name sec_4 [FW1-policy-security-rule-sec_4]source-zone untrust [FW1-policy-security-rule-sec_4]destination-zone dmz [FW1-policy-security-rule-sec_4]destination-address 192.168.1.0 24 [FW1-policy-security-rule-sec_4]service ftp //配置条件为ftp协议,这属于精细NAT-server;若是是粗泛NAT-server,这步能够省略 [FW1-policy-security-rule-sec_4]action permit [FW1-policy-security-rule-sec_4]quit [FW1-policy-security]quit //防火墙配置安全策略 [FW1]firewall interzone dmz untrust [FW1-interzone-dmz-untrust]detect ftp [FW1-interzone-dmz-untrust]quit //.配置FTP应用层检测,默认已经开启,能够省略 [FW1]nat server natserver_ftp protocol tcp global 202.106.0.20 21 inside 192.168.1.2 21 //配置NAT server,natserver_ftp为策略名称,global后为全局地址和端口 <内部地址的端口转化为外部不一样的端口> <也可添加no-reverse参数,表示再也不产生server-map表内容> <也能够不配置端口信息> [FW1]ip route-static 202.106.0.20 32 null 0 <配置黑洞路由> [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24 [R1-GigabitEthernet0/0/1]quit [R1]ip route-static 202.106.0.20 24 202.106.0.1 //配置路由器接口地址及路由
验证效果:
[FW1]display firewall session table Current Total Sessions : 1 ftp : public --> public 100.1.1.2:49160 +-> 202.106.0.20:21[192.168.1.2:21] [FW1]display firewall server-map Current Total Server-map : 2 Type: Nat Server, ANY -> 202.106.0.20:21[192.168.1.2:21], Zone:---, protocol :tcp : public -> public Type: Nat Server Reverse, 192.168.1.2[202.106.0.20] -> ANY, Zone:---, protocol:tcp : public -> public, counter: 1
自行进行验证!从防火墙的会话表中,能够看出效果!
———————— 本文至此结束,感谢阅读 ————————