Quagga简介、安装、配置说明
? ? Quagga軟件原名是Zebra是由一個日本開發(fā)團(tuán)隊編寫的一個以GNU版權(quán)方式發(fā)布的軟件??梢允褂肣uagga將linux機(jī)器打造成一臺功能完備的路由器。
模塊化設(shè)計:Quagga基于模塊化方案的設(shè)計,即對每一個路由協(xié)議使用單獨的守護(hù)進(jìn)程。
運行速度快:因為使用了模塊化的設(shè)計,使得Quagga的運行速度比一般的路由選擇程序要快。
可靠性高:在所有軟件模塊都失敗的情況下,路由器可以繼續(xù)保持連接并且daemons也會繼續(xù)運行。故障診斷不必離線的狀態(tài)下被診斷和更正
支持Ipv6:Quagga不僅支持Ipv4,還支持Ipv6。
Quagga的運行機(jī)制
由于Quagga采用模塊化的設(shè)計,因此Quagga運行時要運行多個守護(hù)進(jìn)程,包括ripd ripngd ospfd ospf6d bgpd 和Zebra。
其中,Zebra守護(hù)進(jìn)程用來更新內(nèi)核的路由表,而其他的守護(hù)進(jìn)程負(fù)責(zé)進(jìn)行相應(yīng)路由選擇協(xié)議的路由更新.
就是ripd,bgpd,ospfd三個路由協(xié)議守護(hù)進(jìn)程,把通過動態(tài)路由協(xié)議學(xué)習(xí)到路由信息都要交給zebra守護(hù)進(jìn)程,然后zebra進(jìn)程與? ? ? ? kernel routed交互,把路由信息給kernel? 內(nèi)核根據(jù)路由協(xié)議守護(hù)進(jìn)程學(xué)習(xí)到路由內(nèi)容更新自己路由表。
每個守護(hù)程序都有自己的路由表。zebra守護(hù)程序維護(hù)內(nèi)核路由表,并且還負(fù)責(zé)在各種路由協(xié)議守護(hù)程序之間重新分配信息。
關(guān)系如圖:
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
安裝:
安裝依賴軟件包
yum install readline-devel (--enable-vtysh需要)
解壓:
tar -zxvf? *.tar.gz
cd *
配置,生成Makefile文件
./configure --enable-vtysh --enable-user=root --enable-group=root --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga
1
--enable-vtysh 生成vtysh,vtysh是一個可以直接配置其他Quagga進(jìn)程的shell。不使用vtysh的話,需要telnet到每個進(jìn)程中去配置,比較麻煩。
--enable-user=root --enable-group=root 默認(rèn)運行用戶為quagga,這里修改為root,可以不用改變文件夾的屬性,也不用單獨增加用戶。
--localstatedir=/var/run/quagga 運行時的PID文件位置
--sysconfdir=/etc/quagga 運行時的配置文件目錄,默認(rèn)位置在/usr/local/etc中
執(zhí)行./configure后會顯示所有的配置清單,可以核對一下。
Quagga configuration
--------------------
quagga version ? ? ? ? ?: 0.99.22.4
host operating system ? : linux-gnu
source code location ? ?: .
compiler ? ? ? ? ? ? ? ?: gcc
compiler flags ? ? ? ? ?: -Os -fno-omit-frame-pointer -g -std=gnu99 -Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual
make ? ? ? ? ? ? ? ? ? ?: make
includes ? ? ? ? ? ? ? ?:?
linker flags ? ? ? ? ? ?: ?-lcrypt ? -lrt ? -lm
state file directory ? ?: /var/run/quagga
config file directory ? : /etc/quagga
example directory ? ? ? : /etc/quagga
user to run as ? ? ? ? ?: root
group to run as ? ? ? ? : root
group for vty sockets ? :?
config file mask ? ? ? ?: 0600
log file mask ? ? ? ? ? : 0600
默認(rèn)的優(yōu)化選項為-Os,如果需要使用gdb調(diào)試的,可以使用參數(shù)--with-cflags設(shè)置編譯優(yōu)化選項為-O0。
./configure --enable-vtysh --enable-user=root --enable-group=root --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga --with-cflags="-O0 -fno-omit-frame-pointer -g -std=gnu99 -Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual"
1
編譯、安裝
make
make install
在make之后可能會出現(xiàn)如圖的錯誤
解決辦法·:yum install texinfo
make clean
make
安裝好后,可執(zhí)行文件在目錄/usr/local/sbin/,配置文件在/etc/quagga/。
創(chuàng)建Quagga相關(guān)目錄
運行時的PID文件位置
mkdir /var/run/quagga
chmod 777 /var/run/quagga
1
2
注意:Centos 7的/var/run/目錄存放在tmpfs中,也就是內(nèi)存里,重啟后run目錄會清空。所以每次啟動后需要重新創(chuàng)建quagga目錄。
配置文件目錄
mkdir /etc/quagga
chmod 777 /etc/quagga
1
2
log目錄
mkdir /var/log/quagga/
chmod 777 /var/log/quagga/
1
2
編輯配置文件
以zebra為例
cp /etc/quagga/zebra.conf.sample /etc/quagga/zebra.conf
如果要運行ripd\bgpd \ospfd的守護(hù)進(jìn)程(啟動rip bgp ospf 協(xié)議)也要配置編輯配置文件
cp /etc/quagga/*.conf.sample /etc/quagga/*.conf
?
1
vim /etc/quagga/zebra.conf 進(jìn)行修改
(添加紅框中的部分)
這個操作就是把zebra守護(hù)進(jìn)程運行內(nèi)容寫到zerbra.log中。
ripd\bgpd \ospfd守護(hù)進(jìn)程也要添加,意思一樣。
至此,Quagga安裝成功。下面仍然以zebra為例簡單介紹Quagga單個模塊的運行。
?
運行zebra守護(hù)進(jìn)行
/usr/local/sbin/zebra -h // 查看命令行選項
/usr/local/sbin/zebra -d // 啟動zebra后臺程序
運行其他守護(hù)進(jìn)程
/usr/local/sbin/(ospfd|bgpd|ripd) -d
簡單的配置使用
首先 cat /etc/service 可以看到各種協(xié)議所對應(yīng)的接口
可以看到zebra的端口是為zebre vty ------2601
? ? ? ? ? ? ? ospfd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2604
登錄zebra的TTY
telnet 127.1 2601 // 默認(rèn)密碼:zebra
- 登錄zebra后就可以使用zebra的命令進(jìn)行操作。登錄其他的守護(hù)進(jìn)程,都是通過它的端口登錄的。
- 也可以直接執(zhí)行?
vtysh?進(jìn)行配置。 - 如果不能使用telnet,則安裝
yum install telnet
selinux會影響zebra運行,關(guān)閉掉
/etc/selinux/config文件中,設(shè)置為:disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# ? ? enforcing - SELinux security policy is enforced.
# ? ? permissive - SELinux prints warnings instead of enforcing.
# ? ? disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# ? ? targeted - Targeted processes are protected,
# ? ? mls - Multi Level Security protection.
SELINUXTYPE=targeted - ?
- 如果路由不能轉(zhuǎn)發(fā)
修改/etc/sysctl.conf文件, 啟用IPv4轉(zhuǎn)發(fā)功能。
net.ipv4.ip_forward = 1
如果發(fā)生了源路由驗證的路由問題
修改/etc/sysctl.conf文件, 禁用源路由驗證功能。
net.ipv4.conf.default.rp_filter = 1 - 為了使用quagga里面的守護(hù)進(jìn)程,配置各種協(xié)議開始的開始步驟
1.vtysh 或者 telnet 127.0.0.1 *(守護(hù)進(jìn)程端口)
2.enable 將模式從查看模式更改為啟用模式?
3.configure terminal? ?configure 終端 -用于配置路由器 進(jìn)入全局配置模式
4.協(xié)議配置命令 - 5 . do write (保存協(xié)議配置命令到conf文件中)
?
這是說明一點
登錄vtysh,寫配置動態(tài)路由協(xié)議命令,最后是保存到*.conf文件中?,所以也可以直接把動態(tài)路由協(xié)議配置命令直接寫到.conf文件中,不用登錄vtysh
?
show?running-config?:查看寫進(jìn)路由器*.conf的內(nèi)容
show?ip?ospf??database?:該命令用于show出該路由器所學(xué)習(xí)到的完成的網(wǎng)絡(luò)拓?fù)洹?/code>
show ip ospf neighbor:查看ospf的鄰居
show ip ospf database router X.X.X.X
由于該命令show出來的是ospf一類(路由器)LSA,所以show出來的內(nèi)容永遠(yuǎn)都是路由器所在Area內(nèi)的信息;
就算后面的X.X.X.X是一臺ABR,show出來的內(nèi)容同樣只是ABR上屬于該路由器所在Area內(nèi)的信息;
?
show ip ospf database network X.X.X.X
該命令show出來的是ospf二類(網(wǎng)絡(luò))LSA,所以show出來的內(nèi)容同樣是屬于路由器所在區(qū)域內(nèi)的中轉(zhuǎn)網(wǎng)絡(luò)信息;
后面所跟的X.X.X.X是指在廣播型LAN中擔(dān)任DR的路由器上屬于該LAN網(wǎng)絡(luò)的子接口的IP地址信息.即中轉(zhuǎn)網(wǎng)絡(luò)LSID
例如Router A的Fa0/1與Router B的Fa0/2以及Router C的Fa0/3過LAN相連,Router B被推舉成為DR,
那么此時該Lan虛擬出來的中轉(zhuǎn)網(wǎng)絡(luò)的LSID就是X.X.X.X就應(yīng)該是Router B的Fa0/2接口的接口IP地址.
?
show ip ospf database summary X.X.X.X
該命令show出來的是ospf三類(匯總)LSA,所以show出來的內(nèi)容是屬于其他Area泛洪過來的網(wǎng)絡(luò)信息.
這里面是不會存在該路由器所在Area的網(wǎng)絡(luò)信息的.所以ospf正是使用三類LSA來反映非本Area網(wǎng)絡(luò)拓?fù)?
?show ip route :會顯示哪些是內(nèi)核學(xué)的 哪些是bgp學(xué)的 哪些是ospf學(xué)的
總結(jié)
以上是生活随笔為你收集整理的Quagga简介、安装、配置说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DBeaver安装与使用教程(超详细安装
- 下一篇: Microsoft SQL Server