6.16.2 NAT的类型
NAT有很多类型,安全设备上可以配置的有以下类型。
动态NAT。
动态端口地址转换(PAT)。
静态NAT。
静态PAT。
6.16.2.1 动态NAT
动态NAT可以将一组真实(私有)地址转换成公网地址,这些公网地址都是从一个注册(公网)地址的地址池中取出来的,所有公网地址都是在目标网络上可路由的。当主机向特定目的发起连接时,安全设备会根据NAT规则映射的地址池转换主机源地址。在连接没有断开之前,设备会一直维护这个地址转换,当会话终止时,这个地址转换才会被清除。当同一台主机发起了另一个连接,不能保证它还能从地址池中获得相同的地址。地址池地址的分配遵循先到先得的原则。所以,鉴于转换后的地址会发生变化,当使用动态NAT时,目的网络的用户就无法发起入站连接。动态NAT和PAT都只能用于单向连接。图6-10所示为动态NAT的工作方式。
6.16.2.2 动态PAT
动态PAT会把一组真实(私有)地址转换入一个单一的IP地址,方法是使用这个映射的IP地址和源端口号的组合,从而产生一个唯一的会话。因此,每个会话都有着不同源端口号,而所有这些端口号不同的数据包使用的都是同一个IP地址。安全设备会把源地址和源端口号(第3层信息与第4层信息的组合)转换成映射的地址和一个大于1024的唯一端口号。
每个连接所进行的转换都是不同的,因为这些连接的源端口号各不相同。在连接没有断开之前,设备会一直维护这个地址转换,当会话终止时,这个地址转换才会被清除。但端口转换会在闲置时间超过30秒之后超时(超时时间无法进行配置)。PAT可以使用单一的映射地址实现转换,因此能够节省可路由的地址资源。安全设备的接口IP地址也可以作为PAT地址。与动态NAT相似的是,当使用动态PAT时,目的网络的用户也无法发起入站连接。图6-11所示为动态PAT的工作方式。
注释:对于一些数据流与控制路径不同的多媒体应用,PAT不能与之配合使用。
动态NAT和PAT可以一起使用。在这种情况下,会首先把全局地址池中所有的地址都分配出去,当地址池中没有地址可用时,就会使用PAT转换,如图6-12所示。
6.16.2.3 配置动态NAT和PAT
配置动态NAT和PAT要执行以下步骤。
步骤1 在给定接口下用nat命令定义需要转换的真实(私有)地址。
步骤2 配置相应的global命令来为出站接口指定映射地址池(在使用PAT时,这里使用一个地址)。
上述每一条命令中用都会使用NAT ID,这个数字可以将nat命令同global命令建立映射关系。也就是说,NAT ID用来关联nat命令和global命令。读者可以回到图6-10和图6-11的例子中查看相关的配置。
当用到了多个接口时,NAT ID可以用来将多个NAT规则关联到一起。比如,NAT ID 1用来配置内部接口和DMZ接口的nat。再用同样的ID 1配置外部接口的global命令。这样,来自内部接口和DMZ接口的流量在流出外部接口时,会共享同一个映射地址池或同一个PAT地址。例6-14对以上案例进行了演示。
例6-14 为内部接口和DMZ接口配置同样的NAT ID
NAT ID也可以为现有接口关联多个global命令。比如,外部接口和DMZ接口的global命令都使用NAT ID 1,再用同样的ID 1配置内部接口的nat命令来指定哪些内部流量在去往外部接口和DMZ接口时需要转换。类似地,NAT ID 1可以用在DMZ接口上,而用在外部接口的global命令也用在DMZ流量上。
例6-15 为多条Global命令配置同样的NAT ID
6.16.2.4 静态NAT
静态NAT生成的是一个固定不变的(一对一)转换,将真实(私有)地址映射成公网地址。每个连续的连接通过静态NAT都可以拥有一个固定的转换规则(映射的地址是一样的)。由于映射的地址不变,所以目的网络的用户可以向被转换主机发起连接。使用static命令可以为一个较高安全级别接口上的主机地址和一个较低安全级别接口上的主机地址建立一个永久性的关联。静态NAT和PAT都可以用于双向连接。图6-13所示为一个静态NAT的例子。
配置地址转换有很多方法,下面的例子中所示为其中的一些配置方案。
例6-16所示为如何为一个内部IP地址(10.1.1.1)到一个外部IP地址(209.165.200.1)配置静态NAT转换(固定转换)。
例6-16 配置内部NAT(一对一)静态转换
例6-17所示为如何用静态映射为外部地址(209.165.200.15)到内部地址(209.165.200.6)配置一个外部NAT转换(固定转换)。
例6-17 配置外部NAT(一对一)静态转换
例6-18所示为如何为一个有24位子网掩码的子网(一对一,主机对主机)配置一个静态的映射(固定转换)。
例6-18 配置内部NAT为整个子网执行(一对一)静态转换
6.16.2.5 静态端口地址转换(PAT)
静态PAT与静态NAT有些相似,它们的区别在于静态PAT可以为私有地址和转换后的地址指定第4层的端口信息。
当TFTP、HTTP和SMTP服务可以在本地网络的不同服务器上获得时,如果想要为公网用户提供单一的地址去访问这些服务,使用PAT是非常合适的。为所有服务器定义多个静态语句,将这些服务器各自的真正IP地址映射到同一公有IP地址和不同端口的组合。
real_ip_A / public_ip_A / TFTP
1. real_ip_B / public_ip_A / HTTP
2. real_ip_C / public_ip_A / SMTP
图6-14所示为如何为映射进同样的公有IP地址的多种服务配置静态PAT语句。
6.16.3 在启用NAT的情况下绕过NAT转换
前文中已经提到过,在启用了NAT控制的情况下,每个发起的连接都需要有相应的NAT规则。以下三种方法之一可以在启用了NAT控制的情况下,使特定主机能够绕过网络地址转换。
Identity NAT。
静态Identity NAT。
NAT免除(NAT Exemption)。
6.16.3.1 Identity NAT(nat 0命令)
Identity NAT与动态NAT有些类似,但Identity NAT的真实与映射后的IP地址相同,因此无需配置映射的全局地址池。只有"被转换的"主机可以实现NAT转换,返回流量可以放行。Identity NAT只能实现单向通信,即使映射后的地址和真实地址一模一样,由外部发起的连接也不能进入内部网络。
图6-15所示为配置Identity NAT的方法,NAT不会为地址在209.165.201.0/27网络内部的主机进行地址转换,这些源地址在从防火墙出去的时候不会变化。在使用公网可路由地址的内部网络不需要进行地址转换的情况下,也可以使用这种方法。
6.16.3 在启用NAT的情况下绕过NAT转换
前文中已经提到过,在启用了NAT控制的情况下,每个发起的连接都需要有相应的NAT规则。以下三种方法之一可以在启用了NAT控制的情况下,使特定主机能够绕过网络地址转换。
Identity NAT。
静态Identity NAT。
NAT免除(NAT Exemption)。
6.16.3.1 Identity NAT(nat 0命令)
Identity NAT与动态NAT有些类似,但Identity NAT的真实与映射后的IP地址相同,因此
无需配置映射的全局地址池。只有"被转换的"主机可以实现NAT转换,返回流量可以放行。Identity NAT只能实现单向通信,即使映射后的地址和真实地址一模一样,由外部发起的连接也不能进入内部网络。
图6-15所示为配置Identity NAT的方法,NAT不会为地址在209.165.201.0/27网络内部的主机进行地址转换,这些源地址在从防火墙出去的时候不会变化。在使用公网可路由地址的内部网络不需要进行地址转换的情况下,也可以使用这种方法。
6.16.3.2 静态Identity NAT(static 命令)
静态Identity NAT与静态NAT类似,静态Identity NAT会为真实地址生成一个固定的(一对一)转换,但转换后的地址与转换之前是相同的。静态Identity NAT可以用于双向通信。
图6-16所示为配置静态Identity NAT的方法,NAT不会为地址在10.1.1.0/24网络内部的主机进行地址转换,这些源地址在从防火墙出去的时候不会变化。如果这个地址是一个公网可路由地址,外部用户就可以对这个地址发起入站连接。
例6-19所示为配置外部静态Identity NAT的方法。根据例子中的配置方法,当内部网络访问外部主机209.165.201.15时,NAT不会为其执行地址转换。
例6-19 配置外部静态Identity NAT
6.16.3.3 NAT免除(加载ACL的nat 0)
NAT免除(nat 0 access-list)与Identity NAT类似,它们之间最大的区别是NAT免除可以实现双向通信,即NAT免除允许被转换的主机和远程主机发起连接。
图6-17所示为如何配置NAT免除,NAT不会为地址在209.165.201.0/27网络内部的主机进行地址转换,因为这些地址会从设备的另一个接口出去。外部网络(目的端)用户也可以向网络209.165.201.0/27中的主机发起连接。
6.16.4 策略NAT
策略NAT与静态NAT类似。不过策略NAT可以定义一个条件,这个条件会检查源地址和目的地址,并以此决定如何执行地址转换。使用了这个特性,对源地址执行的转换可以根据目的地址的不同而变化,如
主机A与服务器A通信→转换为Public_IP_A。
主机A与服务器B通信→转换为Public_IP_B。
策略NAT要使用访问列表指定源和目的地址(端口)的组合,并通过这个列表决定如何为本地流量执行地址转换。普通的NAT只使用源地址/端口,而策略NAT则不仅使用源地址/端口,还会使用目的地址/端口来定义真实地址的转换方式。
图6-18所示为如何使用nat/global命令配置策略NAT免除。地址转换会根据源目的地址对来执行。在这个例子中,当内部网络10.1.1.0/24中的主机要向网络172.16.1.0/24中的主机发起连接时,源地址会被转换为209.165.202.1-10。
而当同样的内部网络10.1.1.0/24中的主机要向网络192.168.1.0/24中的主机发起连接时,源地址则会转换为209.165.202.130-140。当使用nat/global命令时,通信是单向的;而当使用static命令时,则可以实现双向通信。
6.16.5 NAT的处理顺序
如果在防火墙上配置了很多类型的地址转换,就有可能出现一些重叠。这时,防火墙会将真实(私有)地址与NAT规则按照以下的NAT处理循序依次尝试匹配,直至发现第一个匹配项为止。
1.NAT免除(使用nat 0 access-list命令)。
2.策略NAT(使用加载了access-list的static命令)。
3.静态NAT(使用static命令)。
4.静态PAT(使用static命令)。
5.策略NAT(使用加载了access-list的nat命令)。
6.动态NAT(使用nat命令)。
7.动态PAT(使用nat命令)。