前文我们聊了下通过修改BGP路由属性来影响路由,从而达到控制BGP路由的目的;回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15495585.html;今天我们来聊一聊BGP路由过滤和AS-Path-filter过滤器的使用;

  BGP路由过滤

  BGP路由过滤是指对特定的路由通过策略或者过滤器在出方向或入方向做允许或拒绝,从而来达到控制路由的收发;

  示例:通过ip 前缀列表匹配要拒绝的路由,然后使用过滤工具过滤掉满足条件的路由

[R5-bgp]dis bg r

 BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn *> 1.1.1.1/32 45.0.0.4 0 234 11i
*> 7.7.7.7/32 45.0.0.4 0 234 11i
*> 8.8.8.8/32 45.0.0.4 0 234 11i
[R5-bgp]dis ip ip-prefix
Prefix-list 1.1.1.1
Permitted 2
Denied 4
index: 10 deny 1.1.1.1/32
index: 20 permit 0.0.0.0/0 le 32
[R5-bgp]filter-policy ip-prefix 1.1.1.1 import
[R5-bgp]d th
[V200R003C00]
#
bgp 55
router-id 5.5.5.5
peer 45.0.0.4 as-number 234
#
ipv4-family unicast
undo synchronization
filter-policy ip-prefix 1.1.1.1 import
peer 45.0.0.4 enable
#
return
[R5-bgp]dis bg r BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn *> 7.7.7.7/32 45.0.0.4 0 234 11i
*> 8.8.8.8/32 45.0.0.4 0 234 11i
[R5-bgp]

  提示:ip前缀列表、filter-policy工具使用请参考https://www.cnblogs.com/qiuhom-1874/p/15316188.html;这里我们需要注意一点就是ip前缀列表的默认规则是拒绝,所以对于没有被ip前缀列表匹配的路由,我们应该放行;所以前缀列表里最后要添加放行其他所有路由;所以我们在BGP路由表中能够看到7.7.7.7和8.8.8.8的路由;

  示例:使用filter-policy 对某个邻居的出方向拒绝1.1.1.1的路由

  在R2上未使用filter-policy对发送给R4的路由做过滤,对应R4上bgp路由表情况

  提示:可以看到对应在R4上能够学习到1.1.1.1 /32的路由,对应下一跳分别有两个;

  在R2的出方向对发送给R4的路由中,过滤掉1.1.1.1/32的路由,对应其他路由做放行操作

  验证:在R4上查看BGP路由表,看看R2发送给R4的路由,对应1.1.1.1/32的路由是否被过滤掉了?

  提示:可以看到R4上对于1.1.1.1/32的路由只有R3为下一跳,R2发送给R4的其他路由R4上正常可以学习到;

  示例:使用前缀列表直接对某个邻居发送的路由进行过滤

  在R4上使用前缀列表对R3发送到8.8.8.8/32的路由进行入方向过滤,其他路由不做过滤

