FRR(free range routing)給了你實現多種協定的選擇。本指南將幫助你入門。
最近,我寫了一篇文章,解釋了如何使用 路由套件實現開放式最短路徑優先(OSPF)。可以使用多個軟體套件代替 Quagga 來實現不同的路由協定。其中一種是 FRR(free range routing)。
FRR 是一個路由軟體套件,它衍生自 Quagga,並在 GNU GPL2 許可下分發。與 Quagga 一樣,它為類 Unix 平台提供了所有主要路由協定的實現,例如 OSPF、路由資訊協定(RIP)、邊界閘道器協定(BGP) 和中間系統到中間系統 (IS-IS)。
開發了 Quagga 的一些公司,例如 Big Switch Networks、Cumulus、Open Source Routing 和 6wind,建立了 FRR 以在 Quagga 的良好基礎上進行改善。
FRR 是一組守護行程,它們可以共同構建路由表。每個主協定都在其自己的守護行程中實現,並且這些守護行程與獨立於協定的核心守護行程 Zebra 通訊,後者提供核心路由表更新、介面查詢以及不同路由協定之間路由的重新分配。每個特定協定的守護行程負責執行相關協定並根據交換的資訊構建路由表。
VTYSH 是 FRR 路由引擎的整合 shell。它將每個守護行程中定義的所有 CLI 命令合併,並在單個 shell 中將它們呈現給使用者。它提供了類似於 Cisco 的命令列模式,並且許多命令與 Cisco IOS 命令相似。CLI 有不同的模式,某些命令僅在特定模式下可用。
在本教學中,我們將使用 FRR 設定動態路由來實現路由資訊協定(RIP)。我們可以通過兩種方式來做到這一點:在編輯器中編輯協定守護行程組態檔或使用 VTY Shell。在此例中,我們將使用 VTY shell。我們的設定包括兩個名為 Alpha 和 Beta 的 CentOS 7.7 主機。這兩台主機都有兩個網路介面,並共用對 192.168.122.0/24 網路的存取。我們將廣播 10.12.11.0/24 和 10.10.10.0/24 網路的路由。
對於主機 Alpha:
對於主機 Beta:
首先,我們需要在兩台主機上都安裝 FRR 軟體包。可以按照官方 FRR 文件中的說明進行操作。
對於路由,我們需要在兩台主機上都啟用 IP 轉發,因為這將由 Linux 核心執行:
sysctl -w net.ipv4.conf.all.forwarding = 1sysctl -w net.ipv6.conf.all.forwarding = 1sysctl -p
安裝後,所有組態檔將儲存在 /etc/frr
目錄中。 必須通過編輯 /etc/frr/daemons
檔案顯式啟用守護行程。該檔案確定啟動 FRR 服務時啟用哪些守護行程。要啟用特定的守護行程,只需將相應的 no
改為 yes
。之後的服務重新啟動將啟動守護行程。
由於 RIP 協定使用 UDP 作為傳輸協定,並被分配了 520 埠,因此我們需要在 firewalld
設定中允許該埠。
firewall-cmd --add-port=520/udp –permanentfirewalld-cmd -reload
現在,我們可以使用以下命令啟動 FRR 服務:
systemctl start frr
現在,我們需要使用 VTY Shell 設定 RIP。
在主機 Alpha 上:
[root@alpha ~]# vtyshHello, this is FRRouting (version 7.2RPKI).Copyright 1996-2005 Kunihiro Ishiguro, et al.alpha# configure terminalalpha(config)# router ripalpha(config-router)# network 192.168.122.0/24alpha(config-router)# network 10.10.10.0/24alpha(config-router)# route 10.10.10.5/24alpha(config-router)# do writeNote: this version of vtysh never writes vtysh.confBuilding Configuration...Configuration saved to /etc/frr/ripd.confConfiguration saved to /etc/frr/staticd.confalpha(config-router)# do write memoryNote: this version of vtysh never writes vtysh.confBuilding Configuration...Configuration saved to /etc/frr/ripd.confConfiguration saved to /etc/frr/staticd.confalpha(config-router)# exit
類似地,在主機 Beta 上:
[root@beta ~]# vtyshHello, this is FRRouting (version 7.2RPKI).Copyright 1996-2005 Kunihiro Ishiguro, et al.beta# configure terminalbeta(config)# router ripbeta(config-router)# network 192.168.122.0/24beta(config-router)# network 10.12.11.0/24beta(config-router)# do writeNote: this version of vtysh never writes vtysh.confBuilding Configuration...Configuration saved to /etc/frr/zebra.confConfiguration saved to /etc/frr/ripd.confConfiguration saved to /etc/frr/staticd.confbeta(config-router)# do write memoryNote: this version of vtysh never writes vtysh.confBuilding Configuration...Configuration saved to /etc/frr/zebra.confConfiguration saved to /etc/frr/ripd.confConfiguration saved to /etc/frr/staticd.confbeta(config-router)# exit
完成後,像下面這樣檢查兩台主機路由:
[root@alpha ~]# ip route showdefault via 192.168.122.1 dev eth0 proto static metric 10010.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.12 metric 10110.12.11.0/24 via 192.168.122.50 dev eth0 proto 189 metric 20192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100
我們可以看到 Alpha 上的路由表通過 192.168.122.50
包含了 10.12.11.0/24
的條目,它是通過 RIP 提供的。
類似地,在 Beta 上,該表通過 192.168.122.100
包含了 10.10.10.0/24
的條目。
[root@beta ~]# ip route showdefault via 192.168.122.1 dev eth0 proto static metric 10010.10.10.0/24 via 192.168.122.100 dev eth0 proto 189 metric 2010.12.11.0/24 dev eth1 proto kernel scope link src 10.12.11.12 metric 101192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100
如你所見,設定和設定相對簡單。要增加複雜性,我們可以向路由器新增更多的網路介面,以為更多的網路提供路由。可以在編輯器中編輯組態檔來進行設定,但是使用 VTY Shell 在單個組合對談中為我們提供了所有 FRR 守護行程的前端。