最新消息:阿啰哈,本人90后,目前单身,欢迎妹子们来撩!.(。→‿←。) 微信:frank01991

NAT之流量负载均衡

Cisco 林志斌 1011浏览

内部目标地址的转换,可以用来实现TCP流量的负载均衡。当内部网络某台主机TCP流量负载过重时,可能需要多台主机进行TCP业务的均衡负载。这时,可以考虑用NAT来实现TCP流量的负载均衡,NAT创建了一台虚拟主机(就是公网地址)提供TCP服务,该虚拟主机对应内部多台实际的主机,然后对目标地址进行轮询置换,达到负载分流的目的。但是对于其它的IP流量,不做任何的改变,除非NAT作了其它配置。
配置NAT实现TCP负载均衡,内部网络的地址可以是合法的全局地址,也可以是私有网络地址。但是虚拟主机地址必须为合法的全局地址(就是公网地址)。
上面所谓的虚拟主机,可以这样理解,看下图,在Private路由器上配置了NAT实现内部服务器的WWW流量的负载均衡,这时,外部网络要访问WWW服务时,就是使用f0/0接口的这个公网IP——220.248.192.1,进行访问的。这时,相对于外部的网络而言,它们就可以把220.248.192.1当成是一台WWW服务器,但我们可以知道,这个IP只不过是Private路由器上f0/0接口的IP,实际访问的WWW内容是内部两台服务器所提供的,所以是虚拟主机。

 


Private路由器上的配置:
interface FastEthernet0/0
 ip address 220.248.192.1 255.255.255.252
 ip nat outside
 duplex auto
 speed auto
!
interface FastEthernet1/0
 ip address 192.168.1.254 255.255.255.0
 ip nat inside
 duplex auto
 speed auto

ip nat pool kashu 192.168.1.1 192.168.1.2 prefix-length 24 type rotary
ip nat inside destination list 100 pool kashu

ip route 0.0.0.0 0.0.0.0 220.248.192.2
!
access-list 100 permit ip any host 220.248.192.1
(注意:访问列表定义的是内部全局地址,如果外部网络访问列表中的地址,内部全局地址将会转换成pool中定义的内部本地地址。关于这个地址所使用的ACL类型,在Cisco路由器中可以使用标准、扩展和命名类型的。如:上面的这条ACL可以替换成:
access-list 1 per host 220.248.192.1
或ip access-list standard aaa
per host 220.248.192.1
或ip access-list extended aaa
per ip any host 220.248.192.1)

 

当外部网络的PC在访问我们内部的WWW服务时,可以看到在Private路由器上的详细转换过程:
Private#debug ip nat detailed
IP NAT detailed debugging is on
Private#

*Mar  1 00:15:59.499: NAT: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [13373]

*Mar  1 00:15:59.503: NAT: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [13373]

*Mar  1 00:15:59.663: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2984] 

*Mar  1 00:15:59.663: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2984]

*Mar  1 00:15:59.687: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [13406]

*Mar  1 00:15:59.687: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [13406]

*Mar  1 00:15:59.739: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [13407]

*Mar  1 00:15:59.739: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [13407]

*Mar  1 00:15:59.967: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2985] 

*Mar  1 00:15:59.967: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2985]

*Mar  1 00:16:16.983: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2986] 

*Mar  1 00:16:16.983: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2986]

*Mar  1 00:16:16.987: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2987] 

*Mar  1 00:16:16.987: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2987]

*Mar  1 00:16:17.139: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [14668]

*Mar  1 00:16:17.139: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [14668]

*Mar  1 00:16:17.143: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [14677]

*Mar  1 00:16:17.143: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [14677]

*Mar  1 00:16:17.371: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2988] 

*Mar  1 00:16:17.371: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2988]

*Mar  1 00:16:17.463: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2989] 

*Mar  1 00:16:17.463: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2989]

*Mar  1 00:16:17.467: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2990]

*Mar  1 00:16:17.467: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2990]

*Mar  1 00:16:17.467: NAT*: i: tcp (192.168.1.2, 80) -> (1.1.1.2, 1063) [2991] 

*Mar  1 00:16:17.471: NAT*: s=192.168.1.2->220.248.192.1, d=1.1.1.2 [2991]

*Mar  1 00:16:17.595: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [14720]

*Mar  1 00:16:17.595: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [14720]

*Mar  1 00:16:17.875: NAT*: o: tcp (1.1.1.2, 1063) -> (220.248.192.1, 80) [14746]

*Mar  1 00:16:17.875: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.2 [14746]

clear ip nat translation *后的第二次访问,可以发现轮询访问已经发生了,目的是流量的负载均衡:
Private#debug ip nat detailed
IP NAT detailed debugging is on
Private#

*Mar  1 00:18:14.323: NAT: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23368]

*Mar  1 00:18:14.327: NAT: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23368]

*Mar  1 00:18:14.507: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1004] 

*Mar  1 00:18:14.507: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1004]

*Mar  1 00:18:14.571: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23403]

*Mar  1 00:18:14.571: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23403]

*Mar  1 00:18:14.575: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23404]

*Mar  1 00:18:14.575: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23404]

*Mar  1 00:18:14.627: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1005] 

*Mar  1 00:18:14.627: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1005]

*Mar  1 00:18:14.639: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1006] 

*Mar  1 00:18:14.639: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1006]

*Mar  1 00:18:14.707: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23424]

*Mar  1 00:18:14.707: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23424]

*Mar  1 00:18:14.751: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1007] 

*Mar  1 00:18:14.751: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1007]

*Mar  1 00:18:14.875: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23439]

*Mar  1 00:18:14.875: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23439]

*Mar  1 00:18:14.935: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1008] 

*Mar  1 00:18:14.935: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1008]

*Mar  1 00:18:14.939: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1009] 

*Mar  1 00:18:14.939: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1009]

*Mar  1 00:18:14.943: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1010] 

*Mar  1 00:18:14.943: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1010]

*Mar  1 00:18:15.031: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23468]

*Mar  1 00:18:15.031: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23468]

*Mar  1 00:18:15.107: NAT*: i: tcp (192.168.1.1, 80) -> (1.1.1.2, 1068) [1011] 

*Mar  1 00:18:15.107: NAT*: s=192.168.1.1->220.248.192.1, d=1.1.1.2 [1011]

*Mar  1 00:18:15.179: NAT*: o: tcp (1.1.1.2, 1068) -> (220.248.192.1, 80) [23485]

*Mar  1 00:18:15.179: NAT*: s=1.1.1.2, d=220.248.192.1->192.168.1.1 [23485]

可以测试多次,验证效果。

转载请注明:林志斌 » NAT之流量负载均衡

发表评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址