NAT(网络地址转换)(四)

来源:互联网 发布:sql随机11序号 编辑:程序博客网 时间:2024/04/29 03:27

(二)动态NAT 

      动态NAT是我们要讨论的第二种NAT模式。动态NAT和静态NAT一样都不太适合应用在小网络中,而是更多地应用在具有复杂网络的较大规模的公司中。动态NAT和静态NAT的区别是静态NAT提供了一对一的内部私有地址和公网地址的静态映射,而动态NAT也会将私有地址和公网地址进行映射但并不是一对一的映射,即内部私有地址也许会映射到一组公网地址上,具体使用(映射到)哪个公网地址是不确定的。这些公网地址都来源于NAT路由器上配置的地址池。

      对于动态NAT,只有NAT路由器收到地址转换请求的时候才生成地址转换表并使用它进行地址转换。这点与静态是不同的,静态NAT的地址转换表的特点是管理员一旦配置了静态NAT的一对一的IP地址对应关系后,静态地址转换表就已经生成了,而且静态地址转换表中的映射关系会一直保留在内存中,是不存在超时的。动态NAT地址转换表是有超时时间的,超时时间可由管理员手工配置,超时(过期)了的转换条目会被定期地从地址转换表中清除掉,这种机制可让路由器的内存为其他的内部主机腾出更多的内存空间。图9描述了动态NAT的工作方式:


图9

       图9中我们从运营商租用了4个公网地址,NAT路由器将这4个公网地址放在了一个IP地址池中。地址池中的这4个公网地址将会按顺序地被动态地映射到内部上网主机。比如,工作站192.168.1.100首先发起了上网请求,这个工作站映射的公网地址就是100.100.100.3,可以看出这个公网地址是NAT路由器从4个公网地址所在的IP地址池中顺序选取的。工作站的私有地址和公网地址的映射关系会一直持续到工作站上网会话的结束。在NAT地址转换表超时前,如果NAT路由器没有收到任何该工作站发送的流量,则这台NAT路由器将终止这条映射记录并将释放掉的公网IP地址重新分配给其他的内网工作站使用。图9中的工作站192.168.1.101上网使用的公网地址为100.100.100.4,工作站192.168.1.102上网使用的公网地址为100.100.100.5。设想一个场景,午休时间到了,三台工作站的用户都出去吃午饭了。过了一段时间,NAT路由器的超时时间到了,三台工作站的映射记录相继被路由器删除。接着IP地址为192.168.1.102的用户首先返回并打开IE浏览器开始上网。NAT路由器将重新为这个用户建立一条映射关系,这时这个用户上网使用的公网地址就变为了100.100.100.3,如图10所示,动态NAT中内网用户上网时使用的公网地址不是固定的,而是随机的。


图10

1、部署动态NAT
      想到动态NAT时,我真的无法回想起在为公司/企业或我自己的网络部署NAT时用到过它,但那并不意味着动态NAT没有用。每个人对网络的需求都是不同的,尽管我必须承认动态NAT同其他形式的NAT相比部署起来有更大的难度,但在某些网络的搭建过程中选择动态NAT时它却工作得非常好。
      下面的这个企业案例为我们展示了在什么情况下我们应该考虑部署动态NAT。出于隐私方面的考虑,本案例中的公司的真实名称均已隐去。”netscene”公司是一家软件开发公司,该公司致力于应用软件的研发。作为一家大型软件公司,它有多个能够帮助它完成软件开发的承包商。出于研发的需要,”netscene”公司需要它的软件承包商(partner)与”netscene”公司的内部私有网络存在一条永久连接。这样,这些承包商就能够通过网络得到所需的项目源代码。现在“netscene”公司为了让连接它的网络更安全,它购买了防火墙。通过对防火墙进行配置来对访问研发网络的每个承包商进行规范。如图11所示:


