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

在之前的教程中,我们演示了如何使用Quagga建立一个完备的BGP路由器和配置前缀过滤。在本教程中,我们会向你演示如何创建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安装。


  1. # yum install quagga

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


  1. # setsebool -P zebra_write_config 1

创建配置文件

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


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

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

在 CentOS/RHEL 6:


  1. # service zebra start; service bgpd start
  2. # chkconfig zebra on; chkconfig bgpd on

在 CentOS/RHEL 7:


  1. # systemctl start zebra; systemctl start bgpd
  2. # systemctl enable zebra; systmectl enable bgpd

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


  1. # vtysh

提示符将改为:


  1. router-a#


  1. router-b#

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

为Zebra指定日志文件

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

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


  1. router-a# configure terminal

提示符将变更成:


  1. router-a(config)#

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


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

保存配置通过:


  1. router-a# write

配置接口IP地址

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

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


  1. router-a# show interfaces


  1. Interface eth0 is up, line protocol detection is disabled
  2. ## OUTPUT TRUNCATED ###
  3. Interface eth1 is up, line protocol detection is disabled
  4. ## OUTPUT TRUNCATED ##

现在我们配置IPv6地址。


  1. router-a# conf terminal
  2. router-a(config)# interface eth0
  3. router-a(config-if)# ipv6 address 2001:db8:3::1/64
  4. router-a(config-if)# interface eth1
  5. router-a(config-if)# ipv6 address 2001:db8:1::1/64

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


  1. router-b# show running-config


  1. interface eth0
  2. ipv6 address 2001:db8:3::2/64
  3. interface eth1
  4. ipv6 address 2001:db8:2::1/64

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


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


  1. PING 2001:db8:3::2(2001:db8:3::2) 56 data bytes
  2. 64 bytes from 2001:db8:3::2: icmp_seq=1 ttl=64 time=3.20 ms
  3. 64 bytes from 2001:db8:3::2: icmp_seq=2 ttl=64 time=1.05 ms

步骤 1: IPv6 BGP 对等体

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


  1. router-a# conf t
  2. router-a(config)# router bgp 100
  3. router-a(config-router)# no auto-summary
  4. router-a(config-router)# no synchronization
  5. router-a(config-router)# neighbor 2001:DB8:3::2 remote-as 200

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


  1. router-a(config-router)# address-family ipv6
  2. router-a(config-router-af)# network 2001:DB8:1::/48
  3. router-a(config-router-af)# neighbor 2001:DB8:3::2 activate

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


  1. router-b# conf t
  2. router-b(config)# router bgp 200
  3. router-b(config-router)# no auto-summary
  4. router-b(config-router)# no synchronization
  5. router-b(config-router)# neighbor 2001:DB8:3::1 remote-as 100
  6. router-b(config-router)# address-family ipv6
  7. router-b(config-router-af)# network 2001:DB8:2::/48
  8. router-b(config-router-af)# neighbor 2001:DB8:3::1 activate

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

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

查看BGP汇总:


  1. router-a# show bgp ipv6 unicast summary

查看BGP通告的路由:


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

查看BGP获得的路由:


  1. 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前缀。


  1. router-b# conf t
  2. router-b(config)# router bgp 200
  3. router-b(config-router)# address-family ipv6
  4. router-b(config-router-af)# network 2001:DB8:2::/56
  5. router-b(config-router-af)# network 2001:DB8:2::/64

我们将路由A上验证了所有的前缀都获得到了。

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

创建前缀列表

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


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

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

创建并应用路由映射

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


  1. router-a# conf t
  2. router-a(config)# route-map FILTER-IPV6-RMAP permit 10
  3. router-a(config-route-map)# match ipv6 address prefix-list FILTER-IPV6-PRFX

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

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


  1. router-a# conf t
  2. router-a(config)# router bgp 100
  3. router-a(config-router)# address-family ipv6
  4. router-a(config-router-af)# neighbor 2001:DB8:3::2 route-map FILTER-IPV6-RMAP in

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

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

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


  1. router-a# clear bgp ipv6 *

我汇总了两个路由的配置,并做成了一张清晰的图片以便阅读。

总结

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

希望这些对你有用。

本文来自合作伙伴“Linux中国”,原文发布日期:2015-09-04

时间: 2024-08-02 20:04:34

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

