文档章节

如何在Quagga BGP路由器中设置IPv6的BGP对等体和过滤

 酱醋茶丶
发布于 2015/10/23 10:20
字数 1887
阅读 36
收藏 0
点赞 0
评论 0

在本教程中,我们会向你演示如何创建IPv6 BGP对等体并通过BGP通告IPv6前缀。同时我们也将演示如何使用前缀列表和路由映射特性来过滤通告的或者获取到的IPv6前缀。

 

拓扑

服务供应商A和B希望在他们之间建立一个IPv6的BGP对等体。他们的IPv6地址和AS信息如下所示。

对等体IP块: 2001:DB8:3::/64

供应商A: AS 100, 2001:DB8:1::/48

供应商B: AS 200, 2001:DB8:2::/48

 

CentOS/RHEL安装Quagga

如果Quagga还没有安装,我们可以先使用yum安装。

# yum install quagga 

在CentOS/RHEL 7,SELinux策略会默认的阻止对于/usr/sbin/zebra配置目录的写操作,这会对我们将要介绍的安装操作有所影响。因此我们需要像下面这样关闭这个策略。如果你使用的是CentOS/RHEL 6可以跳过这一步。

# setsebool -P zebra_write_config 1 

 

创建配置文件

在安装过后,我们先创建配置文件zebra/bgpd作为配置流程的开始。

# cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample /etc/quagga/zebra.conf

# cp /usr/share/doc/quagga-XXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf

然后,允许这些服务开机自启。

在 CentOS/RHEL 6:

# service zebra start; service bgpd start

# chkconfig zebra on; chkconfig bgpd on 

在 CentOS/RHEL 7:

# systemctl start zebra; systemctl start bgpd

# systemctl enable zebra; systmectl enable bgpd 

Quagga内部提供一个叫作vtysh的shell,其界面与那些主流路由厂商Cisco或Juniper十分相似。启动vtysh shell命令行:

# vtysh

提示符将改为:

router-a#

router-b# 

在教程的其余部分,这个提示可以表明你正身处在哪个路由的vtysh shell中。

 

为Zebra指定日志文件

来为Zebra配置日志文件,这会有助于调试。

 

首先,进入全局配置模式通过输入:

router-a# configure terminal 

提示符将变更成:

router-a(config)#

指定日志文件的位置。然后退出配置模式:

router-a(config)# log file /var/log/quagga/quagga.log

router-a(config)# exit 

保存配置通过:

router-a# write 

 

配置接口IP地址

现在,让我们为Quagga的物理接口配置IP地址。

首先,查看一下vtysh中现有的接口。

router-a# show interfaces 

Interface eth0 is up, line protocol detection is disabled

## OUTPUT TRUNCATED ###

Interface eth1 is up, line protocol detection is disabled

## OUTPUT TRUNCATED ##

现在我们配置IPv6地址。

router-a# conf terminal

router-a(config)# interface eth0

router-a(config-if)# ipv6 address 2001:db8:3::1/64

router-a(config-if)# interface eth1

router-a(config-if)# ipv6 address 2001:db8:1::1/64

在路由B上采用同样的方式分配IPv6地址。我将配置汇总成如下。

router-b# show running-config 

interface eth0

ipv6 address 2001:db8:3::2/64

interface eth1

ipv6 address 2001:db8:2::1/64

由于两台路由的eth0端口同属一个子网,即2001:DB8:3::/64,你应该可以相互ping通。在保证ping通的情况下,我们开始下面的内容。

router-a# ping ipv6 2001:db8:3::2 

PING 2001:db8:3::2(2001:db8:3::2) 56 data bytes

64 bytes from 2001:db8:3::2: icmp_seq=1 ttl=64 time=3.20 ms

64 bytes from 2001:db8:3::2: icmp_seq=2 ttl=64 time=1.05 ms

 

步骤 1: IPv6 BGP 对等体

本段,我们将在两个路由之间配置IPv6 BGP。首先,我们在路由A上指定BGP邻居。

router-a# conf t

router-a(config)# router bgp 100

router-a(config-router)# no auto-summary

router-a(config-router)# no synchronization

