单路由器多出口解决方案(route-map+sla+track)

网络拓扑请见附件:

背景: 当前越来越多的公司,随着公司的网络结构和规模的扩大,原有的网络带宽已经慢慢达到饱和,这时候需要网络管理员考虑如何解决网速越来越慢的问题。在已经无法再用限制内部员工的网络流量的方式之后,增加出口带宽已经是迫在眉睫。一般都不会选择直接撤掉原先的网络,会先申请一根光纤,然后并入现有的网络中,然后在等原先的带宽到期废弃。有些公司直接慢慢增加外网的出口线路。这样的情况下多出口的网络解决方案尤为重要,能更好的利用网络资源(一根商业光纤价格还是比较昂贵的)。也有些公司增加新的线路就是为了做备份,可是老板不会让一根昂贵的线路睡觉(土豪忽略)。

本文就是要解决,通过分流内部网络分别从不同的出口走,当一条线路down了,会自动切换到另一条线路上。题外话:最好不要安装多条相同的isp服务商的线路在同一所大楼里面,因为一旦大楼机房某个服务商的光端机down了,那就都没用啦。

(1)大体描述网络拓扑结构

client1----->内网部分机器,client2------>内网部分机器。出口router链接内网,也就是连接client1和client2。router分别有二个出口分别连接isp1和isp2(都用路由器代替)。isp1和isp2之间也连接了,并且做了ospf,模拟广域网。

(2)网络设备ip地址

client1---192.168.10.2 ,网关:192.168.10.1;client2---192.168.20.2,网关:192.168.20.1;

router---10.10.10.2连接isp1---10.10.10.1;router---30.30.30.2连接isp2---30.30.30.1;isp1--

20.20.20.1连接isp2---20.20.20.2;

(3)模拟器

本实验用的是web iou

配置:

(1) client1:

部分默认配置略

interface Ethernet0/0

ip address 192.168.10.2 255.255.255.0

no ip route-cache

!

ip default-gateway 192.168.10.1(因为用路由器模拟的所以,先no ip routing后增加网关)

ip forward-protocol nd

(2)client2 

ip default-gateway 192.168.20.1

ip forward-protocol nd

ip default-gateway 192.168.20.1

(3)router

!

redundancy

!

!

!

track 1 ip sla 1 reachability(此处定义一个track,跟踪连接isp1的链路状态,后面的1是调用这条语句的标识,后面是调用哪个sla,不要调用错了。本语句的意思就是判断 sla 1 所定义的语句判断的结果,如果sla 1结果为非,那么结果就是track1 不可达,这个是track调用sla。track自己也可以直接跟踪端口,并且被调用。但是track跟踪端口只可以是本机的,端口,协议或者是服务。而sla 可以判断链路对端的端口是否开启可用。因为在很多情况下,都有由于电信或者联通的机房出现问题导致链路不可用,如果用track本机,那么就算对方down了,也不会被判断出来,所以这里就是track 和sla的结合使用)

!

track 2 ip sla 2 reachability (定义 track 2,跟踪连接isp2的链路状态)

!

interface Ethernet0/0

ip address 192.168.10.1 255.255.255.0

ip nat inside

ip virtual-reassembly in

ip policy route-map ccie

!

--More--

*Nov  2 08:24:59.059: %SYS-5-CONFIG_I: Configured from console by console

interface Ethernet0/1

ip address 192.168.20.1 255.255.255.0

ip nat inside

ip virtual-reassembly in

ip policy route-map ccie (在内部两个接口上应用route-map,这里解释一下做route-map和nat的思路,因为这个解决方案里面的route-map比较多,很多刚刚接触的不知道从何下手,不知道如何去合理的理清思路。大家不妨这样想,一个内部数据要想送出去,那么到达路由器被送出去的时候,网关路由器要对数据进行封装,那么就需要知道下一条地址和如何被PAT转换。那么就很简单了,分为二部分解决,二者route-map没有直接关联,直接关联的都是内部的数据。在内部端口应用的策略是为了让路由器的得到下一条地址。所以以上二个内部端口都应用了route-map)

!

interface Ethernet0/2 (外部端口连接isp1)

ip address 10.10.10.2 255.255.255.0

ip nat outside

ip virtual-reassembly in

!

interface Ethernet0/3 (外部端口连接isp2)

ip address 30.30.30.2 255.255.255.0

ip nat outside

ip virtual-reassembly in

!

no ip http server

no ip http secure-server

ip nat inside source route-map nat1 interface Ethernet0/2 overload