如何在WPS文字2013中设置打印的时候添加装订线

  如何在WPS文字2013中设置打印的时候添加装订线           1.打开WPS文字2013,单击文字--文件--页面设置. 2.在页边距选项卡中设置装订线的位置,以及装订线宽. 3.切换到版式选项卡,勾选奇偶页不同. 4.确定之后,我们的装订线就算设置好了.

如何在qq拼音输入法中设置自定义短语?

  如何在qq拼音输入法中设置自定义短语?          一.我们右键点击输入法,然后依次选择"拼音工具"."造词". qq拼音输入法 二.打开造词界面,我们点击"自定义短语"这一项. 1.在"缩写"下面的方框输入"w"(因为'我在写百度经验'这个短语开头字母是'w',大家也可以定义为别的字母). 2.中间的那排数字是该短语在候选词列表中的位置, 3.在"自定义短语"下面的方框里输入

如何在WPS文档中设置水印

在WPS文档中设置水印的方法和步骤如下. 新建一篇文档,进入它的页脚中.点击菜单"视图→页眉和页脚",然后选择页脚部分(选择页眉也是可以的). 插入艺术字,并设置艺术字的版式为"衬于文字下方",该艺术字就可以在文档中的任意位置拖动了.你可以将其拖动到页面的中央部分,同时也可以旋转. 设置好后,当我们再编辑WPS文档时,每一页中都有一个水印背景了.

如何在Word2013文档中设置字体

  跟所有的Word版本一样,用户可以在Word2013文档窗口中方便地设置文本.数字等字符的字体,操作步骤如下所述: 第1步,打开Word2013文档窗口,并选中需要设置字体的文本块.在"开始"功能区的"字体"分组中单击"字体"下拉三角按钮,如图2013073001所示. 图2013073001 单击"字体"下拉三角按钮 第2步,在打开的字体列表中显示出三组字体,其中"主题字体"是通过"页面布局

请教如何在Java的session中设置一个变量,并赋值。10分钟后,自动给清除这个变量的值。需要用哪个方法呢?

问题描述 同上 解决方案 解决方案二:获取sessionServlet中:HttpSessionhs=request.getSession(true);Jsp中:session是一个内置对象,可以直接使用设置变量Servlet中:hs.setAttribute(stringname,objectval);Request.getSession().setAttribute("",object)Jap中:session.setAttribute(stringname,objecto)Ses

如何在word文档中设置超链接?

步骤1:先创建一个文档,这个如果有就不要再创建了. 步骤2: 然后输入要创建连接的文字,如下所示输入好选中文件我们点击菜单中的[插入],当然也可以按下[Ctrl+K]. 步骤3 步骤4:如下所示我们在此以"当前文件或网页为例" 然后点击"超链接"excel文件为例,具体操作步骤如下所示: 步骤5:连接设置好了文字就有下线线了,这样就是设置好了. 步骤6:下面来看一下设置的效果,按住Ctrl键,并点击鼠标左键,就可以访问该文件,结果如下. 步骤7:接着讲一下如何设置连

如何在N7100/N7108手机中设置企业邮箱?

如果您想要设置企业邮箱,请按以下步骤操作: 1.用手指滑下手机屏幕顶帘,左右滑动屏幕找到[移动数据],并把[移动数据]点为绿色.      2.点击[应用程序].   3.点击[电子邮件].   4.点击[其它].   5.设置电子邮件,输入[电邮地址]和[密码](以"Gmail"为例),并点击[手动设置].   6.选择[微软Exchange ActiveSync账户].   7.设置[Exchange服务器](以"Gmail"为例:m.google.com),并

如何在Word2007文档中设置图片映像

映像效果是将所选中的图片复制一份图片副本,并以倒影的效果显示.Word2007提供了图片映像功能以供用户使用. 首先选中要设置映像效果的图片,点击菜单栏的"格式"(或标题栏的"图片工具"),找到"图片样式"分组,点击右侧的"图片效果"--"映像",打开word2007提供的映像效果样式,用户选择其中的一个即可对所选的图片使用映像效果.需要注意的是,word2007只提供了9个映像样式,用户并不能自己设置详细

如何在Windows 8系统中设置高对比度显示?

  方法一:打开"轻松使用设置中心"(win键+U键),点击"设置高对比度"; 方法二:通过快捷键:按"左Alt+左Shift+PrtScn"启用或关闭高对比度; 方法三:将鼠标指针移到桌面右下角,选择"设置"->"控制面板"->"轻松使用"->"轻松使用设置中心"->"设置高对比度". 主题">