分类: 系统运维
2011-10-20 10:42:19
下面以一个示例介绍利用NAT实现TCP负载均衡的原理。示例网络结构如图5-21所示。在本示例中,内部网络有多个真实服务器主机,IP地址分别是1.1.1.1、1.1.1.2、1.1.1.3……。而对应的全局地址(虚拟主机)只有一个,那就是1.1.1.127。外部用户对内部的真实主机访问时,NAT路由器会会截获得访问的数据包,把目的地址以以循环方式把目的地址转换为对应的真实主机上,这样就可以完成内部真实主机(服务器)的TCP负载均衡。
图5-21 利用NAT实现TCP负载均衡示例网络结构
下面是具体的转换原理示例。
(1)外部网络用户主机B(IP地址为9.6.7.3)发起与虚拟主机(内部全局地址)1.1.1.127的连接。此时数据包中的源地址为外部本地地址9.6.7.3,目的地址为虚拟主机地址1.1.1.127。
(2)当路由器接收到连接请求数据包时,创建一个内部网络中真实主机(如1.1.1.1)进行关联的新的NAT转换条目。
(3)NAT路由器把连接请求的数据包中的目的地址用真实主机的本地地址进行替换(源地址不变),然后继续发送连接请求数据包。
(4)内部网络中真实主机1.1.1.1接收到这个连接请求数据包,并发出一个应答数据包。应答数据包中的源地址是内部真实主机本地地址(1.1.1.1),目的地址为外部网络主机B的IP地址(9.6.7.3)。
(5)当NAT路由器接收到这个应答数据包后,使用内部本地地址和端口号,以及外部地址和端口号作为关键字在NAT表中进行查找。找到后把应答包中的源地址转换成虚拟主机地址(内部全局地址)进行替换(目的地址不变),继续转发应答数据包。直接外部网络用户收到应答数据包。
后面的转换过程就是前面的重复,但下一次转换时虚拟主机所对应的内部主机本地地址不再是1.1.1.1,可能是1.1.1.2,或者1.1.1.3……。这是一个动态NAT转换,不是静态的。