如(rú)何在CentOS中制作(zuò)BGP路(lù)由?很多新(xīn)手對此不是很清楚。為(wèi)了(le)幫助您解決這(zhè)個(gè)問題,微子(zǐ)網絡将在下(xià)面向您詳細解釋。有這(zhè)方面需求的人(rén)可以借鑒一(yī)下(xià),希望你能(néng)有所收獲。
Quagga是一(yī)個(gè)開源路(lù)由軟件套件。在本教程中,我将重點介紹如(rú)何将一(yī)個(gè)Linux系統變成一(yī)個(gè)BGP路(lù)由器(qì),或者使用Quagga演示如(rú)何與其他BGP路(lù)由器(qì)建立BGP對等。
在進入細節之前,有必要了(le)解一(yī)些(xiē)BGP的背景知識。邊界網關(guān)協議(yì)(BGP)是互聯網域間(jiān)路(lù)由協議(yì)的實際标準。在BGP術語中,全球互聯網由成千上(shàng)萬個(gè)相關(guān)的自治系統(as)組成,其中每個(gè)AS代表一(yī)個(gè)由每個(gè)特定運營商(shāng)提供的網絡管理(lǐ)域(據說(shuō)美國前總統喬治布什(shén)有自己的AS号)。
為(wèi)了(le)使其網絡能(néng)夠在全球範圍内路(lù)由,每個(gè)自治系統都需要知道如(rú)何到達互聯網中的其他自治系統。這(zhè)個(gè)時(shí)候需要BGP來(lái)發揮這(zhè)個(gè)作(zuò)用。BGP是自治系統與相鄰自治系統交換路(lù)由信息的語言。這(zhè)些(xiē)路(lù)由信息通常稱為(wèi)BGP線路(lù)或BGP前綴。包括AS号(ASN;全球唯一(yī)号碼)和相關(guān)聯的IP地址塊。一(yī)旦所有的BGP線路(lù)被本地BGP路(lù)由表學習和記錄,每個(gè)AS将知道如(rú)何到達互聯網的任何公共IP。
不同域之間(jiān)的路(lù)由能(néng)力是BGP被稱為(wèi)外部網關(guān)協議(yì)(EGP)或域間(jiān)協議(yì)的主要原因。例如(rú),一(yī)些(xiē)路(lù)由協議(yì),如(rú)OSPF、IS-IS、RIP和EIGRP,是内部網關(guān)協議(yì)或域内路(lù)由協議(yì),用于處理(lǐ)域中的路(lù)由。測試方案
在本教程中,讓我們使用以下(xià)拓撲。
讓我們假設運營商(shāng)A想要建立一(yī)個(gè)BGP來(lái)與運營商(shāng)進行通信
商(shāng)b對等交換路(lù)由。它們的接入号碼和IP地址空間(jiān)的詳細信息如(rú)下(xià):
運營商(shāng)A: ASN (100),IP地址空間(jiān)(100.100.0.0/22),分(fēn)配給BGP路(lù)由器(qì)eth2網卡的IP地址(100.100.1.1)
運營商(shāng)B: ASN (200),IP地址空間(jiān)(200.200.0.0/22),分(fēn)配給BGP路(lù)由器(qì)eth2網卡的IP地址(200.200.1.1)
路(lù)由器(qì)a和路(lù)由器(qì)b使用100.100.0.0/30子(zǐ)網相互連接。理(lǐ)論上(shàng),任何子(zǐ)網都可以從運營商(shāng)處到達并互連。在實際場(chǎng)景中,建議(yì)使用掩碼為(wèi)30位的公共IP地址空間(jiān)來(lái)實現(xiàn)運營商(shāng)A和運營商(shāng)B之間(jiān)的通信.在 CentOS中安裝Quagga
如(rú)果Quagga還沒有安裝,我們可以用yum來(lái)安裝Quagga。
代碼如(rú)下(xià):
# yum install quagga
如(rú)果您正在使用CentOS7,您需要應用一(yī)個(gè)策略來(lái)設置SELinux。否則,SElinux将阻止Zebra守護程序寫入其配置目錄。如(rú)果您正在使用CentOS6,您可以跳(tiào)過這(zhè)一(yī)步。
代碼如(rú)下(xià):
# setsebool-P zebra _ write _ config 1
Quagga軟件套件包含幾個(gè)可以協同工作(zuò)的守護程序。關(guān)于BGP路(lù)由,我們将重點建立以下(xià)兩個(gè)守護進程。
Zebra:是内核接口和靜态路(lù)由的核心守護進程。
BGPd:是一(yī)個(gè)BGP守護進程。
配置日志記錄
安裝Quagga後,下(xià)一(yī)步是配置Zebra來(lái)管理(lǐ)BGP路(lù)由器(qì)的網絡接口。我們從創建斑馬配置文件和啓用日志記錄開始了(le)第一(yī)步。
代碼如(rú)下(xià):
# CP/usr/share/doc/quagga-XXXXXX/zebra . conf . sample/etc/quagga/zebra . conf
在CentOS6系統中:
代碼如(rú)下(xià):
#服務(wù)斑馬開始
# chkconfig斑馬開啓
在CentOS7系統中,
代碼如(rú)下(xià):
# systemctl啓動斑馬
# systemctl啓用斑馬
Quagga提供了(le)一(yī)個(gè)名為(wèi)vtysh的獨特命令行工具,允許您輸入與路(lù)由器(qì)供應商(shāng)(如(rú)思科和Juniper)兼容并受其支持的命令。我們将在本教程的其餘部分(fēn)使用vtysh shell來(lái)配置BGP路(lù)由。
要啓動vtysh shell命令,請輸入:
代碼如(rú)下(xià):
# vtysh
提示将被更改為(wèi)主機名,這(zhè)表明您在vtysh shell中。
代碼如(rú)下(xià):
複發性口腔潰瘍
ter-A#現(xiàn)在我們将使用以下(xià)命令來(lái)為(wèi)Zebra配置日志文件:
代碼如(rú)下(xià):
Router-A# configure terminal
Router-A(config)# log file /var/log/quagga/quagga.log
Router-A(config)# exit
永久保存Zebra配置:
代碼如(rú)下(xià):
Router-A# write
在路(lù)由器(qì)B操作(zuò)同樣的步驟。
配置對等的IP地址
下(xià)一(yī)步,我們将在可用的接口上(shàng)配置對等的IP地址。
代碼如(rú)下(xià):
Router-A# show interface #顯示接口信息</p>
<p> Interface eth0 is up, line protocol detection is disabled
. . . . .
Interface eth2 is up, line protocol detection is disabled
. . . . .
配置eth0接口的參數:
代碼如(rú)下(xià):
site-A-RTR# configure terminal
site-A-RTR(config)# interface eth0
site-A-RTR(config-if)# ip address 100.100.0.1/30
site-A-RTR(config-if)# description "to Router-B"
site-A-RTR(config-if)# no shutdown
site-A-RTR(config-if)# exit
繼續配置eth2接口的參數:
代碼如(rú)下(xià):
site-A-RTR(config)# interface eth2
site-A-RTR(config-if)# ip address 100.100.1.1/24
site-A-RTR(config-if)# description "test ip from provider A network"
site-A-RTR(config-if)# no shutdown
site-A-RTR(config-if)# exit
現(xiàn)在确認配置:
代碼如(rú)下(xià):
Router-A# show interface </p>
<p> Interface eth0 is up, line protocol detection is disabled
Description: "to Router-B"
inet 100.100.0.1/30 broadcast 100.100.0.3
Interface eth2 is up, line protocol detection is disabled
Description: "test ip from provider A network"
inet 100.100.1.1/24 broadcast 100.100.1.255</p>
<p> Router-A# show interface description #顯示接口描述</p>
<p> Interface Status Protocol Description
eth0 up unknown "to Router-B"
eth2 up unknown "test ip from provider A network"
如(rú)果一(yī)切看起來(lái)正常,别忘記保存配置。
代碼如(rú)下(xià):
Router-A# write
同樣地,在路(lù)由器(qì)B重複一(yī)次配置。
在我們繼續下(xià)一(yī)步之前,确認下(xià)彼此的IP是可以ping通的。
代碼如(rú)下(xià):
Router-A# ping 100.100.0.2 </p>
<p> PING 100.100.0.2 (100.100.0.2) 56(84) bytes of data.
64 bytes from 100.100.0.2: icmp_seq=1 ttl=64 time=0.616 ms
配置BGP對等
Quagga守護進程負責BGP的服務(wù)叫bgpd。首先我們來(lái)準備它的配置文件。
代碼如(rú)下(xià):
# cp /usr/share/doc/quagga-XXXXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf
在CentOS6系統中:
代碼如(rú)下(xià):
# service bgpd start
# chkconfig bgpd on
在CentOS7中:
代碼如(rú)下(xià):
# systemctl start bgpd
# systemctl enable bgpd
現(xiàn)在,讓我們來(lái)進入Quagga 的shell。
代碼如(rú)下(xià):
# vtysh
第一(yī)步,我們要确認當前沒有已經配置的BGP會話(huà)。在一(yī)些(xiē)版本,我們可能(néng)會發現(xiàn)一(yī)個(gè)AS号為(wèi)7675的BGP會話(huà)。由于我們不需要這(zhè)個(gè)會話(huà),所以把它移除。
代碼如(rú)下(xià):
Router-A# show running-config </p>
<p> ... ... ...
router bgp 7675
bgp router-id 200.200.1.1
... ... ...
我們将移除一(yī)些(xiē)預先配置好(hǎo)(hǎo)的BGP會話(huà),并建立我們所需的會話(huà)取而代之。
代碼如(rú)下(xià):
Router-A# configure terminal
Router-A(config)# no router bgp 7675
Router-A(config)# router bgp 100
Router-A(config)# no auto-summary
Router-A(config)# no synchronizaiton
Router-A(config-router)# neighbor 100.100.0.2 remote-as 200
Router-A(config-router)# neighbor 100.100.0.2 description "provider B"
Router-A(config-router)# exit
Router-A(config)# exit
Router-A# write
路(lù)由器(qì)B将用同樣的方式來(lái)進行配置,以下(xià)配置提供作(zuò)為(wèi)參考。
代碼如(rú)下(xià):
Router-B# configure terminal
Router-B(config)# no router bgp 7675
Router-B(config)# router bgp 200
Router-B(config)# no auto-summary
Router-B(config)# no synchronizaiton
Router-B(config-router)# neighbor 100.100.0.1 remote-as 100
Router-B(config-router)# neighbor 100.100.0.1 description "provider A"
Router-B(config-router)# exit
Router-B(config)# exit
Router-B# write
當相關(guān)的路(lù)由器(qì)都被配置好(hǎo)(hǎo),兩台路(lù)由器(qì)之間(jiān)的對等将被建立。現(xiàn)在讓我們通過運行下(xià)面的命令來(lái)确認:
代碼如(rú)下(xià):
Router-A# show ip bgp summary
從輸出中,我們可以看到"State/PfxRcd"部分(fēn)。如(rú)果對等關(guān)閉,輸出将會顯示"Idle"或者"Active'。請記住,單詞'Active'這(zhè)個(gè)詞在路(lù)由器(qì)中總是不好(hǎo)(hǎo)的意思。它意味着路(lù)由器(qì)正在積極地尋找鄰居、前綴或者路(lù)由。當對等是up狀态,"State/PfxRcd"下(xià)的輸出狀态将會從特殊鄰居接收到前綴号。
在這(zhè)個(gè)例子(zǐ)的輸出中,BGP對等隻是在AS100和AS200之間(jiān)呈up狀态。因此沒有前綴被更改,所以最右邊列的數值是0。
配置前綴通告
正如(rú)一(yī)開始提到,AS 100将以100.100.0.0/22作(zuò)為(wèi)通告,在我們的例子(zǐ)中AS 200将同樣以200.200.0.0/22作(zuò)為(wèi)通告。這(zhè)些(xiē)前綴需要被添加到BGP配置如(rú)下(xià)。
在路(lù)由器(qì)-A中:
代碼如(rú)下(xià):
Router-A# configure terminal
Router-A(config)# router bgp 100
Router-A(config)# network 100.100.0.0/22
Router-A(config)# exit
Router-A# write
在路(lù)由器(qì)-B中:
代碼如(rú)下(xià):
Router-B# configure terminal
Router-B(config)# router bgp 200
Router-B(config)# network 200.200.0.0/22
Router-B(config)# exit
Router-B# write
在這(zhè)一(yī)點上(shàng),兩個(gè)路(lù)由器(qì)會根據需要開始通告前綴。
測試前綴通告
首先,讓我們來(lái)确認前綴的數量是否被改變了(le)。
代碼如(rú)下(xià):
Router-A# show ip bgp summary
為(wèi)了(le)查看所接收的更多前綴細節,我們可以使用以下(xià)命令,這(zhè)個(gè)命令用于顯示鄰居100.100.0.2所接收到的前綴總數。
代碼如(rú)下(xià):
Router-A# show ip bgp neighbors 100.100.0.2 advertised-routes
查看哪一(yī)個(gè)前綴是我們從鄰居接收到的:
代碼如(rú)下(xià):
Router-A# show ip bgp neighbors 100.100.0.2 routes
我們也(yě)可以查看所有的BGP路(lù)由器(qì):
代碼如(rú)下(xià):
Router-A# show ip bgp
以上(shàng)的命令都可以被用于檢查哪個(gè)路(lù)由器(qì)通過BGP在路(lù)由器(qì)表中被學習到。
代碼如(rú)下(xià):
Router-A# show ip route
代碼: K - 内核路(lù)由, C - 已鏈接 , S - 靜态 , R - 路(lù)由信息協議(yì) , O - 開放(fàng)式最短路(lù)徑優先協議(yì),
I - 中間(jiān)系統到中間(jiān)系統的路(lù)由選擇協議(yì), B - 邊界網關(guān)協議(yì), > - 選擇路(lù)由, * - FIB 路(lù)由
代碼如(rú)下(xià):
C>* 100.100.0.0/30 is directly connected, eth0
C>* 100.100.1.0/24 is directly connected, eth2
B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:06:45</p>
<p align="left"> Router-A# show ip route bgp </p>
<p align="left"> B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:08:13
BGP學習到的路(lù)由也(yě)将會在Linux路(lù)由表中出現(xiàn)。
代碼如(rú)下(xià):
[root@Router-A~]# ip route </p>
<p> 100.100.0.0/30 dev eth0 proto kernel scope link src 100.100.0.1
100.100.1.0/24 dev eth2 proto kernel scope link src 100.100.1.1
200.200.0.0/22 via 100.100.0.2 dev eth0 proto zebra
最後,我們将使用ping命令來(lái)測試連通。結果将成功ping通。
代碼如(rú)下(xià):
[root@Router-A~]# ping 200.200.1.1 -c 2
總而言之,本教程将重點放(fàng)在如(rú)何在CentOS系統中運行一(yī)個(gè)基本的BGP路(lù)由器(qì)。這(zhè)個(gè)教程讓你開始學習BGP的配置,一(yī)些(xiē)更高級的設置例如(rú)設置過濾器(qì)、BGP屬性調整、本地優先級和預先路(lù)徑準備等,我将會在後續的教程中覆蓋這(zhè)些(xiē)主題。
看完上(shàng)述内容是否對您有幫助呢(ne)?如(rú)果還想對相關(guān)知識有進一(yī)步的了(le)解或閱讀更多相關(guān)文章,請關(guān)注億速雲行業資訊頻道,感謝您對億速雲的支持。
Copyright © 2013-2016 WWW.VZIDC.COM . All Rights Reserved. 微子(zǐ)網絡 版權所有 江蘇微子(zǐ)網絡科技有限公司