[R4]dis ip ip-prefix
Prefix-list 8.8.8.8
Permitted 0
Denied 0
index: 10 deny 8.8.8.8/32
index: 20 permit 0.0.0.0/0 le 32
[R4]bgp 234
[R4-bgp]peer 3.3.3.3 ip-prefix 8.8.8.8 imp
[R4-bgp]peer 3.3.3.3 ip-prefix 8.8.8.8 import
[R4-bgp]d th
[V200R003C00]
#
bgp 234
router-id 4.4.4.4
peer 2.2.2.2 as-number 234
peer 2.2.2.2 connect-interface LoopBack4
peer 3.3.3.3 as-number 234
peer 3.3.3.3 connect-interface LoopBack4
peer 45.0.0.5 as-number 55
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 3.3.3.3 enable
peer 3.3.3.3 ip-prefix 8.8.8.8 import
peer 45.0.0.5 enable
#
return
[R4-bgp]dis bg r BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn *>i 1.1.1.1/32 13.0.0.1 0 100 0 11i
*>i 7.7.7.7/32 12.0.0.1 0 100 0 11i
* i 13.0.0.1 0 100 0 11i
*>i 8.8.8.8/32 12.0.0.1 0 100 0 11i
[R4-bgp]

  提示:可以看到此时R4上对于8.8.8.8/32的路由只有R2发送的可以正常学习到;因为R3发送的8.8.8.8/32的路由在入方向就被过滤掉了;

  示例:在R1上使用路由策略对7.7.7.7/32的路由在出方向过滤

  提示:路由策略中如果条件中是允许操作,则路由的去留取决route-policy的模式,deny就是拒绝,permit就是允许;如果条件中是拒绝操作,则路由的去留取决route-policy的默认规则;如上所示,在条件中允许7.7.7.7/32,在模式中拒绝,最终7.7.7.7/32的路由去留看模式;对于条件中没有明确允许或拒绝其他路由,最终条件的默认规则是拒绝,所以对于其他没有被条件匹配的路由,最终的去留取决于route-policy默认模式;所以我们在route-policy后面添加一条允许所有路由,则放行其他未被前缀列表匹配到的路由;所以我们配置没有问题的话,在R2上就学习不到7.7.7.7/32的路由,其他路由可以正常学习到;

  验证:在R2上查看BGP路由表,看看对应的7.7.7.7的路由它是否能够学习到?

  提示:可以看到此时R2的bgp路由表中就没有7.7.7.7/32的路由,原因是R1并没有把7.7.7.7/32的路由发送给R2;

  总结:通过上述实验可以看到BGP路由过滤主要是通过过滤器,前缀列表,路由策略等工具来进行的;都是在本地的出或入方向做过滤,最终是影响路由的收发;如果上述工具都在bgp里都使用了,则首先全局filter-policy进行过滤,然后再单个邻居使用filter-policy过滤,然后再单个邻居前缀列表,然后在路由策略的顺序进行过滤;

  BGP AS-Path过滤器

  AS-Path-Filter:从名字上就能知道该过滤器主要用于通过匹配AS-Path属性来进行路由过滤;对于满足过滤器的条件我们就做某种操作即可;对于as-path过滤器来说,它是通过正则表达式来匹配对应as-path;工作原理就是把对应路由的as-path当作字符串处理,满足正则表达式的路由进行拒绝或允许操作;

  常用正则表达式符号作用

  特殊正则表达式含义

  提示:对于本地始发地路由,对应as-path属性是空,即匹配条件就是空,正则表达式就为^$; .*表示匹配所有路由,.*是表示匹配任意字符0次或多次,即任意字符可有可无,即任意as-path都能匹配,即所有路由的as-path都能满足该正则表达式;_10_表示匹配通过as10的路由,因为as-path只要通过一个as就会记录对应as号,所以只要as-path里包含10,则该路由一定是通过as 10的路由;如果是以10结尾的as-path,则一定是始发as10的路由;如果以10开头的,则一定是相邻邻居的as一定是10,即接受相邻as10的路由;

  示例:匹配以12开头中间任意字符最后以74结尾的as-path的路由

  提示:即满足上述as-path的路由都会被允许放行;

  示例:匹配有23或43的as号的路由

  提示:并不是3或4,而是23或43;

  示例:匹配具有具有14,17,24,27,34,37的as号

  提示:【1-3】表示连续的数字,即1、2、3;【47】表示4或7,即数字4或者数字7;组合其他就是14、17、24、27、34、37;

  示例:匹配始发as170,且as34512和as170相邻且通过as34512的路由;

  示例:匹配始发as170,并通过as621的路由

  示例:使用as-path过滤器过滤掉本地始发as55路由

  新建as-path过滤器

[R1]ip as
[R1]ip as-path-filter 1 d
[R1]ip as-path-filter 1 deny 55$
[R1]dis ip as
As path filter number: 1
deny 55$
[R1]

  提示:as-path-filter 后面的1我们可以理解为是as-path过滤器的匹配次序;多条as path是与的关系,即都要满足才能被匹配;

  在BGP里调用as-path过滤器

  提示:as-path过滤器也是有默认规则的,默认规则是拒绝操作,即没有被正则匹配到的路由,统统都是拒绝操作;所以我们看到的BGP路由表中,对应始发234的路由也一并被过滤掉;

  在as-path里允许其他所有路由通过

  再次查看BGP路由表,看看对应始发234的路由是否恢复?

  提示:可以看到始发as55的路由被过滤掉了,始发234的路由恢复正常;这是因为我们只拒绝了始发as55的路由,允许了其他没有被始发as55的路由;

