博文目录
一、什么是NAT?
二、如何解决源地址转换环境下的环路和无效ARP问题?
三、什么是Server-map表?
四、NAT对报文的处理流程
五、开始配置NAT
一、什么是NAT?
NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术,绝大多数网络环境中在使用NAT技术。此博文重点是华为相关的NAT知识上。
1、NAT分类
在内外网的边界,流量有出、入两个方向,所以NAT技术包含源地址转换和目标地址转换两类。
一般情况下,源地址转换主要用于解决内部局域网计算机访问Internet的场景;而目标地址转换主要用于解决Internet用户访问局域网服务器的场景,目标地址通常被称为服务器地址映射。
华为支持的源地址转换方式有如下几类:
NAT No-PAT:类似于Cisco的动态转换,只转换源IP地址,不转换端口,属于多对多转换,不能节约公网IP地址,实际情况下使用比较少,主要适用于需要上网的用户较少,而公网地址又足够的场景下。
NAPT(Network Address and Port Translation网络地址和端口转换):类似于Cisco的PAT转换,NAPT即转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址,属于多对多或多对一转换,可以节约IP地址,使用场景较多,主要适用于内部大量用户需要上网,同时仅有少数几个公网IP地址可用的场景下。
出接口地址(Easy-IP):因其转换方式非常简单,所以也称为Easy-IP,和NAPT一样,既转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,可以节约IP地址,主要适用于没有额外的公网地址可用,内部上网用户非常多的场景下,直接通过外网接口本身的IP地址作为转换目标。
Smart NAT(智能转换):是NAPT和NAT No-PAT相结合工作,通过预留一个公网地址进行NAPT转换,而其他的公网地址用来进行NAT No-PAT转换。
NAT Server:静态一对一发布,主要用于内部服务器需要对Internet提供服务时使用。
- 三元组NAT:与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普通NAT中无法实现的问题。
二、如何解决源地址转换环境下的环路和无效ARP问题?
在配置华为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这个地址。
- NAT Server(精细):也是NAT Server转换类型中的一种,表示源地址和转换后的地址映射关系,已经具体定位到某个端口,如:源地址为192.168.10.5,转换后的地址为202.96.10.2,做了NAT Server(精细)的NAT转换,那么可能是访问202.96.10.2的FTP流量(21端口)会转发到192.168.10.5这个地址,但若访问202.96.10.2的Web流量(80/443端口),就不一定还是转发到192.168.10.5这个地址,可以说NAT Server(精细)是基于端口的NAT转换。
三、什么是Server-map表?
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表来进行目标地址转换。
- 反向条目(Reverse):不携带端口信息,且目标地址是任意的,用来使服务器可以访问Internet。
四、NAT对报文的处理流程
防火墙接口从收到一个报文到最终发送出去需要经历一系列处理流程,而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环境中,安全策略的源地址应该是源地址转换之前的地址,目标地址应该是目标地址转换后的地址。
五、开始配置NAT
为了更好更直接的把效果展示出来,我在这里搭建一个拓扑图,模拟192.168.10.0/24网络为内网,192.168.200.0/24为外网,具体操作我会详细写在下面,注意(在配置每种NAT之前我会把上一个NAT所配置的策略和地址池清空,为了更直观的展现给大家)拓扑图如下:
1、根据拓扑图配置设备的IP地址及网关
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
2、配置NAT No-PAT
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外网,然后查看会话表
3、配置NAPT
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外网查看会话表
4、配置Easy-IP
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外网查看会话表
5、配置NAT Server
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了
博客到此结束!
来源:51CTO
作者:俊伟祺i
链接:https://blog.51cto.com/14156658/2434477?source=drh