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

三、NAT地址转换表 

       NAT地址转换表是NAT工作的核心,NAT地址转换表被保存在每台NAT设备中,当数据包到达或离开NAT设备的端口时NAT设备都会使用到这个NAT地址转换表。从内部网络到外部网络的每一条连接都会被NAT设备“追踪”,比如在图4的网络场景中NAT设备会“追踪”两条连接。


图4

      当这两条连接建立起来的时候,NAT设备的地址转换表就生成了。当这些连接被关闭的时候,转换表中那些旧的不再使用的转换条目就被删除了,这样就能够为新的转换表空出更多的空间。NAT地址转换表的工作模式会根据NAT工作模式的不同而不同,关于这方面的更多细节我会在后面的NAT工作模式中介绍。为了能够更好地理解每一种NAT的工作模式,我们需要更多地了解一下地址转换表。
      NAT地址转换表越大,NAT设备能“追踪”的双向连接就越多, NAT设备能够为内网服务的主机数就越多,同时也意味着NAT地址转换表越大,它占用设备的内存就越大。相反一台简单普通的家庭用途的NAT路由器能够代理上网的PC数多说也就30-50台了,当然随着PC数量的增加,NAT设备的性能也会逐渐下降。可见NAT设备代理用户上网的数量与NAT设备本身的内存或NAT地址转换表的大小是有关系的。图4是内网用户访问互联网资源的时候NAT路由器形成的地址转换表。
      图4的NAT转换表向我们展示的是每一个到达NAT设备的内网数据包的源IP地址在从NAT设备发送到互联网之前都已经被修改过了。NAT设备为了将数据包正确无误地转发到目标主机,就需要NAT地址转换表“追踪”每一条外出和进入NAT设备的数据包的连接。在这张NAT地址转换表中我们看到内网中的两台主机192.168.1.100和192.168.1.200要分别访问互联网上的119.75.218.77(百度)和173.194.127.113(谷歌)这两个地址。这两台主机将这个请求发送到NAT设备的局域网端口(即内网端口) ,这些数据包会被临时存放在路由器的内存中,然后NAT路由器会查看每一个包中的源IP地址并将源IP地址替换为NAT路由器的公网端口的地址100.100.100.2。数据包通过NAT路由器的公网端口被发送到目的地址,在本例中的目的地址是119.75.218.77和173.194.127.113。另外,在数据包离开路由器外网端口之前,路由器的NAT地址转换表已经形成了。当每一个外网数据包返回公网端口时这些形成的NAT地址转换条目会让路由器知道它应该采取怎样的操作。
      那么当来自Internet的应答数据包回来的时候都发生了什么呢?图5的网络场景会帮助大家更好地理解数据包返回的过程:


图5

       当Internet上的主机应答返回时,路由器会查询NAT转换表,找到正确的条目然后执行转换,比如在图5的场景中第一个从互联网返回的数据包中封装的目的地址是100.100.100.2而不是192.168.1.100,因为前面已经提到过,NAT技术使互联网的用户无法看到内网的真正主机,而只能看到代理内网用户上网的外部端口的公网地址,所以在本例中返回的应答数据包的目的地址都是100.100.100.2。当NAT路由器收到该数据包之后会查询NAT地址转换表,在NAT转换表中查询到100.100.100.2与192.168.1.100相关联,所以将这个包的目的地址100.100.100.2再替换为192.168.1.100,将第二个包的目的地址100.100.100.2替换为192.168.1.200,NAT路由器将新生成的这两个数据包分别发送给192.168.1.100和192.168.1.200,完成转发后NAT路由器再将NAT地址表中的这两条转换记录删除。在本例中的NAT路由器执行转换时会遇到这样一个问题:因为在转换表的记录中100.100.100.2这个公网地址关联了两个内网地址——192.168.1.100和192.168.1.200,那NAT路由器如何判断应该将返回的数据包转发给谁呢?我们看到出现这样的问题的原因是多个内网的IP地址关联到了同一个外网端口的公网IP地址了。此时NAT设备如果仅仅依靠第三层的IP地址是无法帮助NAT路由器区分内网用户的,NAT路由器为了解决这个问题就会使用到第四层的标识——端口号来区分内网用户。用端口号来区分用户的原理我们会在后面的端口NAT模式中继续介绍。
      对于大多数NAT设备,NAT会话的数目多少取决于设备中的内存大小。每条NAT转换会占用160字节的内存,如果有10000条转换条目的话就会使用到1.6MB的内存。因此,一台NAT设备应当有足够多的内存来维持数千条转换列表,但实际上各厂商的设备能存储的转换条目也是各不相同的。Cisco的一些小型号的路由器比如700,800,1600系列的路由器,它们的IOS镜像文件(路由器的操作系统)和NAT承载能力都是相匹配的,这些路由器的NAT会话的数量最多支持2000左右,如果会话的连接在3000到4000之间的时候就会有问题,因为NAT表将会变得很大,NAT路由器的CPU很难处理,将会导致速度下降。在这种情况下当你使用“ping”来进行测试时会有很大的延时并且丢包率会逐渐增加。从中你也许看到了这并不仅仅是内存大小的问题,和CPU的处理能力也有关系。我们看到早期的思科路由器在处理NAT转换时会有一些问题特别是在“NAT Overload Mode(NAT过载模式)”时,这一点已经得到证实。但后来生产的专用的网关或防火墙设备就可以同时处理8000-25000条连接了,这些设备自然也成为了大公司的最佳选择。
      待续……



猜你喜欢

转载自blog.csdn.net/lnboxue/article/details/71402866