ip nat inside source route-map nat11 interface Ethernet0/3 overload

(以上二句是处理route-map定义的流量 如何被pat,因为是二个出口,所以需要二条语句,第二条为isp2出口,当isp1线路down了之后,路由器会通过第二条语句来pat流量)

ip nat inside source route-map nat2 interface Ethernet0/3 overload

ip nat inside source route-map nat22 interface Ethernet0/2 overload

(同上)

ip route 0.0.0.0 0.0.0.0 10.10.10.1

ip route 0.0.0.0 0.0.0.0 30.30.30.1

!

ip access-list extended client1 (定义client1的感兴趣流)

permit ip 192.168.10.0 0.0.0.255 any

ip access-list extended client2(定义client2的感兴趣流)

permit ip 192.168.20.0 0.0.0.255 any

!

ip sla 1 (测试到isp1的线路)

icmp-echo 10.10.10.1 source-ip 10.10.10.2

frequency 5(定义一个sla 通过icmp的echo包从本机的10.2到10.1,并且是5秒一次,不能低于5秒。如果10.1down了那么sla 1 结果就是非,track 1 的结果就是非)

ip sla schedule 1 life forever start-time noaw

(定义sla 1 从现在开始到永远 都开启)

ip sla 2 (测试到isp2 的线路)

icmp-echo 30.30.30.1 source-ip 30.30.30.1

frequency 5

ip sla schedule 2 life forever start-time now

!

route-map ccie permit 10

match ip address client1

set ip next-hop verify-availability 10.10.10.1 1 track 1

set ip next-hop verify-availability 30.30.30.1 2 track 2

!

route-map ccie permit 20

match ip address client2

set ip next-hop verify-availability 30.30.30.1 1 track 2

set ip next-hop verify-availability 10.10.10.1 2 track 1

这个route-map是用于定义下一条地址,分别匹配client1和client2的流量,然后为匹配的流量设定下一跳地址,下面一条是备用下一跳地址,只有当第一条语句结果为非时才能用到下一句,还不清楚route-map语法和规则请百度。这样就client1和2定义了主备下一跳地址了,当然是用在内部端口上

!

route-map nat2 permit 10

match ip address client2

match interface Ethernet0/3

!

route-map nat1 permit 10

match ip address client1

match interface Ethernet0/2

!

route-map nat11 permit 10

match ip address client1

match interface Ethernet0/3

!

route-map nat22 permit 10

match ip address client2

match interface Ethernet0/2

!

(这四个route-map和上面的route-map没有关联。主要是为了匹配流量和匹配对应的端口,为下面的pat,可以结合上面的pat部分来看。二者是对应的关系。)

end

以上就是router的配置。

isp1和isp2的配置由于时间关系就忽略了,里面就是对应的端口ip和ospf。下面就直接上测试结果。全部是真实的实验结果。

router路由器上面开启了debug ip nat,查看转换结果

(1)测试1,client1到外网走isp1出口。在client1 上ping广域网

在router上的nat转换表为:

*Nov  2 10:54:55.853: NAT*: s=192.168.10.2->10.10.10.2, d=10.10.10.1 [30]

*Nov  2 10:54:55.854: NAT*: s=10.10.10.1, d=10.10.10.2->192.168.10.2 [30]

*Nov  2 10:54:55.859: NAT*: s=192.168.10.2->10.10.10.2, d=10.10.10.1 [31]

*Nov  2 10:54:55.859: NAT*: s=10.10.10.1, d=10.10.10.2->192.168.10.2 [31]

说明正确。

(2)测试2,关闭isp2路由器的端口。查看网关router的track:

Router#sh track

Track 1

IP SLA 1 reachability

Reachability is Up

2 changes, last change 00:07:31

Latest operation return code: OK

Latest RTT (millisecs) 1

Tracked by:

ROUTE-MAP 0

Track 2

IP SLA 2 reachability

  Reachability is Down

1 change, last change 00:12:07

Latest operation return code: Timeout

Tracked by:

ROUTE-MAP 0

然后在从client2上ping外网,本应该转换为30.30.30.2。

*Nov  2 11:04:25.625: NAT*: s=192.168.20.2->10.10.10.2, d=20.20.20.1 [15]

*Nov  2 11:04:25.626: NAT*: s=20.20.20.1, d=10.10.10.2->192.168.20.2 [15]

*Nov  2 11:04:25.630: NAT*: s=192.168.20.2->10.10.10.2, d=20.20.20.1 [16]

*Nov  2 11:04:25.631: NAT*: s=20.20.20.1, d=10.10.10.2->192.168.20.2 [16]

