1、华为防火墙NAT的六个分类web
华为防火墙的NAT分类:安全
- NAT No-PAT:相似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网IP地址,使用状况较少。
- NAPT(Network Address and Port Translation,网络地址和端口转换):相似于Cisco的PAT转换,NAPT即转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址,属于多对多或多对一转换,能够节约公网IP地址,使用场景较多。
- 出接口地址(Easy-IP):因其转换方式很是简单,因此也被称为Easy-IP、和NAPT同样,即转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,能够节约IP地址。
- NAT Server:静态一对一发布,主要用于内部服务器须要对Internet提供服务时使用,。
- Smart NAT(智能转换):经过预留一个公网地址进行NAPT转换,而其余的公网地址用来进行NAT No-PAT转换,该方式不太经常使用。
- 三元组NAT:与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在广泛NAT中没法实现的问题。主要应用于外部用户访问局域网的一些P2P应用。
2、解决NAT转换时的环路及无效ARP
在特定的NAT转换时,可能会产生环路及无效ARP,关于其如何产生,大概就是,在有些NAT的转换方式中,是为了解决内网链接Internet,而映射出了一个公有IP,那么,若此时有人经过internet来访问这个映射出来的公有IP,就会产生这两种状况。若要详细提及来,又是很麻烦,可是解决这两个问题很简单,就是配置黑洞路由(将internet主动访问映射出来的地址的流量指定到空接口null0),关于如何配置,将在事后的配置中展现出来,我总结了如下须要配置黑洞路由的场景,以下表所示:
.
表中的前三个能够对应到文章开始的几个NAT类型中,那么NAT Server(粗泛)、NAT Server(精细)又是什么鬼呢?服务器
3、server-map表的做用
咱们都知道,状态化防火墙中会有一张表叫作会话表,用来记录的是内网访问外网时的一个链接信息,当外网返回的数据匹配到会话表的记录时,直接放行相关返回流量。网络
那么server-map表又是什么呢?具体解释其原理的话,可能又是一大篇,写了也不必定能写明白,写明白了大家也不必定看懂,看懂了大家也不必定会打赏,哈哈,不开玩笑了,直接总结对比一下server-map表和会话表的区别吧,session
区别以下:tcp
- 会话表记录的是链接信息,包括链接状态。
- server-map表记录的不是当前的链接信息,而是经过分析当前链接的报文后获得的信息,该信息用来解决接下来的数据流经过防火墙的问题。能够将server-map表的做用理解为经过未雨绸缪解决未来的问题,如像FTP这种的多端口协议,在从一开始的三次握手,到最后完成数据的传输,其过程当中,可能端口会发生改变等问题,server-map正好能够解决这种问题。
然而在NAT中也须要这个server-map表,就是在有数据流量经过NAT的方式穿越防火墙时,server-map表会记录其源地址和转换后地址的对应关系,从而使后续流量能够不用查看NAT策略,直接匹配到server-map表,从而实现高效的NAT转换。若用户经过互联网访问转换后的地址时,也能够匹配到server-map表,从而高效的将数据转发到内网真实主机(必须保证安全策略容许经过)。ide
server-map表不用手动配置,是自动生成的,这里只是简单介绍下server-map表是个什么鬼。ui
在NAT中,不是全部的表均可以生成server-map表的,我简单总结了一下,以下:
当在防火墙上配置某些类型的NAT后,在防火墙上会生成server-map表,默认生成两个server-map条目,分别是正向条目和反向条目(Reverse),以下:
此时Server-map表的做用是:this
4、NAT对报文的处理流程
原谅我懒癌晚期,给你们上个图,本身悟吧,能理解到什么地步,全看天意咯,以下:
从上图中能够看出来,由于防火墙处理报文的顺序是目标地址转换→安全策略→源地址转换,因此在NAT环境中,安全策略的源地址应该是源地址转换以前的地址,目标地址应该是目标地址转换以后的地址。code
一个报文,通常在同一个网络设备上,只会存在一种转换条目,即要么转换源地址(除NAT-Server类型的NAT转换以外),要么转换目的地址(NAT-Server类型的NAT转换)。源地址和目的地址的转换不会同时存在同一个网络设备上。
5、各类NAT类型的配置方法
在文章开头的NAT分类中,Smart NAT(智能转换)和三元组NAT这两种NAT类型我也没有配置过,不太了解,因此没法将这两种的配置写下来,只能将前四种NAT类型写下来咯!通常够用了(前面介绍的黑洞路由及查看一些相关表的命令都将在配置过程当中,写下来,请仔细看注释)。
环境以下(不以实际环境为准,主要目的是将多种类型NAT的配置写下来):
需求以下:
一、ISP为公司分配的公网地址为100.2.2.8/29。
二、技术部属于trust区域,经过Easy-ip访问Internet。
三、行政部属于trust区域,经过NAPT访问internet(使用100.2.2.12/29)。
四、财务部属于trust区域,经过no-pat访问internet(使用100.2.2.10/29-100.2.2.11/29)
五、DMZ区域中的两台服务器配置NAT-Server发布,分别提供FTP服务及web服务(使用100.2.2.9/29)
六、防御墙的GE1/0/0属于UNtrust区域。
开始配置基础部分(IP地址、路由条目和防火墙接口添加到指定区域等):
我这里只写了路由器及防火墙的配置,关于各个PC及server的IP配置,请自行配置。基础部分就不注释了,若不懂,能够参考我以前的博文,若须要在eNSP上验证效果,须要给模拟器上的防火墙导入系统,我这里使用的是USG6000的防火墙
一、R1路由器配置以下:
<Huawei>sys [Huawei]in g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 100.1.1.1 30 [Huawei-GigabitEthernet0/0/0]in g0/0/1 [Huawei-GigabitEthernet0/0/1]ip add 200.1.1.1 24 [Huawei-GigabitEthernet0/0/1]quit [Huawei]ip route-static 100.2.2.8 29 100.1.1.2 <!-100.2.2.8/29为汇总后的地址-->
二、防火墙配置以下:
<USG6000V1>sys [USG6000V1]in g1/0/0 [USG6000V1-GigabitEthernet1/0/0]ip add 100.1.1.2 30 [USG6000V1-GigabitEthernet1/0/0]in g1/0/4 [USG6000V1-GigabitEthernet1/0/4]ip add 192.168.3.1 24 [USG6000V1-GigabitEthernet1/0/4]in g1/0/3 [USG6000V1-GigabitEthernet1/0/3]ip add 192.168.2.1 24 [USG6000V1-GigabitEthernet1/0/3]in g1/0/2 [USG6000V1-GigabitEthernet1/0/2]ip add 192.168.1.1 24 [USG6000V1-GigabitEthernet0/0/0]in g1/0/1 [USG6000V1-GigabitEthernet1/0/1]ip add 192.168.0.1 24 [USG6000V1-GigabitEthernet1/0/1]quit [USG6000V1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.1 [USG6000V1]firewall zone trust [USG6000V1-zone-trust]add in g1/0/4 [USG6000V1-zone-trust]add in g1/0/3 [USG6000V1-zone-trust]add in g1/0/2 [USG6000V1-zone-trust]quit [USG6000V1]firewall zone dmz [USG6000V1-zone-dmz]add in g1/0/1 [USG6000V1-zone-dmz]quit [USG6000V1]firewall zone untrust [USG6000V1-zone-untrust]add in g1/0/0
基础部分的配置至此结束。
.
开始配置各类类型的NAT:
一、技术部属于trust区域,经过Easy-ip访问Internet。
(1)防火墙配置以下:
1)配置安全策略:
[USG6000V1]security-policy [USG6000V1-policy-security]rule name easy <!--定义安全策略名字--> [USG6000V1-policy-security-rule-easy]source-zone trust <!--源区域为trust--> [USG6000V1-policy-security-rule-easy]destination-zone untrust <!--目标区域为untrust--> [USG6000V1-policy-security-rule-easy]action permit <!--动做为容许--> [USG6000V1-policy-security-rule-easy]quit [USG6000V1-policy-security]quit
2)配置NAT策略:
[USG6000V1]nat-policy [USG6000V1-policy-nat]rule name easypolicy <!--定义NAT策略名字--> [USG6000V1-policy-nat-rule-easypolicy]source-address 192.168.1.0 24 <!--定义源地址--> [USG6000V1-policy-nat-rule-easypolicy]source-zone trust <!--定义源区域--> [USG6000V1-policy-nat-rule-easypolicy]destination-zone untrust <!--定义目标区域--> [USG6000V1-policy-nat-rule-easypolicy]action nat easy-ip <!--配置出接口方式--> [USG6000V1-policy-nat-rule-easypolicy]quit [USG6000V1-policy-nat]quit
如今就可使用PC4 ping外网的200.1.1.2进行验证了,在ping的过程当中查看会话表(时间长了该会话表将没有任何内容),能够看到具体的转换条目。
[USG6000V1]dis firewall session table <!--查看会话表--> Current Total Sessions : 5 icmp ×××: public --> public 192.168.3.2:28884[100.1.1.2:2051] --> 200.1.1.2:2:048 ..............................
注:Easy-ip类型的NAT不会产生server-map。
二、配置行政部属于trust区域,经过NAPT访问internet(使用100.2.2.12/29)。
因为在上面配置Easy-ip的NAT类型时,配置了安全策略,因此接下来trust区域访问untrust区域的流量就不用配置安全策略了。
(1)防火墙配置以下:
1)配置NAT地址组,地址组中的地址对应的是公网地址100.2.2.12/29。
[USG6000V1]nat address-group napt <!--定义nat地址组名--> [USG6000V1-address-group-napt]section 0 100.2.2.12 <!--定义组中的地址--> [USG6000V1-address-group-napt]mode pat <!--配置为NAPT方式--> [USG6000V1-address-group-napt]quit
2)配置NAT策略
[USG6000V1]nat-policy [USG6000V1-policy-nat]rule name napt <!--自定义nat策略的组名--> [USG6000V1-policy-nat-rule-napt]source-address 192.168.2.0 24 <!--定义须要转换的源地址--> [USG6000V1-policy-nat-rule-napt]source-zone trust <!--定义源区域--> [USG6000V1-policy-nat-rule-napt]destination-zone untrust <!--定义目标区域--> [USG6000V1-policy-nat-rule-napt]action nat address-group napt <!--关联地址组-->
3)NAPT的NAT类型要配置黑洞路由,因此要针对转换后的全局地址100.2.2.12/32配置黑洞路由。
[USG6000V1]ip route-static 100.2.2.12 32 NULL 0
4)NAPT配置至此就完成了,能够自行验证,并查看会话表,查看是否转换为指定的地址。
三、配置财务部属于trust区域,经过no-pat访问internet(使用100.2.2.10/29-100.2.2.11/29)
(1)防火墙配置以下:
1)配置NAT地址组,地址组中的地址对应的是公网地址100.2.2.10--100.2.2.11:
[USG6000V1]nat address-group natnopat <!--定义nat地址组名--> [USG6000V1-address-group-natnopat]section 0 100.2.2.10 100.2.2.11 <!--定义组中的地址--> [USG6000V1-address-group-natnopat]mode no-pat local <!--配置为NAT No-PAT方式--> [USG6000V1-address-group-natnopat]quit
2)配置NAT策略:
[USG6000V1]nat-policy [USG6000V1-policy-nat]rule name nopat <!--自定义nat策略的组名--> [USG6000V1-policy-nat-rule-nopat]source-address 192.168.1.0 24 <!--定义须要转换的源地址--> [USG6000V1-policy-nat-rule-nopat]source-zone trust <!--定义源区域--> [USG6000V1-policy-nat-rule-nopat]destination-zone untrust <!--定义目标区域--> [USG6000V1-policy-nat-rule-nopat]action nat address-group natnopat <!--关联地址组--> [USG6000V1-policy-nat-rule-nopat]quit [USG6000V1-policy-nat]quit
3)针对转换后的全局地址(NAT地址组中的地址)配置黑洞路由:
[USG6000V1]ip route-static 100.2.2.10 32 NULL 0 [USG6000V1]ip route-static 100.2.2.11 32 NULL 0
至此,NAT No-PAT配置完成了,能够自行验证,而且会产生server-map表:
[USG6000V1]dis firewall server-map <!--查看server-map表--> [USG6000V1]dis firewall session table <!--查看会话表-->
四、配置DMZ区域中的两台服务器配置NAT-Server发布,分别提供FTP服务及web服务(使用100.2.2.9/29)
1)配置安全策略:
因为以前配置的是trust访问untrust区域的安全策略,因此对DMZ区域不要紧,这里是要将DMZ区域的服务器发布出去,使Internet用户能够访问到这些服务器,因此应该放行UNtrust到DMZ区域相关服务的流量。
[USG6000V1-policy-security]rule name todmz [USG6000V1-policy-security-rule-todmz]source-zone untrust [USG6000V1-policy-security-rule-todmz]destination-zone dmz [USG6000V1-policy-security-rule-todmz]destination-address 192.168.0.0 24 [USG6000V1-policy-security-rule-todmz]service ftp [USG6000V1-policy-security-rule-todmz]service http [USG6000V1-policy-security-rule-todmz]action permit
2)配置NAT server:
[USG6000V1]nat server ftp protocol tcp global 100.2.2.9 21 inside 192.168.0.2 21 [USG6000V1]nat server http protocol tcp global 100.2.2.9 80 inside 192.168.0.3 80
3)使用外网客户端client1进行访问验证便可,访问之后赶忙查看会话表及server-map表(由于怕到了老化时间,会看不到任何条目),会看到以下结果:
配置至此,全部需求均已实现,完活。
一、扩展一些NAT Server的其余配置类型:
[USG6000V1]nat server ftp1 protocol tcp global 100.2.2.14 2121 inside 192.168.0.2 21 <!-- 配置不一样端口映射,其效果是外网用户访问100.2.2.14的2121端口, 将转换地址和端口为192.168.0.2的21端口。 --> [USG6000V1]nat server ftp1 protocol tcp global 100.2.2.14 21 inside 192.168.0.2 21 no-reverse <!-- 其效果就是再也不生成反向的server-map表, 只能Internet访问内部的ftp服务,而内部服务器不能主动访问互联网。 --> [USG6000V1]nat server natserver global 100.2.2.19 inside 100.2.2.9 <!-- 真正一对一的映射,一个公网IP对应一个内部服务器, 当Internet用户访问100.2.2.19的任意端口,都将转发到内部100.2.2.9服务器上, 该配置方法不经常使用,也不推荐使用。 -->
二、如何删除NAT Server:
那么咱们在配置NAT Server时,配置错误的话,想要删除掉,与别的配置删除不太同样,须要使用如下命令删除配置错误的NAT Server:
[USG6000V1]undo nat server name http [USG6000V1]undo nat server ID 0 <!-- 以上命令是删除NAT server的配置, 第一个是基于名字删除,第二个是基于ID号删除, 在系统视图,使用“dis this”,而后翻到最后,能够看到name及ID号 -->