200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > NAT 2 - 利用Rotary NAT实现TCP流量负载均衡 [译] + GNS3实现

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

时间:2019-07-11 04:06:04

相关推荐

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

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

网络拓扑:

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

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

配置:

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

ip nat poolname start-ip end-ip{netmasknetmask |prefix-lengthprefix-length} type rotary

---------

ip nat poolSERVER_LIST10.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 listaccess-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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。