Quagga守護(hù)進(jìn)程負(fù)責(zé)BGP的服務(wù)叫bgpd。首先我們來準(zhǔn)備它的配置文件。
- # cp /usr/share/doc/quagga-XXXXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf
在CentOS6系統(tǒng)中:
- # service bgpd start
- # chkconfig bgpd on
在CentOS7中:
- # systemctl start bgpd
- # systemctl enable bgpd
現(xiàn)在,讓我們來進(jìn)入Quagga 的shell。
- # vtysh
第一步,我們要確認(rèn)當(dāng)前沒有已經(jīng)配置的BGP會話。在一些版本,我們可能會發(fā)現(xiàn)一個AS號為7675的BGP會話。由于我們不需要這個會話,所以把它移除。
- Router-A# show running-config
- ... ... ...
- router bgp 7675
- bgp router-id 200.200.1.1
- ... ... ...
我們將移除一些預(yù)先配置好的BGP會話,并建立我們所需的會話取而代之。
- 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
路由器B將用同樣的方式來進(jìn)行配置,以下配置提供作為參考。
- 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
當(dāng)相關(guān)的路由器都被配置好,兩臺路由器之間的對等將被建立?,F(xiàn)在讓我們通過運行下面的命令來確認(rèn):
- Router-A# show ip bgp summary
從輸出中,我們可以看到"State/PfxRcd"部分。如果對等關(guān)閉,輸出將會顯示"Idle"或者"Active'。請記住,單詞'Active'這個詞在路由器中總是不好的意思。它意味著路由器正在積極地尋找鄰居、前綴或者路由。當(dāng)對等是up狀態(tài),"State/PfxRcd"下的輸出狀態(tài)將會從特殊鄰居接收到前綴號。
在這個例子的輸出中,BGP對等只是在AS100和AS200之間呈up狀態(tài)。因此沒有前綴被更改,所以最右邊列的數(shù)值是0。
正如一開始提到,AS 100將以100.100.0.0/22作為通告,在我們的例子中AS 200將同樣以200.200.0.0/22作為通告。這些前綴需要被添加到BGP配置如下。
在路由器-A中:
- 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
在路由器-B中:
- 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
在這一點上,兩個路由器會根據(jù)需要開始通告前綴。
首先,讓我們來確認(rèn)前綴的數(shù)量是否被改變了。
- Router-A# show ip bgp summary
為了查看所接收的更多前綴細(xì)節(jié),我們可以使用以下命令,這個命令用于顯示鄰居100.100.0.2所接收到的前綴總數(shù)。
- Router-A# show ip bgp neighbors 100.100.0.2 advertised-routes
查看哪一個前綴是我們從鄰居接收到的:
- Router-A# show ip bgp neighbors 100.100.0.2 routes
我們也可以查看所有的BGP路由器:
- Router-A# show ip bgp
以上的命令都可以被用于檢查哪個路由器通過BGP在路由器表中被學(xué)習(xí)到。
- Router-A# show ip route
- 代碼: K - 內(nèi)核路由, C - 已鏈接 , S - 靜態(tài) , R - 路由信息協(xié)議 , O - 開放式最短路徑優(yōu)先協(xié)議,
- I - 中間系統(tǒng)到中間系統(tǒng)的路由選擇協(xié)議, B - 邊界網(wǎng)關(guān)協(xié)議, > - 選擇路由, * - FIB 路由
- C>* 100.100.0.0/30 is directly connected, eth0
- C>* 100.100.1.0/24 is directly connected, eth1
- B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:06:45
- Router-A# show ip route bgp
- B>* 200.200.0.0/22 [20/0] via 100.100.0.2, eth0, 00:08:13
BGP學(xué)習(xí)到的路由也將會在Linux路由表中出現(xiàn)。
- [root@Router-A~]# ip route
- 100.100.0.0/30 dev eth0 proto kernel scope link src 100.100.0.1
- 100.100.1.0/24 dev eth1 proto kernel scope link src 100.100.1.1
- 200.200.0.0/22 via 100.100.0.2 dev eth0 proto zebra
最后,我們將使用ping命令來測試連通。結(jié)果將成功ping通。
- [root@Router-A~]# ping 200.200.1.1 -c 2
總而言之,本教程將重點放在如何在CentOS系統(tǒng)中運行一個基本的BGP路由器。這個教程讓你開始學(xué)習(xí)BGP的配置,一些更高級的設(shè)置例如設(shè)置過濾器、BGP屬性調(diào)整、本地優(yōu)先級和預(yù)先路徑準(zhǔn)備等,我將會在后續(xù)的教程中覆蓋這些主題。
聯(lián)系客服