NAT 2 - 利用Rotary NAT实现TCP流量负载均衡 [译] + GNS3实现

利用Rotary NAT实现TCP流量负载均衡



网络拓扑:

一个公司里有多个服务器为多个主机提供服务, 利用RotaryNAT, 我们可以在内部网络建立一个虚拟服务器来和真正的服务器群进行通信。 当来访流量的目的地址匹配了访问列表(允许虚拟服务器IP地址通过)时,IP包的目的地址就会替换为循环地址池 (Rotary Pool) 中的 IP 地址。地址分配是用循环算法 (Round-Robin) 来执行的。配置了NAT的路由器会执行以下步骤来实现循环地址分配:


  1. 主机试图与虚拟服务器10.1.1.5建立TCP连接
  2. 路由器接收到连接请求后开始进行地址转换,分配下一个真实服务器的IP地址 (我认为在这之前是先匹配ACL,符合条件然后再向下进行)
  3. 路由器用真实服务器的地址替换掉来访IP包中的目的地址然后转发该数据包
  4. 服务器接收到请求后答复
  5. 路由器收到服务器答复的数据包,然后查询NAT表。随后把数据包的源地址替换为虚拟服务器地址再把包转发出去


配置:

先定义一个包含真实服务器IP的地址池 - 在全局配置模式下使用以下命令


    ip nat pool name start-ip end-ip {netmask netmask | prefix-length prefix-length} type rotary

---------

ip nat pool SERVER_LIST 10.1.1.10 10.1.1.11 prefix-length 24type rotary

--------


再定义一个访问列表,来匹配访问虚拟服务器地址10.1.1.5的TCP数据流。非TCP的数据流将不会被地址转换

---------

access-list 110 permit tcp any host 10.1.1.5

---------


然后用上步定义的访问列表来配置一个动态的内网目的地址NAT


    ip nat inside destination list access-list-numberpoolname

----------

ip nat inside destination list 110 pool SERVER_LIST

----------


最后,定义网内和网外接口

interface fastethernet 0/0
ip nat inside
!
interface fastethernet 0/1
ip nat outside
!



验证

当有多个Telnet会话 (TCP会话,端口23) 与虚拟服务器10.1.1.5建立连接时,配置了NAT的路由器用轮询的方式来进行真实服务器IP地址分配。以下输出显示三个与10.1.1.5建立的Telnet会话. NAT路由器非配10.1.1.10 给首个连接,10.1.1.11给第二个连接,然后10.1.1.10给第三个连接。

NAT 地址转换表
NAT_Router# show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.5:23        10.1.1.10:23       192.168.1.2:24440  192.168.1.2:24440
tcp 10.1.1.5:23        10.1.1.10:23       192.168.1.2:50804  192.168.1.2:50804
tcp 10.1.1.5:23        10.1.1.11:23       192.168.1.2:38530  192.168.1.2:38530


=====================================================

Rotary NAT在GNS3中的实现

根据上面提供的实例,我决定在GNS3中模拟下,并且复习下前几天看到的PAT把他们放在同一个拓扑里实现下

设想这种情况,公司有两个分部,其中B分部有数台主机需要跨过WAN访问A分部的服务器,用Rotary NAT来实现TCP流量的负载均衡
B分部访问WAN的时候用PAT来进行NAT。

要求和拓扑




 之前总是遇到 ‘lost communication to server 127.0.0.1' 的问题。。。重新把GNS3搞了一下,好容易才解决,用3725的IOS重新做了一遍,结果如下。

1. 配置端口IP地址并把两边的路由器略微处理下当做Host 和 Server用
2. 在Rotary_NAT_Server & PAT_Host上配置RIP
3. 在Rotary_NAT_Server上配置Rotary NAT,在PAT_Host上配置PAT

验证
从Host 1 telnet Server 10.1.1.5 

Rotary_NAT_Server 的输出
========================

Rotary_NAT_Server#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.5:23        10.1.1.10:23       192.168.1.20:11141 192.168.1.20:11141  >>>> 此时还没有在PAT_Host上配置PAT
Rotary_NAT_Server#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.5:23        10.1.1.11:23       192.168.1.20:48636 192.168.1.20:48636>>>.. 可以看出两个server ip是交替分配
Rotary_NAT_Server#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 10.1.1.5:23        10.1.1.10:23       171.16.1.100:11485 171.16.1.100:11485>>>配置了PAT后就只能看到公网的地址了


PAT_Host 的输出
=================

PAT_Host#sh ip nat trans
Pro Inside global      Inside local       Outside local      Outside global
tcp 171.16.1.100:11485 192.168.1.20:11485 10.1.1.5:23        10.1.1.5:23



后记
GNS3是网络学习的模拟神器,只可惜次次把我逼出内伤,要么在实验中出问题,要么就是保存后出问题。俗话说得好,磨刀不误砍柴工,看来我是需要好好研究下GNS3的用法与Trouble shooting
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值