图11

 ”netscene”公司的防火墙只允许”partner”的内部网络访问研发服务器,”partner”所在的网段是192.168.10.0/24,这个网段也是”partner”的主要研发网络。如果仅仅是这样的需求,这种网络拓扑也能工作的很好。但是”partner”正在扩展它的研发网络,“partner”将新扩展的这个研发网络称为“partner-new”,”partner-new”所在的网段是192.168.20.0/24,所以192.168.20.0/24也需要访问netscene的研发网络。如图12所示:

图12

      在“partner-new”这个网段上的所有主机都通过从DHCP服务器那里获取(租用)的IP地址访问netscene网络。为了让新网络能够访问netscene的网络,我们需要“欺骗”一下防火墙,让防火墙认为来自新网络的工作站实际上是192.168.10.0/24这个网络的一部分,那样的话,防火墙就不拒绝这些流量了。其实这个时候你也可以使用前面介绍的静态NAT来解决这个问题,但静态NAT用在这个场合是有一些问题的:
(1)所有的新网络的主机都使用DHCP服务,这些主机的地址都不是固定的,而静态NAT是需要一对一的映射关系。
(2)partner的管理员想最大程度地做到新网络(partner-new)的访问是安全的,这就需要跟踪每一个连接进来的IP,由于新网络中的用户的IP地址都是动态的,所以实现起来比较复杂。
      在这个场景中如果部署动态NAT将工作得很好。我们可以在新旧网络之间部署一台路由器。如图13所示:


图13

       根据动态NAT的工作方式,我们需要将192.168.10.0/24这个网段的若干IP地址保留起来,比如可以保留192.168.10.225-192.168.10.254这30个地址。这些保留起来的IP地址都是NAT-B路由器用来映射新网络中的主机的。这样,新网络中的主机无论被映射到保留地址中的任何一个IP地址,netscene防火墙都会认为它是来自192.168.10.0/24这个网络的一部分。至于192.168.10.0/24这个网段到底需保留多少个用于转换的IP地址就要取决于新网络中发起同步连接的PC数量了。例如,新网络中如果有25台主机同时向netscene网络发起连接,那么在192.168.10.0这个网络中就至少需要25个被转换的IP地址。这些被转换的IP地址必须保留起来不能被192.168.10.0这个网络中的其他主机使用,否则就会发生IP地址冲突。所以推荐将这个网络的最后30个地址预留出来作为转换地址。

2、配置动态NAT

如图14所示:


图14

      “Partner-new”网络中的主机192.168.20.100和192.168.20.200需要访问netscene网络,当第一台主机192.168.20.100的数据包到达NAT-B时,NAT-B将192.168.20.100替换为192.168.10.225;当第二台主机192.168.20.200的数据包到达NAT-B时,NAT-B将192.168.20.200替换为192.168.10.226。如果partner-new网络中有更多台主机需要访问netscene网络,那么当这些数据包到达NAT-B时,NAT-B都会将这些数据包中的源IP地址替换为partner网络预留的30个IP地址中的任何一个IP地址,然后再将其转发到netscene研发网络。
 
路由器NAT-B的动态NAT配置如下:

NAT-B>en
NAT-B#conf t
NAT-B(config)#access-list 100 permit ip 192.168.20.0 0.0.0.255 192.168.0.0 0.0.0.255
#创建访问控制列表允许来自192.168.20.0/24的主机访问192.168.0.0/24网络内的主机
NAT-B(config)#ip nat pool partner-new-pool 192.168.10.225 192.168.10.254 netmask 255.255.255.0
#创建名称为partner-new-pool的地址池,并将192.168.10.225到192.168.10.254这30个IP地址放到地址池中
NAT-B(config)#ip nat inside source list 100 pool partner-new-pool
#将访问控制列表和创建的地址池相关联
NAT-B(config)#interface f0/0
NAT-B(config-if)#ip nat inside      #在内部接口f0/0启用NAT
NAT-B(config-if)#exit
NAT-B(config)#interface f0/1
NAT-B(config-if)#ip nat outside    #在外部接口f0/1启用NAT
NAT-B(config-if)#end
NAT-B#