阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何在Quagga BGP路由器中过滤BGP路由?

455次阅读
没有评论

共计 4399 个字符,预计需要花费 11 分钟才能阅读完成。

我们在前一篇教程中演示了如何使用 Quagga,将一个 CentOS 设备变成边界网关协议 (BGP) 路由器。我们当时还探讨了基本的 BGP 对等和前缀交换设置。我们在本教程中将着重介绍如何使用 prefix-list(前缀列表)和 route-map(路由映射表),控制入站和出站 BGP 前缀。

正如在之前的教程中描述的那样,BGP 路由决策是根据接收 / 通告的前缀做出的。为了确保路由没有错误,建议你使用某种过滤机制,以控制这些入站和出站前缀。比如说,如果你的其中一个 BGP 邻居开始通告并不属于它们的前缀,你又错误地接收了这类虚假的前缀,你的流量就会被发送到那个错误的邻居,最后不知其行踪(这就是所谓的“进入黑洞”)。为了确保没有接收这类前缀,也没有通告给任何邻居,你可以使用前缀列表和路由映射表。前者是一种基于前缀的过滤机制,而后者是一种较为一般的基于前缀的策略机制,用来对动作进行微调。

我们将演示如何在 Quagga 中使用前缀列表和路由映射表。

拓扑结构和需求

我们在本教程中假设采用下列拓扑结构。

如何在 Quagga BGP 路由器中过滤 BGP 路由?

服务提供者 A 已经与服务提供者 B 建立了 eBGP 对等关系,它们在彼此之间交换路由信息。AS 和前缀细节如下所述。

对等块:192.168.1.0/24

服务提供者 A:AS 100,前缀 10.10.0.0/16

服务提供者 B:AS 200,前缀 10.20.0.0/16

在这个场景下,服务提供者 B 只想接收来自提供者 A 的 10.10.10.0/23、10.10.10.0/24 和 10.10.11.0/24 这三个前缀。

Quagga 安装和 BGP 对等

我们在前一篇教程中已经探讨了安装 Quagga 和设置 BGP 对等的方法。所以我们在此不会重复具体细节。不过,我提供了 BGP 配置和前缀通告方面的总结:

如何在 Quagga BGP 路由器中过滤 BGP 路由?

上述输出结果表明,BPG 对等已建立起来。路由器 A 在向路由器 B 通告多个前缀。另一方面,路由器 B 向路由器 A 通告单单一个前缀 10.20.0.0/16。这两个路由器都可以正常接收前缀,没有任何问题。

创建前缀列表

在路由器中,可以用访问控制列表 (ACL) 或前缀列表来阻止前缀。人们常常更喜欢使用前缀列表,而不是 ACL,因为前缀列表不像 ALC 那样大量占用处理器资源。另外,前缀列表创建和维护起来也更容易。

ip prefix-list DEMO-PRFX permit 192.168.0.0/23

上述命令创建了一个名为“DEMO-FRFX”的前缀列表,它只允许 192.168.0.0/23。

前缀列表的另一个出色的特性是,我们可以指定子网掩码范围。不妨看一看下面这个例子:

ip prefix-list DEMO-PRFX permit 192.168.0.0/23 le 24

上述命令创建了一个名为“DEMO-PRFX”的前缀列表,允许 192.168.0.0/23 到 /24 之间的前缀,具体包括 192.168.0.0/23、192.168.0.0/24 和 192.168.1.0/24.“le”运算符意味着小于或等于。你还可以使用“ge”运算符来表示大于或等于。

一个前缀列表语句可能有多个允许 / 拒绝动作。每个语句被赋予可以自动确定或人工指定的序号。

多个前缀列表语句以序号的递增次序逐个加以分析。配置前缀列表时,我们应该牢记一点:在所有前缀列表语句末尾处总是有隐式拒绝(implicit deny)。这意味着,没有显式允许的任何前缀都将被拒绝。

为了允许一切,我们可以使用下列前缀列表语句,该语句允许任何前缀:从 0.0.0.0/ 0 开始,直到使用子网掩网 /32 的任何地址。

ip prefix-list DEMO-PRFX permit 0.0.0.0/0 le 32

现在我们已知道了如何创建前缀列表语句,接下来我们将创建名为“PRFX-LST”的前缀列表,允许我们场景下所需要的前缀。

router-b# conf t

router-b(config)# ip prefix-list PRFX-LST permit 10.10.10.0/23 le 24

创建路由映射表

除了前缀列表和 ACL 外,还有另一种名为路由映射表的机制,它可以控制 BGP 路由器中的前缀。实际上,路由映射表可以针对用 ACL 或前缀列表匹配的前缀,对可能适合的动作进行更灵活的微调。

类似前缀列表,路由映射表语句指定了允许或拒绝动作,后面跟着序号。每个路由映射表语句可能带有多个允许 / 拒绝动作,比如:

route-map DEMO-RMAP permit 10

上述语句创建了名为“DEMO-RMAP”的路由映射表,并为允许动作增添了顺序 10。现在,我们将在顺序 10 下使用 match 命令。

router-a(config-route-map)# match (press ? in the keyboard)

as-path 匹配 BGP AS 路径列表

community 匹配 BGP 团体属性列表

