下面再给大家简要介绍一下NAT技术的另外一项应用——负载均衡。如果不考虑在数据中心应用多的F5类专用负载均衡设备,大家可能对于负载均衡的了解更多是集中在DNS技术上。DNS的负载均衡技术主要采用的是轮询算法(round robin),但DNS负载技术有一个问题较难解决:就是客户端会在本地缓冲DNS IP地址解析,从而使它后续的申请都会到达同一个IP地址,这本身是一项加速技术,但在这里实际上却削弱了DNS负载均衡技术的作用。而NAT负载均衡技术则解决了这个问题,路由器或其它NAT设备把需要负载平衡的多个IP地址翻译成一个公用的IP地址(如图5所示)
图5
假设我们有一台配备一个串行接口和一个Ethernet接口的路由器,Ethernet口连接到内部网络,内部网络上有三台运行同样WEB服务的WEB服务器,IP地址分别为2.2.2.1、2.2.2.2和2.2.2.3,而2.2.2.10则是路由器内口地址(Ethernet接口),路由器外口(串行接口)地址是互联网IP地址,也即需要进行NAT负载均衡地址,为了处理好来自Internet上大量的WEB连接请求,因此需要在此路由器上进行NAT负载均衡配置,把发送到WEB服务器合法Internet IP地址的报文转换成这三台服务器的内部本地地址。假定该路由器外口地址为219.142.5.5,那么每个访问219.142.5.5的TCP连接都会按照规则分发到每一台后端真实WEB服务器上,从而真正实现负载平衡。
下面以图5为例简单介绍一下路由器NAT负载均衡的配置过程如下:
第一步:在路由器接口上进行NAT定义。
interface Ethernet0/0
ip address 2.2.2.10 255.255.255.240
ip nat inside
!
interface Serial0/0
ip address 219.142.5.5 255.255.255.248
ip nat outside
第二步:定义一个标准访问列表(standard access list),用来标识要转换的合法IP地址。
ip access-list 1 permit 219.142.5.5
第三步:定义NAT地址池来标识内部WEB服务器的IP地址,后面的参数要使用rotary,表明我们要使用轮循(Round Robin)的方式从NAT地址池中取出相应IP地址来转换合法IP报文。
ip nat pool websvr 2.2.2.1 2.2.2.3 netmask 255.255.255.248 type rotary
第四步:把目标地址为访问表中IP的报文转换成地址池中定义的IP地址。
ip nat inside destination list 1 pool websvr
到此为止,NAT负载均衡的设置结束,是不是很简单?
这里只是对企业中的NAT应用作了很基础的介绍,真正深入的应用和技术研究远不止于此,双层NAT,P2P和NAT检测,这些都是深入讨论的焦点。本文中的NAT应用也主要是建立在传统TCP基础之上,对于UDP和NAT的技术应用并没有说明,因为那会涉及如P2P之类的NAT穿透和检测技术。现在的企业一般都会禁止P2P,所以除非必要,UDP也是作严格控制的,相比TCP而言应用面要小得多,这里就不作分析了。对于刚刚步入企业的网管人员来说,合理的运用NAT技术一定会让你的全局网络规划可控性更高,千万不要小看了它!