router-a(config-router)# neighbor 2001:DB8:3::2 remote-as 200

然后,我们定义IPv6的地址族。在地址族中,我们需要定义要通告的网段,并激活邻居。

router-a(config-router)# address-family ipv6

router-a(config-router-af)# network 2001:DB8:1::/48

router-a(config-router-af)# neighbor 2001:DB8:3::2 activate

我们在路由B上也实施相同的配置。这里提供我归总后的配置。

router-b# conf t

router-b(config)# router bgp 200

router-b(config-router)# no auto-summary

router-b(config-router)# no synchronization

router-b(config-router)# neighbor 2001:DB8:3::1 remote-as 100

router-b(config-router)# address-family ipv6

router-b(config-router-af)# network 2001:DB8:2::/48

router-b(config-router-af)# neighbor 2001:DB8:3::1 activate

如果一切顺利,在路由间将会形成一个IPv6 BGP会话。如果失败了,请确保在防火墙中开启了必要的端口(TCP 179)。

我们使用以下命令来确认IPv6 BGP会话的信息。

 

查看BGP汇总:

router-a# show bgp ipv6 unicast summary 

查看BGP通告的路由:

router-a# show bgp ipv6 neighbors <neighbor-IPv6-address> advertised-routes 

查看BGP获得的路由:

router-a# show bgp ipv6 neighbors <neighbor-IPv6-address> routes 

 

 

步骤 2: 过滤IPv6前缀

正如我们在上面看到的输出信息那样,路由间通告了他们完整的/48 IPv6前缀。出于演示的目的,我们会考虑以下要求。

Router-B将通告一个/64前缀,一个/56前缀,和一个完整的/48前缀.

Router-A将接受任由B提供的何形式的IPv6前缀,其中包含有/56和/64之间的网络掩码长度。

我们将根据需要过滤的前缀,来使用路由器的前缀列表和路由映射。

 

为路由B修改通告的前缀

目前,路由B只通告一个/48前缀。我们修改路由B的BGP配置使它可以通告额外的/56和/64前缀。

router-b# conf t

router-b(config)# router bgp 200

router-b(config-router)# address-family ipv6

router-b(config-router-af)# network 2001:DB8:2::/56

router-b(config-router-af)# network 2001:DB8:2::/64

我们在路由A上收到了所有的前缀,那么我们可以更进一步创建前缀列表和路由映射来过滤这些前缀。

 

创建前缀列表

就像在上则教程中描述的那样,前缀列表是一种机制用来匹配带有子网长度的IP地址前缀。按照我们指定的需求,我们需要在路由A的前缀列表中创建一则必要的条目。

    router-a# conf t

router-a(config)# ipv6 prefix-list FILTER-IPV6-PRFX permit 2001:DB8:2::/56 le 64

以上的命令会创建一个名为'FILTER-IPV6-PRFX'的前缀列表,用以匹配任何2001:DB8:2::池内掩码在56和64之间的所有前缀。

 

创建并应用路由映射

现在已经在前缀列表中创建了条目,我们也应该相应的创建一条使用此条目的路由映射规则了。

router-a# conf t

router-a(config)# route-map FILTER-IPV6-RMAP permit 10

router-a(config-route-map)# match ipv6 address prefix-list FILTER-IPV6-PRFX

以上的命令会创建一条名为'FILTER-IPV6-RMAP'的路由映射规则。这则规则将会允许与之前在前缀列表中创建'FILTER-IPV6-PRFX'所匹配的IPv6

要记住路由映射规则只有在应用在邻居或者端口的指定方向时才有效。我们将把路由映射应用到BGP的邻居配置中。我们将路由映射应用于入方向,作为进入路由端的前缀过滤器。

router-a# conf t

router-a(config)# router bgp 100

router-a(config-router)# address-family ipv6

router-a(config-router-af)# neighbor 2001:DB8:3::2 route-map FILTER-IPV6-RMAP in

现在我们在路由A上再查看一边获得到的路由,我们应该只能看见两个被允许的前缀了。

 

注意: 你可能需要重置BGP会话来刷新路由表。

