记一次企业高级组网中不正确配置PBR引发的环路排错

嗨,各位。好久没了,最近忙的一塌糊涂,作为一个勤奋好学的网工,我要把实战中遇到的问题记录下来,同时分享给各位。此次的文档分享,是上个月的一次项目实战中记录下来的PBR-策略路由排错。具体的配置不会一一记录,但是会写个大概配置。

毕竟都是有几年的网工经验了,基础的不会就别看了,我都嫌弃!!!

不多说,我们先上一张图,图的背景就不多介绍了,反正可以给大家保证的是全部均为实实在在的真机。

PS:图进行了和谐,还有很多设备均进行了删减,做网工永远要记住一件事情,信息安全!!!!

图中设备清单如下:(仅列举网络设备)

S5700-52TP-LI-接入层交换机

AR2204-路由C

cisco-3750核心路由A-istack部署

cisco-3750路由B

cisco-3750GW设备

主机F-windows2008-r2-64bit

Juniper-SSG320-FWD

IPS设备-hillstone-SG2560-旁挂

软件环境:软件版本不一一列举,均是经过岁月认证的稳定IOS。

说下局部需求;

1.主机F的流量必须通过PBR扔到路由C上,然后经过FWD访问ISP公网资源。并仅允许在一条线路上实现,不得通过上下游设备使流量经过路由C。

2.主机F的流量通过FW-D设备进行DIP的映射策略配置(切记,这里不是MIP也不是VIP),这次文档不会介绍此需求如何实现,后期会进行补充。

备注:得到甲方的需求时,目测非常的奇葩。故想了个办法,核心网络起动态-OSPF+auth-key认证、重发布直连和静态、边界正常接入宣告即可。路由设备间全部互联ping即可。

这里呢,再说明下为什么我的标题是“记一次不正确的配置PBR导致的环路呢?”,因为我在此次实施过程当中确实因为自己的问题,导致了整个施工卡了近十分钟,十分钟对于一个资深工程师已经算是极大的事故了,所以我认为这真的应该拿出来好好的嘲讽自己一番。

我大概描述下流量的正确走向,如下图:

我简单的列出下PBR的相关配置:

核心路由A:

ip access-list extended add113

permit ip 172.16.113.0 0.0.0.255 any log

route-map PBR-Global permit 10

match ip address 113

set ip next-hop 172.16.106.18

rack1_3750X2_isp_core#show route-map 输出如下:

route-map PBR-Global, permit, sequence 10

Match clauses:

ip address (access-lists): 113

Set clauses:

ip next-hop 172.16.106.18

Policy routing matches: 56 packets, 5630 bytes

路由B:

ip access-list extended add113

permit ip 172.16.113.0 0.0.0.255 any log

route-map PBR permit 15

match ip address add113

set ip next-hop 172.16.106.34

route-map ARPBR permit 15

match ip address add113

set ip next-hop 172.16.106.34【故障发生点,后面详细介绍】

route-map PBR, permit, sequence 15

Match clauses:

ip address (access-lists): add113

Set clauses:

ip next-hop 172.16.106.34

route-map ARPBR, permit, sequence 15

Match clauses:

ip address (access-lists): add113

Set clauses:

ip next-hop 172.16.106.34【故障发生点,下面详细介绍】

Policy routing matches: 13 packets, 1378 byte

路由C:

acl number 3002

rule 5 permit ip source 172.16.113.0 0.0.0.255 logging

traffic classifier PBR operator or

if-match acl 3002

traffic behavior PBR

statistic enable

redirect ip-nexthop 172.16.106.33

traffic policy PBR

classifier PBR behavior PBR

接口挂载图省略,太简单的配置不想赘述,如果不会,请自行看书学习。

主机F,路由跟踪测试图如下:

结论:环在了34-33中间,回头检查visio图,重新观察流量走向,故障发生描述如下图。

中间我思考十分钟的时间,这里就省略了。毕竟太尴尬了,

故障判断:

问题出现在路由B上,在核心路由A过来的流量,进方向挂载PBR,流量指向路由C正常过去了,路由C将流量回指回来后,出现路由B再次把流量指回路由C。判断路由C到路由B直连链路,PBR配置有问题。

检查发现:

route-map ARPBR, permit, sequence 15

Match clauses:

ip address (access-lists): add113

Set clauses:

ip next-hop 172.16.106.34【故障发生点】

Policy routing matches: 13 packets, 1378 byte

将next-hop 修改为FW-D的直连linkip地址,至此故障得到解决,如下图展示。

结论,PBR下一跳填写错误导致出现环路。

