|
【51CTO.com 独家特稿】在51CTO论坛中看到一篇悬赏帖,帖子是讲路由器双线接入NAT后的数据分流问题的。之所以编辑成本文,主要是由于目前大家都比较关注如何利用路由器进行合理的数据分流。记者也查阅了一些资料,整理一些解决此类问题的知识点,希望对51CTO.com广大的网络工程师有所贡献。闲话少说,请看原帖悬赏内容:
拓扑和设备简单描述:
思科2811路由器一台,三个FE口,f0/0接ISP1,f0/1接ISP2(ADSL),f1/0接内网交换机
问题呈现:
ISP1专线有公网IP,下载可以,但开网页不行,第一次联站点要5秒,后面就对了;
ISP2是ADSL,开网页比ISP1快多了,下载速度不行。
帖主分析:估计ISP1开网页慢是因为DNS解析慢的原因。
帖主为了优化,想实现如下需求:
让DNS解析只通过ISP2来走,PC在从ISP2得到正确外网域名IP地址后,再通过ISP1跑所有数据,在ISP2不能解析地址时,再自己解析。
ISP2在ISP1失效时,所有数据走自己。
帖主分析难点:这里的难点在于内网通过ISP1或2访问外网时作了NAT复用,端口就有变化了,怎么去控制内网的访问呢?
在解决这个问题之前,我们先来了解一些知识点:
NAT(Network Address Translation)的功能,就是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请。在网络内部,各计算机间通过内部的IP地址进行通讯。而当内部的计算机要与外部internet网络进行通讯时,具有NAT功能的设备(比如:路由器)负责将其内部的IP地址转换为合法的IP地址(即经过申请的IP地址)进行通信。
通常NAT用于两种情况:一个企业不想让外部网络用户知道自己的网络内部结构,可以通过NAT将内部网络与外部Internet 隔离开,则外部用户根本不知道通过NAT设置的内部IP地址,其次是一个企业申请的合法Internet IP地址很少,而内部网络用户很多。可以通过NAT功能实现多个用户同时公用一个合法IP与外部Internet 进行通信。
而要达到这些目的,需要设置NAT功能的路由器至少要有一个内部端口(Inside),一个外部端口(Outside)。内部端口连接的网络用户使用的是内部IP地址。并且内部端口可以为任意一个路由器端口。外部端口连接的是外部的网络,如Internet 。外部端口可以为路由器上的任意端口。另外提醒一点,设置NAT功能的路由器的IOS应支持NAT功能。有关NAT更多的介绍,请参阅《路由器NAT功能配置简介》一文。
现在我们来看看怎样解决刚才提到的几个问题:
解决思路:
ISP2的nat匹配DNS解析
ISP1的nat匹配其他
或者
ISP2跑http
其他的跑ISP1
配置实例:
interface FastEthernet0/0 --------假设该端口为ISP 2接入端口
ip address 192.168.1.2 255.255.255.0 --------分配地址
ip nat outside --------指定为NAT Outside端口
!
interface FastEthernet0/1 ---------假设该端口为ISP 1接入端口
ip address 192.168.2.2 255.255.255.0 --------分配地址
ip nat outside --------指定为NAT Outside端口
!
interface FastEthernet1/0 -------假设该端口为内部网络端口
ip address 192.168.3.1 255.255.255.0 --------分配地址
ip nat inside --------指定为NAT Inside端口
ip policy route-map t0 --------在该端口上使用route-map t0进行策略控制
!
ip nat inside source list 101 interface FastEthernet0/0 overload http应用做PAT,匹配101acl
ip nat inside source list 102 interface FastEthernet0/1 overload 其他应用做PAT,匹配102acl
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.2.1 ------静态路由,对Internet的访问通过192.168.2.1(ISP1)链路
ip route 0.0.0.0 0.0.0.0 192.168.1.1 ------静态路由,对Internet的访问通过192.168.1.1(ISP2)链路
ip http server
静太路由不起很大的作用,因为存在策略路由,主要是set int 要求有显示的去往目的的路由
!
access-list 101 permit tcp 192.168.3.0 0.0.0.255 any eq 80
access-list 102 deny tcp 192.168.3.0 0.0.0.255 any eq 80
access-list 102 permit ip any any
!
route-map t0 permit 10 ----定义route-map t0,permit序列为10
match ip address 101 ----匹配101ACL的数据
set interface FastEthernet0/0 ----指定出口为Fastethetnet 0/0
!
route-map t0 permit 20 ----定义route-map t0,permit序列为20
match ip address 102 ----匹配102ACL的数据
set interface FastEthernet0/1 ----指定出口为Fastethetnet 0/1
set ip next-hop verify-availability ----表示强制检测下一跳是否有用,失效则按常规转发,同时新增一个PAT,匹配所有流量,转到ISP1接口。
|
通过这样的配置,基本问题已经解决了!通过这个帖子,或许我们能够清晰的看到,当路由器作为双线出口时,一个基本的流控思路就是将双线做合理分工,再加上 NAT后的ACL列表来实现基于端口的数据分流。这里面的重点问题,就像帖主所提到的,当端口变化后,如何控制内网主机访问。相信各种实际情况的不同,具体处理方式可能会略有不同,但总的来说,道理一定是通的。在此,也感谢51CTO.com的两位网友,他们的ID是:tibetit和 lgq2358132134。论坛原帖地址:http://bbs.51cto.com/thread-678368-1.html
http://network.51cto.com/art/201004/192922.htm
推荐:
路由器双线接入NAT后很容易出现一些怪问题,利用路由器进行合理的数据分流实际就是将双线做合理分工,各司其职,具体就是用ACL列表来实现基于端口的数据分流。 |
|