电玩城打鱼捕鱼-专业24小时上下分

如何使用,BGP路由器中过滤BGP路由

六月 11th, 2019  |  电玩城捕鱼系统简介

总结

在本教程中我们演示了如何在 Quagga 中设置前缀列表和路由映射来过滤 BGP
路由。我们也展示了如何将前缀列表结合进路由映射来进行输入前缀的微调功能。你可以参考这些方法来设置满足自己需求的前缀列表和路由映射。这些工具是保护网络免受路由毒化和来自
bogon 路由(LCTT 译注:指不该出现在internet路由表中的地址)的广播。

希望本文对你有帮助。

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

图片 1

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

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

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

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

拓扑结构和需求

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

图片 2

服务提供者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配置和前缀通告方面的总结:

图片 3

上述输出结果表明,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

图片 4

你可以发现,虽然路由器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)搭建路由器记录   

本文永久更新链接地址:

BGP路由器中过滤BGP路由?
我们在前一篇教程中演示了如何使用Quagga,将一个CentOS设备变成边界网关协议(BGP)路由器。我们当时还…

创建路由映射

除了前缀列表和 ACL,这里还有另一种机制,叫做路由映射,也可以在 BGP
路由器中控制前缀。事实上,路由映射针对前缀匹配的微调效果比前缀列表和 ACL
都强。

与前缀列表类似,路由映射语句也可以指定允许和拒绝操作,也需要分配一个序列号。每个路由匹配可以有多个允许或拒绝操作。例如:

  1. route-map DEMO-RMAP permit 10

上面的语句创建了名为“DEMO-RMAP”的路由映射,添加序列号为10的允许操作。现在我们在这个序列号所对应的路由映射下使用
match 命令进行匹配。

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

  1. as-path Match BGP AS path list
  2. community Match BGP community list
  3. extcommunity Match BGP/VPN extended community list
  4. interface match first hop interface of route
  5. ip IP information
  6. ipv6 IPv6 information
  7. metric Match metric of route
  8. origin BGP origin code
  9. peer Match peer address
  10. probability Match portion of routes defined by percentage value
  11. tag Match tag of route

如你所见,路由映射可以匹配很多属性,在本教程中匹配的是前缀。

  1. route-map DEMO-RMAP permit 10
  2. match ip address prefix-list DEMO-PRFX

这个 match 命令会匹配之前建好的前缀列表中允许的 IP 地址(也就是前缀
192.168.0.0/23, 192.168.0.0/24 和 192.168.1.0/24)。

接下来,我们可以使用 set 命令来修改这些属性。例子如下:

  1. route-map DEMO-RMAP permit 10
  2. match ip address prefix-list DEMO-PRFX
  3. set(press ?in keyboard)

  1. aggregator BGP aggregator attribute
  2. as-path Transform BGP AS-path attribute
  3. atomic-aggregate BGP atomic aggregate attribute
  4. comm-listset BGP community list(for deletion)
  5. community BGP community attribute
  6. extcommunity BGP extended community attribute
  7. forwarding-address ForwardingAddress
  8. ip IP information
  9. ipv6 IPv6 information
  10. local-preference BGP local preference path attribute
  11. metric Metric value for destination routing protocol
  12. metric-type Type of metric
  13. origin BGP origin code
  14. originator-id BGP originator ID attribute
  15. src src address forroute
  16. tag Tag value for routing protocol
  17. vpnv4 VPNv4 information
  18. weight BGP weight for routing table

如你所见,set 命令也可以修改很多属性。为了作个示范,我们修改一下 BGP 的
local-preference 这个属性。

  1. route-map DEMO-RMAP permit 10
  2. match ip address prefix-list DEMO-PRFX
  3. setlocal-preference 500

如同前缀列表,路由映射语句的末尾也有隐性拒绝操作。所以我们需要添加另外一个允许语句(使用序列号20)来允许所有前缀。

  1. route-map DEMO-RMAP permit 10
  2. match ip address prefix-list DEMO-PRFX
  3. setlocal-preference 500
  4. !
  5. route-map DEMO-RMAP permit 20