HCNP Routing&Switching之BGP路由过滤和AS-Path-Filter的更多相关文章

  1. HCNP Routing&Switching之BGP路由属性和优选规则

    前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...

  2. HCNP Routing&Switching之BGP路由宣告

    前文我们了解了BGP报文结构.类型以及邻居状态相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15422924.html:今天我们来聊一聊BGP路由宣告 ...

  3. HCNP Routing&Switching之BGP路由控制

    前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...

  4. HCNP Routing&Switching之BGP防环机制和路由聚合

    前文我们了解了BGP路由宣告相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15440860.html:今天我们来聊一聊BGP防环机制和路由聚合相关话题 ...

  5. HCNP Routing&Switching之BGP基础

    前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...

  6. HCNP Routing&Switching之BGP团体属性和团体属性过滤器

    前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...

  7. HCNP Routing&Switching之IS-IS路由聚合和认证

    前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...

  8. HCNP Routing&Switching之BGP报文结构、类型和状态

    前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...

  9. HCNP Routing&Switching之BGP邻居建立条件、优化和认证

    前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...

随机推荐

  1. NetCore5实现https请求

    前言 本文主要介绍在NetCore5中,实现证书加载和https访问请求. 证书准备 首先我们先创建一个自定义的证书Kiba518.pfx. 证书创建参考:最通俗易懂的RSA加密解密指导. 然后将证书 ...

  2. P4606-[SDOI2018]战略游戏【圆方树,虚树】

    正题 题目链接:https://www.luogu.com.cn/problem/P4606 题目大意 给出\(n\)个点\(m\)条边的一张图,\(q\)次询问给出一个点集,询问有多少个点割掉后可以 ...

  3. sonar入门

    一.Sonar是什么? 根据我的了解,可以说Sonar包含三个部分: SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码味道.它可以与您现有的工作流程集成,以实现跨项目分支和提 ...

  4. 通用JS七

    instanceof 在原型链上寻找这个属性的定义 match 正则匹配字符串 Symbol() Symbol()函数不能用作构造函数,与new关键字一起使用.这样做是为了避免创建符号包装对象,像使用 ...

  5. 踩坑系列《十三》解决时间戳long转换int溢出(即转换值为负数)

    最近业务需求,需要使用到 int 类型的时间戳,所以在使用时间戳的时候,由于java自带的 System.currentTimeMillis() 返回的类型是long,强行转换一波的话,是会出现数据溢 ...

  6. 超详细的Eureka源码解析

    Eureka简介 Eureka是什么? Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移 ...

  7. RabbitMQ的web页面介绍(三)

    一.Virtual Hosts 每一个 RabbitMQ 服务器都能创建虚拟的消息服务器,我们称之为虚拟主机 (virtual host) ,简称为vhost.每一个 vhost 本质上是一个独立的小 ...

  8. Rclone使用教程 - 挂载Onedrive和谷歌网盘

    1. 介绍 Rclone 是一个用于多个云平台之间同步文件和目录的命令行工具,其支持多种运营商网盘. 官网网址:https://rclone.org 开源地址:https://github.com/n ...

  9. Java基础之(四):使用IDEA实现HelloWorld

    使用IDEA实现HelloWorld 在使用IDEA这个集成开发环境写Java程序之前,我们要先对IDEA进行一些基本的配置,以便我们能够更好地使用它. 新建一个空项目,用来学习基础语法 设置项目名称 ...

  10. bzoj4094 && luogu3097 最优挤奶

    题目大意: 给定n个点排成一排,每个点有一个点权,有m次修改,每次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 其中\(n\le 40000\ , \ m\le 50000\) QWQ说实 ...