来一一家二级运营商的网工分享,齐家、提升、积累、正心。我是一个认真的草根网络工程师,没有任何认证。

时间: 2024-10-25 00:11:19

记一次企业高级组网中不正确配置PBR引发的环路排错的相关文章

Linux系统对分区的基本要求及企业生产场景中的分区方案

Linux系统对分区的基本要求 1.   最少要有一个根(/)分区,用来存放系统文件及程序,其大小至少在5GB\以上. 2.   要有一个swap(交换)分区,它的作用相当于Windows系统里的虚拟内存,swap分区的大小一般为物理内存容量的1.5倍(内存<8GB).但当系统物理内存大于8GB时,swap分区配置(8-16GB)即可,太大无用,浪费磁盘空间.swap分区不是必须的,但是大多数据情况还是设置比较好,个别企业的数据库应用场景不分swap分区. 3.   /boot分区,这是Linu

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

理解Docker(6):若干企业生产环境中的容器网络方案

本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 (6)若干企业生产环境中的容器网络方案 Docker 在早期只有单机上的网络解决方案,在 1.19 版本引入了原生的 overlay 网络解决方案,但是它的性能损耗较大,可能无法适应一些生产环

VPN组网中IP地址冲突解决方案

很多路由器的默认IP地址是192.168.1.1,用户买回来之后经常也没有去修改这个IP地址,估计国内有80%局域网目前都在使用192.168.1.0/24网段.如果不涉及与其他地方VPN组网,这样用一点问题都没有的,但是现在要VPN组网就发现两个局域网的IP地址是相同的,在远程访问时就会遇到问题,因为两边地址都相同,计算机没有那么智能,它例如我们要访问192.168.1.3的IP,计算机不知你是要访问对端的192.168.1.3还是本端的192.168.1.3,所以经常会遇到麻烦的.遇到这种问

企业VPN组网IP地址冲突解决方案

很多路由器的默认IP地址是192.168.1.1,用户买回来之后经常也没有去修改这个IP地址,估计国内有80%局域网目前都在使用192.168.1.0/24网段.如果不涉及与其他地方VPN组网,这样用一点问题都没有的,但是现在要VPN组网就发现两个局域网的IP地址是相同的,在远程访问时就会遇到问题,因为两边地址都相同,计算机没有那么智能,它例如我们要访问192.168.1.3的IP,计算机不知你是要访问对端的192.168.1.3还是本端的192.168.1.3,所以经常会遇到麻烦的. 遇到这种

高级定价中的促销和优惠券代码

高级定价中的促销和优惠券代码 在大多数公司中,客户维持率是成功的一个重要标准.公司应用多种策略来留住客户.一个最常见的词是折扣.在市场中,客户总是寻找更好的产品和价格竞争.在零售公司的世界中,在特价方面听说优惠券代码和促销商品再常见不过了.本文将讨论Oracle高级定价是如何帮助应用这些业务策略,并与关键的电子商务应用集成. 在定价上下文中,一个订购的项目上的折扣(基于数量.总订单价格或价格范围打折)是EBS平台上客户最常见的需求.一个典型的促销手段将被详细地讨论:当购买X项目时,在Y项目上提供

dedecms隐藏高级搜索中的隐藏栏目的方法

今天发现,禁止搜索隐藏栏目内容后,发现,高级搜索里仍有隐藏栏目版块,经测试,找到解决办法如下:一.找到并打开heightsearch.htm模板(templates\plus\下),在第34行,找到$typeOptions = $tl->GetOptionArray(0,0,0);将其改为$typeOptions = $tl->GetOptionArray(0,0,1);解释如下:第三个参数表示栏目类型(即文章集),改为1表示文章集类栏目,0表示所有频道二.找到并打开include\typel

C# 操作 Word 修改word的高级属性中的自定义属性

word的类库使用的是word2007版本的类库,类库信息见下面图片,折腾了半天,终于找到入口,网上 很多说的添加或者修改word的高级属性中的自定义属性都是错误的,感觉都是在copy网上的代码,自己终于摸索成功了,Mark下. 直接上代码,代码如下: [csharp] view plaincopy using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.

angular在模板中使用属性引发Cannot read property &#39;xxx&#39; of undefined

在使用ng2的过程中,发现模板中如下方式 <li *ngFor="let item of model"> {{item.name}} </li> 不会又任何问题. 如果是一下未使用结构指令方式,直接使用组件的属性 <li > {{model.name}}</li> 就会报错null错误,一开始百思不得其解,后来搞明白,model是异步请求获取的数据,在定义的时候let mode:any 时是属于unde值,而这时组件模板已经开始渲染了,也