序列号20未指定任何匹配命令,所以默认匹配所有前缀。在这个路由映射语句中,所有的前缀都被允许。

回想一下,我们的需求是只允许或只拒绝一些前缀,所以上面的 set
命令不应该存在于这个场景中。我们只需要一个允许语句,如下如示:

  1. router-b# conf t
  2. router-b(config)#route-map RMAP permit 10
  3. router-b(config-route-map)# match ip address prefix-list PRFX-LST

这个路由映射才是我们需要的效果。

 

应用路由映射

注意,在被应用于一个接口或一个 BGP
邻居之前,ACL、前缀列表和路由映射都不会生效。与 ACL
和前缀列表一样,一条路由映射语句也能被多个接口或邻居使用。然而,一个接口或一个邻居只能有一条路由映射语句应用于输入端,以及一条路由映射语句应用于输出端。

下面我们将这条路由映射语句应用于 router-B 的 BGP 配置,为 router-B
的邻居 192.168.1.1 设置输入前缀广播。

  1. router-b# conf terminal
  2. router-b(config)# router bgp 200
  3. router-b(config-router)# neighbor 192.168.1.1route-map RMAP in

现在检查下广播路由和收取路由。

显示广播路由的命令:

  1. show ip bgp neighbor-IP advertised-routes

显示收取路由的命令:

  1. show ip bgp neighbor-IP routes

图片 5

可以看到,router-A 有4条路由前缀到达 router-B,而 router-B
只接收3条。查看一下范围,我们就能知道只有被路由映射允许的前缀才能在
router-B 上显示出来,其他的前缀一概丢弃。

小提示:如果接收前缀内容没有刷新,试试重置下 BGP
会话,使用这个命令:clear ip bgp neighbor-IP。本教程中命令如下:

  1. clearip bgp 192.168.1.1

我们能看到系统已经满足我们的要求了。接下来我们可以在 router-A 和
router-B 上创建相似的前缀列表和路由映射语句来更好地控制输入输出的前缀。

这里把配置过程总结一下,方便查看。

  1. router bgp 200
  2. network 10.20.0.0/16
  3. neighbor 192.168.1.1 remote-as100
  4. neighbor 192.168.1.1route-map RMAP in
  5. !
  6. ip prefix-list PRFX-LST seq 5 permit 10.10.10.0/23 le 24
  7. !
  8. route-map RMAP permit 10
  9. match ip address prefix-list PRFX-LST

 

拓扑和需求

本教程使用下面的拓扑结构。

图片 6

服务供应商A和供应商B已经将对方设置成为 eBGP
对等体,实现互相通信。他们的自治系统号和前缀分别如下所示。

  • 对等区段: 192.168.1.0/24
  • 服务供应商A: 自治系统号 100, 前缀 10.10.0.0/16
  • 服务供应商B: 自治系统号 200, 前缀 10.20.0.0/16

在这个场景中,供应商B只想从A接收 10.10.10.0/23, 10.10.10.0/24 和
10.10.11.0/24 三个前缀。

 

之前的文章已经说过,BGP
的路由判定是基于前缀的收取和前缀的广播。为避免错误的路由,你需要使用一些过滤机制来控制这些前缀的收发。举个例子,如果你的一个
BGP
邻居开始广播一个本不属于它们的前缀,而你也将错就错地接收了这些不正常前缀,并且也将它转发到网络上,这个转发过程会不断进行下去,永不停止(所谓的“黑洞”就这样产生了)。所以确保这样的前缀不会被收到,或者不会转发到任何网络,要达到这个目的,你可以使用前缀列表和路由映射。前者是基于前缀的过滤机制,后者是更为常用的基于前缀的策略,可用于精调过滤机制。

标签:

Your Comments

近期评论

    功能


    网站地图xml地图