已经转换成 10.10.10.2的外网地址。

实验结束。谢谢!

时间: 2024-10-20 04:37:57

单路由器多出口解决方案(route-map+sla+track)的相关文章

php单双引号嵌套解决方案

代码如下: <?php $path = "./"; function show_files($path){ //下面是单双引号嵌套解决方案 //echo "<label style='color:blue;background:#bbbbbb;' onclick=\"submit_info('{$path}');\">"; //解决方案1 //echo "<label style='color:blue;back

struts2防止表单重复提交的解决方案

一.造成重复提交主要的两个原因:    在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因. 1. 一是,服务器处理时间久.当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长没能及时看到响应信息,或者出于其它目的,再次点击“提 交”按钮,从而导致在服务器端接收到两条或多条相同的信息.如果信息需要存储到后台数据库中,如此以来就会产生数据库操作异常提示信息,以至于给用户带来 错误信息提示,从而给用

防止表单重复提交的解决方案整理

用户在操作表单Post数据时往往会出现表单数据重复提交的问题,尤其在Web开发中此类问题比较常见.刷新页面,后退操作以前的页面,单机多次按钮都会导致数据重复提交.此类问题是因为浏览器重复提交HTTP请求导致. 公众号原文 下面列出了四种比较常用的解决方案: 1.在数据库添加唯一字段 在数据库建表的时候在ID字段添加主键约束,账号,名称的信息添加唯一性约束.确保数据库只可以添加一条数据. 此方法从根本上的防止了数据重复提交. 2.用js为添加按钮禁用 当用户提交表单之后,可以使用js将提交按钮隐藏

JSP表单提交中文乱码解决方案

分2种提交方式,解决方案不同: 1.form表单提交方式为get 乱码: 解决方案: 第1种方法:tomcat-config-sever.xml 第2种方法: <% String username = request.getParameter("username"); String name = new String(username.getBytes("ios-8859-1"),"utf-8"); String password = re

H3C路由器多出口NQA+TRACK实现冗余

场景: 路由器上两条ISP接入,通过两条静态默认路由访问internet,当一条线路出现问题但物理链路UP就会出现一部分网页打不开或一部分PC无法访问internet.为了解决这种问题,可以在路由器上配置TRACK联动NQA来实现链路检测,当一条线路出问题可以自动把所有数据包走另一条线路. 具体配置: 如图,在AR 上配置:1. 分别配置IP地址和NAT(略)2. 配置静态路由并关联track[AR]ip route-static 0.0.0.0 0 192.168.88.1 track 1 /

《flask web开发》第11章 博客文章发布表单无法显示的解决方案

有不少同学在这一章都发现自己明明按照书上一步步执行,但却在首页看不到博客文章发布表单.这个问题其实很好解决. 首先,下载一个DB Browser for SQLite.Ubuntu用户可以在终端输入以下命令: sudo apt-get install sqlitebrowser 之后用这个数据库浏览器打开flasky里的数据库,在role表中按书中第9章所述,将所有角色手工录入,并在user表中给自己的账户添加上role_id字段,这样就大功告成了! 参考: https://www.zhihu.

华为路由器双出口负载均衡+备份

一个网段内,IP地址(末位奇数)走电信,IP地址(末位偶数)走联通 当某个运营商不可达时,自动切换. 通过NQA来确定运营商是否可达.,并与流行为.静态路由联动,实现自动切换. 默认路由走电信,当电信不可达走联通(根据配置的路由优先级,华为交换机静态路由默认优先级为60). acl number 3001 description dan-dianxin rule 10 permit ip source 10.50.8.1 0.0.3.254 acl number 3002 description

json包含单双引号问题解决方案

原创作品  转载请注明出处 最近项目中  遇到需要JSON传数据  但是某个字段 里面可能含有 双引号和单引号  导致出现错误 为了方便 写了一个工具类,比较好用. 支持"链式编程" 分享给大家 360网盘下载地址:http://yunpan.cn/cjCrRZj9uc8hE  访问密码 79f3 效果DEMO: JsonQuotesUtil.js /** * 解决json传输数据时存在 同时存在单引号和双引号的问题 * * 思路: * 将 单双引号用不容易在字符串中出现的字符分别替换

nginx 配置 单页面应用的解决方案

server { listen 80; server_name example.com; root /var/www/example.com; gzip_static on; location / { try_files $uri $uri/ /index.html; } # Attempt to load static files, if not found route to @rootfiles location ~ (.+)\.(html|json|txt|js|css|jpg|jpeg|