双线NAT下 如何利用路由器实现基于端口的流控

www.net130.com     日期:2011-2-18    浏览次数:

拓扑和设备简单描述:


思科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

 

 


通过这样的配置,基本问题已经解决了!通过这个帖子,或许我们能够清晰的看到,当路由器作为双线出口时,一个基本的流控思路就是将双线做合理分工,再加上 NAT后的ACL列表来实现基于端口的数据分流。这里面的重点问题,就像帖主所提到的,当端口变化后,如何控制内网主机访问。相信各种实际情况的不同,具体处理方式可能会略有不同,但总的来说,道理一定是通的。

 

 

分享道
相关新闻