extcommunity 匹配 BGP/VPN 扩展团体属性列表

interface 匹配路由的首段接口

ip IP 信息

ipv6 IPv6 信息

metric 匹配路由度量标准

origin BGP 源编码

peer 匹配对等体地址

probability 匹配百分比值定义的路由部分

tag 匹配路由标记

正如我们所见,路由映射表可以匹配许多属性。我们将在该教程中匹配前缀。

route-map DEMO-RMAP permit 10

match ip address prefix-list DEMO-PRFX

match 命令将匹配之前创建的前缀列表“DEMO-PRFX”所允许的 IP 地址(即 192.168.0.0/23、192.168.0.0/24 和 192.168.1.0/24 这三个前缀)。

下一步,我们可以使用 set 命令,改动属性。下面这个例子显示了 set 可能存在的使用场合。

route-map DEMO-RMAP permit 10

match ip address prefix-list DEMO-PRFX

set (press ? in keyboard)

aggregator BGP 聚合器属性

as-path 转变 BGP AS 路径属性

atomic-aggregate BGP 原子聚合属性

comm-list 设置 BGP 团体属性列表(用于删除)

community BGP 团体属性

extcommunity BGP 扩展团体属性

forwarding-address 转发地址

ip IP 信息

ipv6 IPv6 信息

local-preference BGP 本地偏好路径属性

metric 用于目的地路由协议的度量标准值

metric-type 度量标准类型

origin BGP 源编码

originator-id BGP 始发器 ID 属性

src 路由的 src 地址

tag 路由协议的标记值

vpnv4 VPNv4 信息

weight 路由表的 BGP 权重

正如我们所见,set 命令可以用来更改许多属性。为了演示,我们将设置 BGP 本地偏好。

route-map DEMO-RMAP permit 10

match ip address prefix-list DEMO-PRFX

set local-preference 500

就像前缀列表一样,所有路由映射表语句的末尾也都有隐式拒绝。所以,我们将在序号 20 添加另一个允许语句,允许一切前缀。

route-map DEMO-RMAP permit 10

match ip address prefix-list DEMO-PRFX

set local-preference 500

!

route-map DEMO-RMAP permit 20

序号 20 没有特定的 match 命令,所以它在默认情况下会匹配一切。由于决策是允许,该路由映射表语句将允许一切。

如果你还记得,我们的要求是只允许 / 拒绝一些前缀。于是在我们的场景下,set 命令没有必要。我们将只使用一个允许语句,如下所示。

router-b# conf t

router-b(config)# route-map RMAP permit 10

router-b(config-route-map)# match ip address prefix-list PRFX-LST

这个路由映射表语句应该能够能取得想要的结果。

运用路由映射表

牢记一点:除非运用于某个接口或 BGP 邻居,否则 ACL、前缀列表和路由映射表不管用。就像 ACL 或前缀列表那样,单单一个路由映射表语句可以与任何数量的接口或邻居结合使用。然而,任何一个接口或邻居只能支持一个路由映射表语句用于入站流量,只能支持一个路由映射表语句用于出站流量。

我们将为邻居 192.168.1.1 把刚创建的路由映射表运用到路由器 B 的 BGP 配置,使用入站前缀通告。

router-b# conf terminal

router-b(config)# router bgp 200

router-b(config-router)# neighbor 192.168.1.1 route-map RMAP in

现在,我们使用下列命令,检查通告和接收的路由。

针对通告的路由:

show ip bgp neighbor-IP advertised-routes

针对收到的路由:

show ip bgp neighbor-IP routes

如何在 Quagga BGP 路由器中过滤 BGP 路由?

你可以发现,虽然路由器 A 向路由器 B 通告了四个前缀,但路由器只接收了三个前缀。如果我们检查一下范围,就能发现,只有路由映射表允许的前缀才在路由器 B 上看得见。其他所有前缀被丢弃了。

提示:要是接收到的前缀没有任何变化,试着使用命令:“clear ip bgp neighbor-IP”,重新设置 BGP 会话。在我们的例子中:

clear ip bgp 192.168.1.1

正如我们所见,已满足了要求。我们可以在路由器 A 和 B 中创建类似的前缀列表和路由映射表语句,以便进一步控制入站和出站前缀。

我在一个地方总结了配置,那样你一眼就能看清。

router bgp 200

network 10.20.0.0/16

neighbor 192.168.1.1 remote-as 100

neighbor 192.168.1.1 route-map RMAP in

!

ip prefix-list PRFX-LST seq 5 permit 10.10.10.0/23 le 24

!

route-map RMAP permit 10

match ip address prefix-list PRFX-LST

结束语

我们在该教程中演示了如何定义前缀列表和路由映射表,从而在 Quagga 中过滤 BPG 路由。我们还演示了如何结合前缀列表和路由映射表,以便对入站前缀进行精细控制。你可以以一种类似的方式来创建自己的前缀列表和路由映射表,从而与你的网络要求相匹配。这些工具是保护生产网络避免虚假路由的路由破坏和通告的最有效方式之一。

但愿本文有所帮助。

Linux 下使用 Quagga(Zebra)搭建路由器记录   http://www.linuxidc.com/Linux/2015-07/120224.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-09/122697.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4399字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963417
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...