所有IPv6的BGP会话可以使用以下的命令重启:

router-a# clear bgp ipv6 * 

 

总结

总结一下,这篇教程重点在于如何创建BGP对等体和IPv6的过滤。我们演示了如何向邻居BGP路由通告IPv6前缀,和如何过滤通告前缀或获得的通告。需要注意,本教程使用的过程可能会对网络供应商的网络运作有所影响,请谨慎参考。

希望这些对你有用。

免费领取兄弟连IT教育原创linux运维工程师视频/细说linux教程,详情咨询官网客服:http://www.lampbrother.net/linux/

或者勾搭Q2430675018

欢迎加入linux交流群 478068715


© 著作权归作者所有

共有 人打赏支持
粉丝 9
博文 71
码字总数 90588
作品 0
昌平
如何使用 Quagga BGP(边界网关协议)路由器来过滤 BGP 路由

在之前的文章中,我们介绍了如何使用 Quagga 将 CentOS 服务器变成一个 BGP 路由器,也介绍了 BGP 对等体和前缀交换设置。在本教程中,我们将重点放在如何使用前缀列表prefix-list和路由映射...

酱醋茶丶
2015/11/04
0
0
路由软件Quagga

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 一、Quagga 简介 1、什么是Quagga Quagga软件原名是Zebra是由一个日本开发团队的软件。我们可以使用Quagga将...

西鼠
2017/10/13
0
0
Quagga让centos成为OSPF路由器 (docker垮主机通信 )

OSPF路由器 Quagga是一款开源路由软件套件,它可以用来将你的Linux设备变成一个功能完备的路由器,支持几种主要的路由协议,比如RIP、OSPF、BGP或ISIS路由器。它完全为IPv4和IPv6作好了准备,...

kingkernel
2017/03/16
0
0
MPLS VPN 高级教程(张洋讲解演示版)

MPLS VPN 高级教程(张洋讲解演示版) 课程目标: ü LDP的实施和特性 ü PE-CE路由协议以的实施,以及它们在MPLS VPN中的特性; ü 如何通过MPLS网络运载IPv6,6PE和6VPE的含义和它的运作过...

kingsir827
2016/04/06
0
0
BGP的各种属性

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EG...

jiege333
2017/06/26
0
0
BGP和IGP的区别

BGP和IGP的区别 一台路由器只能创建一个BGP实力,而IGP则叫灵活。比如OSPF,有多少个活动的接口,即可创建多少个实例。 协议设计重点的区别: 与 OSPF、RIP等IGP不同,其着眼点不在于发现和计...

coolgyj
2014/05/15
0
0
ip-prefix在OSPF和BGP中路由过滤的应用举例。

案例1、OSPF中的路由过滤: 组网需要: (1)所有的交换机都运行OSPF,整个自治系统划分为3个区域。 (2)其中Switch A和Switch B作为ABR来转发区域之间的路由。 (3)在Switch C上配置为ASBR引入外...

megaverse
07/20
0
0
乾颐堂军哥HCIE课程10-BGP的路由联邦实施以及团体属性操控路由

BGP知识 拓扑图 IBGP防止环路机制带来的问题,为保证更新信息可以到达所有IBGP对等体 BGP Speaker与IBGP Speaker之间要保证会话的全互连,但这从而又带来IBGP会话数n(n-1)/2的问题 解决方案: ...

EnderJoe
01/14
0
0
【高级】华为设备部署运营商网络架构-ISIS+BGP+IPv6理论及配置实战

1.实验拓扑 使用ENSP模拟器(版本v100R002C001.2.00.350) 2.实验需求 1) 通过ISIS将AS内部的直连和环回口路由宣告 2) 通过配置BGP协议将所有的用户业务路由宣告 3) 通过配置路由反射器实现市...

Y.weisheng
06/26
0
0
路由软件--Quagga

Linux Quagga包含一个核心守护进程zebra,它作为Unix底层核心的一个抽象层,表示为Unix上的一些Zserv API或Linux Quagga客户端的TCP流。这些Linux Quagga客户端实现路由协议并和zebra守护程序...

匿名
2010/03/11
11.8K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
47分钟前
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部