博文目录
1、什么是NAT?
2、如何解决源地址转换环境下的环路和无效ARP问题?
3、什么是Server-map表?
4、NAT对报文的处理流程
5、开始配置NAT
NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术,绝大多数网络环境中在使用NAT技术。此博文重点是华为相关的NAT知识上。安全
在内外网的边界,流量有出、入两个方向,因此NAT技术包含源地址转换和目标地址转换两类。
通常状况下,源地址转换主要用于解决内部局域网计算机访问Internet的场景;而目标地址转换主要用于解决Internet用户访问局域网服务器的场景,目标地址一般被称为服务器地址映射。服务器
华为支持的源地址转换方式有以下几类:网络
NAT No-PAT:相似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网IP地址,实际状况下使用比较少,主要适用于须要上网的用户较少,而公网地址又足够的场景下。tcp
NAPT(Network Address and Port Translation网络地址和端口转换):相似于Cisco的PAT转换,NAPT即转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址,属于多对多或多对一转换,能够节约IP地址,使用场景较多,主要适用于内部大量用户须要上网,同时仅有少数几个公网IP地址可用的场景下。ide
出接口地址(Easy-IP):因其转换方式很是简单,因此也称为Easy-IP,和NAPT同样,既转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,能够节约IP地址,主要适用于没有额外的公网地址可用,内部上网用户很是多的场景下,直接经过外网接口自己的IP地址做为转换目标。ui
Smart NAT(智能转换):是NAPT和NAT No-PAT相结合工做,经过预留一个公网地址进行NAPT转换,而其余的公网地址用来进行NAT No-PAT转换。 code
NAT Server:静态一对一发布,主要用于内部服务器须要对Internet提供服务时使用。server
- 三元组NAT:与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普通NAT中没法实现的问题。
在配置华为NAT转换时,常常会配置黑洞路由以解决路由环路和无效ARP,关于其如何产生,大概就是,在有些NAT的转换方式中,是为了解决内网链接Internet,而映射出了一个公有IP,那么,若此时有人经过internet来访问这个映射出来的公有IP,就会产生这两种状况。若要详细提及来,又是很麻烦,可是解决这两个问题很简单,就是配置黑洞路由(将internet主动访问映射出来的地址的流量指定到空接口null0),关于如何配置,将在事后的配置中展现出来,以下图所示是否须要配置路由黑洞:接口
NAT Server(粗泛):是NAT Server转换类型中的一种,表示源地址和转换后的地址只有简单的映射关系,没有涉及端口等映射,如源地址为192.168.10.5,转换后的地址为202.96.10.2,若是作的是NAT Server(粗泛)这种类型的NAT,那么全部访问202.96.10.2的数据包都将转发给192.168.10.5这个地址。ip
Server-map表和会话表的区别:
会话表记录的是链接信息,包括链接状态。
- server-map表记录的不是当前的链接信息,而是经过分析当前链接的报文后获得的信息,该信息用来解决接下来的数据流经过防火墙的问题。能够将server-map表的做用理解为经过未雨绸缪解决未来的问题,如像FTP这种的多端口协议,在从一开始的三次握手,到最后完成数据的传输,其过程当中,可能端口会发生改变等问题,server-map正好能够解决这种问题。
然而在NAT中也须要这个server-map表,就是在有数据流量经过NAT的方式穿越防火墙时,server-map表会记录其源地址和转换后地址的对应关系,从而使后续流量能够不用查看NAT策略,直接匹配到server-map表,从而实现高效的NAT转换。若用户经过互联网访问转换后的地址时,也能够匹配到server-map表,从而高效的将数据转发到内网真实主机(必须保证安全策略容许经过)。
server-map表不用手动配置,是自动生成的,这里只是简单介绍下server-map表
在NAT中,不是全部的表均可以生成server-map表的,当在防火墙上配置某些类型的NAT后,在防火墙上会生成server-map表,默认生成两个server-map条目,分别是正向条目和反向条目(Reverse),以下图:
此时Server-map表的做用是:
正向条目携带端口信息,用来使Internet用户访问内网中的服务器时直接经过server-map表来进行目标地址转换。
防火墙接口从收到一个报文到最终发送出去须要经历一系列处理流程,而NAT只是其中的一项任务。NAT的配置受到路由及安全策略的影响,因此了解NAT对报文的处理流程对配置AT有很是大的帮助。NAT对报文的处理流程以下图所示。
NAT处理报文的流程以下:
(1)防火墙收到报文后,首先检查报文是否匹配Server-map中的条目,若是是,则根据表项转换报文的目标地址,而后进行步骤(3)处理;不然进行步骤(2)处理。
(2)查找是否存在目标NAT的相关配置,若是是,而且符合NAT条件,则转换目标地址后进行步骤(3)处理;不然直接进行步骤(3)处理。
(3)根据报文的目标地址查找路由表,若是存在目标路由,则进行步骤(4)处理;不然丢弃报文。
(4)依次匹配安全策略中的规则,若是策略容许报文经过,则进行步骤(5)处理;不然丢弃报文。
(5)查找是否存在源NAT的相关配置及是否符合NAT条件,若是是,则转换源地址后进行步骤(6)处理;不然直接进行步骤(6)处理。
(6)在发送报文以前建立会话,后续和返回的报文能够直接匹配会话表转发。
(7)防火墙发送报文。由于防火墙处理报文的顺序是目标地址转换→安全策略→源地址转换,因此在NAT环境中,安全策略的源地址应该是源地址转换以前的地址,目标地址应该是目标地址转换后的地址。
为了更好更直接的把效果展现出来,我在这里搭建一个拓扑图,模拟192.168.10.0/24网络为内网,192.168.200.0/24为外网,具体操做我会详细写在下面,注意(在配置每种NAT以前我会把上一个NAT所配置的策略和地址池清空,为了更直观的展示给你们)拓扑图以下:
1)R1配置IP地址 [R1]int eth0/0/0 #进入接口 [R1-Ethernet0/0/0]ip add 192.168.100.2 24 #接口配置IP地址 [R1-Ethernet0/0/0]int eth0/0/1 #进入接口 [R1-Ethernet0/0/1]ip add 192.168.200.1 24 #接口配置IP地址 [R1-Ethernet0/0/1]quit [R1]ip route-static 192.168.10.0 24 Ethernet 0/0/0 192.168.100.1 #配置去内网静态
2)防火墙接口配置IP地址及加入区域 [FW1]int g1/0/0 #进入接口 [FW1-GigabitEthernet1/0/0]ip add 192.168.10.1 24 #接口配置IP地址 [FW1-GigabitEthernet1/0/0]undo shutdown #激活接口 [FW1-GigabitEthernet1/0/0]quit [FW1]firewall zone trust #进入trust区域 [FW1-zone-trust]add interface GigabitEthernet 1/0/0 #接口加入trust区域 [FW1-zone-trust]quit [FW1]int g1/0/1 #进入接口 [FW1-GigabitEthernet1/0/1]ip add 192.168.100.1 24 #接口配置IP地址 [FW1-GigabitEthernet1/0/1]undo shutdown #激活接口 [FW1-GigabitEthernet1/0/1]quit [FW1]firewall zone untrust #进入untrust区域 [FW1-zone-untrust]add interface GigabitEthernet 1/0/1 #接口加入untrust区域 [FW1-zone-untrust]quit [FW1]ip route-static 0.0.0.0 0.0.0.0 192.168.100.2 #配置去外网默认
接下来开始配置NAT
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name nat #安全策略名字为nat [FW1-policy-security-rule-nat]source-zone trust #定义源区域为trust [FW1-policy-security-rule-nat]destination-zone untrust #定义目标区域untrust [FW1-policy-security-rule-nat]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-security-rule-nat]action permit #容许流量经过 [FW1-policy-security-rule-nat]quit [FW1-policy-security]quit
2)配置NAT No-PAT地址池组 [FW1]nat address-group natno-pat #地址池组的名字为natno-pat [FW1-address-group-natno-pat]section 0 192.168.100.3 192.168.100.4 #地址池起始和结束地址 [FW1-address-group-natno-pat]mode no-pat local #地址池为nat no-pat提供服务 [FW1-address-group-natno-pat]quit
3)配置NAT No-PAT策略 [FW1]nat-policy #配置NATT策略 [FW1-policy-nat]rule name natpolicy #nat策略的名字为natpolicy [FW1-policy-nat-rule-natpolicy]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-nat-rule-natpolicy]source-zone trust #定义转换源区域 [FW1-policy-nat-rule-natpolicy]destination-zone untrust #定义转换目标区域 [FW1-policy-nat-rule-natpolicy]action nat address-group natno-pat #定义的转换源和地址池创建映射关系 [FW1-policy-nat-rule-natpolicy]quit [FW1-policy-nat]quit
4)配置路由黑洞 [FW1]ip route-static 192.168.100.3 32 null 0 [FW1]ip route-static 192.168.100.4 32 null 0
5)验证,用内网ping外网,而后查看会话表
1) 配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name NAPT #安全策略名字为NAPT [FW1-policy-security-rule-NAPT]source-zone trust 定义源区域trust [FW1-policy-security-rule-NAPT]destination-zone untrust #定义目标区域untrust [FW1-policy-security-rule-NAPT]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-security-rule-NAPT]action permit #容许流量经过 [FW1-policy-security-rule-NAPT]quit [FW1-policy-security]quit
2)配置NAPT地址池 [FW1]nat address-group NAPT #地址池的名字为NAPT [FW1-address-group-napt]section 0 192.168.100.5 192.168.100.5 #地址池范围 [FW1-address-group-napt]mode pat #地址池为NAPT提供服务 [FW1-address-group-napt]quit
3)配置NAPT策略 [FW1]nat-policy #pe配置NAT策略 [FW1-policy-nat]rule name pat #NAPT策略名字为pat [FW1-policy-nat-rule-pat]source-zone trust #定义转换源区域 [FW1-policy-nat-rule-pat]destination-zone untrust #定义转换目标区域 [FW1-policy-nat-rule-pat]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-nat-rule-pat]action nat address-group NAPT #定义的转换源和地址池创建映射关系 [FW1-policy-nat-rule-pat]quit [FW1-policy-nat]quit
4)配置路由黑洞 [FW1]ip route-static 192.168.100.5 32 null 0
5)验证,ping外网查看会话表
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name easyip #安全策略的名字为easyip [FW1-policy-security-rule-easyip]source-zone trust #定义源区域trust [FW1-policy-security-rule-easyip]destination-zone untrust #定义目标区域untrust [FW1-policy-security-rule-easyip]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-security-rule-easyip]action permit #容许流量经过 [FW1-policy-security-rule-easyip]quit [FW1-policy-security]quit
2)配置NAT策略 [FW1]nat-policy #配置NAT策略 [FW1-policy-nat]rule name easyip #NAT策略的名字是easyip [FW1-policy-nat-rule-easyip]source-zone trust #定义转换源区域 [FW1-policy-nat-rule-easyip]destination-zone untrust #定义转换目标区域 [FW1-policy-nat-rule-easyip]source-address 192.168.10.0 24 #定义转换源网络 [FW1-policy-nat-rule-easyip]action nat easy-ip #调用防火墙外网接口ip地址 [FW1-policy-nat-rule-easyip]quit [FW1-policy-nat]quit
3)验证,ping外网查看会话表
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name NATserver #安全策略名字为NATserver [FW1-policy-security-rule-NATserver]source-zone untrust #指定访问源为外部区域 [FW1-policy-security-rule-NATserver]destination-zone trust #指定访问目标为内部区域 [FW1-policy-security-rule-NATserver]destination-address 192.168.10.0 24#指定访问网络为内部地址 [FW1-policy-security-rule-NATserver]action permit #容许外网访问 [FW1-policy-security-rule-NATserver]quit [FW1-policy-security]quit
2)配置应用层检查 [FW1]firewall interzone trust untrust #j检查区域为内部和外部区域 [FW1-interzone-trust-untrust]detect ftp #检查ftp协议 [FW1-interzone-trust-untrust]quit
3)配置FTP的NAT server [FW1]nat server ftp protocol tcp global 192.168.100.30 21 inside 192.168.10.10 2 1
4)验证,ping内网查看会话表,ftp访问内网也能够,因为个人环境问题就不访问ftp了
博客到此结束!