在本教程中,咱們會向你演示如何建立IPv6 BGP對等體並經過BGP通告IPv6前綴。同時咱們也將演示如何使用前綴列表和路由映射特性來過濾通告的或者獲取到的IPv6前綴。linux
拓撲shell
服務供應商A和B但願在他們之間創建一個IPv6的BGP對等體。他們的IPv6地址和AS信息以下所示。網絡
對等體IP塊: 2001:DB8:3::/64運維
供應商A: AS 100, 2001:DB8:1::/48spa
供應商B: AS 200, 2001:DB8:2::/48.net
CentOS/RHEL安裝Quagga命令行
若是Quagga尚未安裝,咱們能夠先使用yum安裝。調試
# yum install quagga 日誌
在CentOS/RHEL 7,SELinux策略會默認的阻止對於/usr/sbin/zebra配置目錄的寫操做,這會對咱們將要介紹的安裝操做有所影響。所以咱們須要像下面這樣關閉這個策略。若是你使用的是CentOS/RHEL 6能夠跳過這一步。router
# 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