如何使用VTY Shell配置路由器
FRR(free range routing)給了你實(shí)現(xiàn)多種協(xié)議的選擇。本指南將幫助你入門(mén)。
最近,我寫(xiě)了一篇文章,解釋了如何使用 Quagga 路由套件實(shí)現(xiàn)開(kāi)放式最短路徑優(yōu)先(OSPF)??梢允褂枚鄠€(gè)軟件套件代替 Quagga 來(lái)實(shí)現(xiàn)不同的路由協(xié)議。其中一種是 FRR(free range routing)。
FRR
FRR 是一個(gè)路由軟件套件,它衍生自 Quagga,并在 GNU GPL2 許可下分發(fā)。與 Quagga 一樣,它為類(lèi) Unix 平臺(tái)提供了所有主要路由協(xié)議的實(shí)現(xiàn),例如 OSPF、路由信息協(xié)議(RIP)、邊界網(wǎng)關(guān)協(xié)議(BGP) 和中間系統(tǒng)到中間系統(tǒng) (IS-IS)。
開(kāi)發(fā)了 Quagga 的一些公司,例如 Big Switch Networks、Cumulus、Open Source Routing 和 6wind,創(chuàng)建了 FRR 以在 Quagga 的良好基礎(chǔ)上進(jìn)行改善。
體系結(jié)構(gòu)
FRR 是一組守護(hù)進(jìn)程,它們可以共同構(gòu)建路由表。每個(gè)主協(xié)議都在其自己的守護(hù)進(jìn)程中實(shí)現(xiàn),并且這些守護(hù)進(jìn)程與獨(dú)立于協(xié)議的核心守護(hù)進(jìn)程 Zebra 通信,后者提供內(nèi)核路由表更新、接口查找以及不同路由協(xié)議之間路由的重新分配。每個(gè)特定協(xié)議的守護(hù)進(jìn)程負(fù)責(zé)運(yùn)行相關(guān)協(xié)議并根據(jù)交換的信息構(gòu)建路由表。
FRR architecture
VTY shell
VTYSH 是 FRR 路由引擎的集成 shell。它將每個(gè)守護(hù)進(jìn)程中定義的所有 CLI 命令合并,并在單個(gè) shell 中將它們呈現(xiàn)給用戶(hù)。它提供了類(lèi)似于 Cisco 的命令行模式,并且許多命令與 Cisco IOS 命令相似。CLI 有不同的模式,某些命令僅在特定模式下可用。
設(shè)置
在本教程中,我們將使用 FRR 配置動(dòng)態(tài)路由來(lái)實(shí)現(xiàn)路由信息協(xié)議(RIP)。我們可以通過(guò)兩種方式來(lái)做到這一點(diǎn):在編輯器中編輯協(xié)議守護(hù)進(jìn)程配置文件或使用 VTY Shell。在此例中,我們將使用 VTY shell。我們的設(shè)置包括兩個(gè)名為 Alpha 和 Beta 的 CentOS 7.7 主機(jī)。這兩臺(tái)主機(jī)都有兩個(gè)網(wǎng)絡(luò)接口,并共享對(duì) 192.168.122.0/24 網(wǎng)絡(luò)的訪問(wèn)。我們將廣播 10.12.11.0/24 和 10.10.10.0/24 網(wǎng)絡(luò)的路由。
對(duì)于主機(jī) Alpha:
- eth0 IP:192.168.122.100/24
- 網(wǎng)關(guān):192.168.122.1
- eth1 IP:10.10.10.12/24
對(duì)于主機(jī) Beta:
- eth0 IP:192.168.122.50/24
- 網(wǎng)關(guān):192.168.122.1
- eth1 IP:10.12.11.12/24
安裝軟件包
首先,我們需要在兩臺(tái)主機(jī)上都安裝 FRR 軟件包??梢园凑?a class="ext" rel="external nofollow" target="_blank">官方 FRR 文檔中的說(shuō)明進(jìn)行操作。
啟用 IP 轉(zhuǎn)發(fā)
對(duì)于路由,我們需要在兩臺(tái)主機(jī)上都啟用 IP 轉(zhuǎn)發(fā),因?yàn)檫@將由 Linux 內(nèi)核執(zhí)行:
sysctl -w net.ipv4.conf.all.forwarding = 1
sysctl -w net.ipv6.conf.all.forwarding = 1
sysctl -p
啟用 RIPD 守護(hù)進(jìn)程
安裝后,所有配置文件將保存在 /etc/frr
目錄中。 必須通過(guò)編輯 /etc/frr/daemons
文件顯式啟用守護(hù)進(jìn)程。該文件確定啟動(dòng) FRR 服務(wù)時(shí)激活哪些守護(hù)進(jìn)程。要啟用特定的守護(hù)進(jìn)程,只需將相應(yīng)的 no
改為 yes
。之后的服務(wù)重啟將啟動(dòng)守護(hù)進(jìn)程。
FRR daemon restart
防火墻配置
由于 RIP 協(xié)議使用 UDP 作為傳輸協(xié)議,并被分配了 520 端口,因此我們需要在 firewalld
配置中允許該端口。
firewall-cmd --add-port=520/udp –permanent
firewalld-cmd -reload
現(xiàn)在,我們可以使用以下命令啟動(dòng) FRR 服務(wù):
systemctl start frr
使用 VTY 進(jìn)行配置
現(xiàn)在,我們需要使用 VTY Shell 配置 RIP。
在主機(jī) Alpha 上:
[root@alpha ~]# vtysh
Hello, this is FRRouting (version 7.2RPKI).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
alpha# configure terminal
alpha(config)# router rip
alpha(config-router)# network 192.168.122.0/24
alpha(config-router)# network 10.10.10.0/24
alpha(config-router)# route 10.10.10.5/24
alpha(config-router)# do write
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Configuration saved to /etc/frr/ripd.conf
Configuration saved to /etc/frr/staticd.conf
alpha(config-router)# do write memory
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Configuration saved to /etc/frr/ripd.conf
Configuration saved to /etc/frr/staticd.conf
alpha(config-router)# exit
類(lèi)似地,在主機(jī) Beta 上:
[root@beta ~]# vtysh
Hello, this is FRRouting (version 7.2RPKI).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
beta# configure terminal
beta(config)# router rip
beta(config-router)# network 192.168.122.0/24
beta(config-router)# network 10.12.11.0/24
beta(config-router)# do write
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Configuration saved to /etc/frr/zebra.conf
Configuration saved to /etc/frr/ripd.conf
Configuration saved to /etc/frr/staticd.conf
beta(config-router)# do write memory
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Configuration saved to /etc/frr/zebra.conf
Configuration saved to /etc/frr/ripd.conf
Configuration saved to /etc/frr/staticd.conf
beta(config-router)# exit
完成后,像下面這樣檢查兩臺(tái)主機(jī)路由:
[root@alpha ~]# ip route show
default via 192.168.122.1 dev eth0 proto static metric 100
10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.12 metric 101
10.12.11.0/24 via 192.168.122.50 dev eth0 proto 189 metric 20
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100
我們可以看到 Alpha 上的路由表通過(guò) 192.168.122.50
包含了 10.12.11.0/24
的條目,它是通過(guò) RIP 提供的。
類(lèi)似地,在 Beta 上,該表通過(guò) 192.168.122.100
包含了 10.10.10.0/24
的條目。
[root@beta ~]# ip route show
default via 192.168.122.1 dev eth0 proto static metric 100
10.10.10.0/24 via 192.168.122.100 dev eth0 proto 189 metric 20
10.12.11.0/24 dev eth1 proto kernel scope link src 10.12.11.12 metric 101
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100
總結(jié)
如你所見(jiàn),設(shè)置和配置相對(duì)簡(jiǎn)單。要增加復(fù)雜性,我們可以向路由器添加更多的網(wǎng)絡(luò)接口,以為更多的網(wǎng)絡(luò)提供路由??梢栽诰庉嬈髦芯庉嬇渲梦募?lái)進(jìn)行配置,但是使用 VTY Shell 在單個(gè)組合會(huì)話(huà)中為我們提供了所有 FRR 守護(hù)進(jìn)程的前端。