Quagga的安裝和使用


Quagga的安裝和使用

來源 https://www.cnblogs.com/networking/p/7643037.html

 

QUAGGA是一款開源的路由軟件,也是zebra(已經停止更新)的升級維護版本。

作用:將linux設備變成一個功能完整的路由器。支持的協議:rip,ospf,bgp等。

官網:http://www.nongnu.org/quagga/  文檔:https://www.nongnu.org/quagga/docs.html

quazza各版本源碼下載地址:http://download.savannah.gnu.org/releases/quagga/

最新版本是2017.2.8日的1.2.0,但是在編譯的時候源碼出現了重定義錯誤(沒研究源碼等內容),所以在這里我選擇的是quagga-1.1.1。

 

測試環境:VM 12   CentOS 6.5 64位

1.       Quagga的安裝

在CentOS下可以直接使用yum –y install quagga進行安裝,也可以使用quagga的源代碼包進行編譯安裝,如下所示:

 

2.       配置zebra

復制zebra的配置文件模板到下面目錄下,並且啟動zebra

cp /usr/share/doc/quagga-0.99.15/zebra.conf.sample /etc/quagga/zebra.conf

如下圖所示:

 

3.       如果需要使用zebra進行支持OSPF和BGP等協議,還要負載ospfd和bgpd配置文件到下面的目錄下,並且啟動服務:

cp /usr/share/doc/quagga-0.99.15/ospfd.conf.sample /etc/quagga/ospfd.conf

cp /usr/share/doc/quagga-0.99.15/bgpd.conf.sample /etc/quagga/bgpd.conf

如下圖所示:

4.       添加多塊網卡(物理機添加物理網卡,虛擬機添加多塊虛擬網卡),如下:

 

5.       配置quagga

在終端下使用vtysh或者telnet 127.0.0.1 2601都可以進入quagga的控制台,如下:

[root@R1 networking]# vtysh

[root@R1 networking]# telnet 127.0.0.1 2601

如下圖:

 

6.       使用OSPF協議打底,配置BGP協議發布路由,如下拓撲:

 

測試結果如下:

R1:

 

R2:

 

R3:

 

R4:

 

Selecting previously unselected package quagga-core.
(Reading database ... 164946 files and directories currently installed.)
Preparing to unpack .../0-quagga-core_1.2.4-1_amd64.deb ...
Adding user `quagga' to group `quaggavty' ...
Adding user quagga to group quaggavty
Done.
Unpacking quagga-core (1.2.4-1) ...
Selecting previously unselected package quagga-bgpd.
Preparing to unpack .../1-quagga-bgpd_1.2.4-1_amd64.deb ...
Unpacking quagga-bgpd (1.2.4-1) ...
Selecting previously unselected package quagga-isisd.
Preparing to unpack .../2-quagga-isisd_1.2.4-1_amd64.deb ...
Unpacking quagga-isisd (1.2.4-1) ...
Selecting previously unselected package quagga-ospf6d.
Preparing to unpack .../3-quagga-ospf6d_1.2.4-1_amd64.deb ...
Unpacking quagga-ospf6d (1.2.4-1) ...
Selecting previously unselected package quagga-ospfd.
Preparing to unpack .../4-quagga-ospfd_1.2.4-1_amd64.deb ...
Unpacking quagga-ospfd (1.2.4-1) ...
Selecting previously unselected package quagga-pimd.
Preparing to unpack .../5-quagga-pimd_1.2.4-1_amd64.deb ...
Unpacking quagga-pimd (1.2.4-1) ...
Selecting previously unselected package quagga-ripd.
Preparing to unpack .../6-quagga-ripd_1.2.4-1_amd64.deb ...
Unpacking quagga-ripd (1.2.4-1) ...
Selecting previously unselected package quagga-ripngd.
Preparing to unpack .../7-quagga-ripngd_1.2.4-1_amd64.deb ...
Unpacking quagga-ripngd (1.2.4-1) ...
Selecting previously unselected package quagga.
Preparing to unpack .../8-quagga_1.2.4-1_amd64.deb ...
Unpacking quagga (1.2.4-1) ...
Setting up quagga-core (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/zebra.service → /lib/systemd/system/zebra.service.
Setting up quagga-bgpd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/bgpd.service → /lib/systemd/system/bgpd.service.
Setting up quagga-pimd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/pimd.service → /lib/systemd/system/pimd.service.
Setting up quagga-ripd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ripd.service → /lib/systemd/system/ripd.service.
Setting up quagga-ripngd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ripngd.service → /lib/systemd/system/ripngd.service.
Setting up quagga-ospf6d (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ospf6d.service → /lib/systemd/system/ospf6d.service.
Setting up quagga-isisd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/isisd.service → /lib/systemd/system/isisd.service.
Setting up quagga-ospfd (1.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ospfd.service → /lib/systemd/system/ospfd.service.
Setting up quagga (1.2.4-1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
                                         
lsgx@DESKTOP-OS0DFSI:~$ vtysh

 

==========

來源 https://blog.csdn.net/qq_35757415/article/details/55507021

 

一、安裝流程

使用虛擬機vmware9  ubuntu12.04LTS quagga-1.1.1.tar.gz

安裝過程:

(在相應的存放tar包的目錄)

1、 tar -xzvf quagga-1.1.1.tar.gz

2、 cd quagga-1.1.1

3、 ./configure --enable-vtysh --enable-user=root --enable-group=root --enable-vty-group=root

上述命令為打開vty功能(CLI功能)並給予相應用戶權限

出現錯誤(視機器而定,如果機器已經安裝好這些軟件,就不會出現錯誤):

error: GNU awk is required for lib/memtype.h made by memtypes.awk.
BSD awk complains: awk: gensub doesn't support backreferences (subst "\1")

解決辦法:sudo apt-get insatll gawk

安裝后重新編譯,通過。

出現錯誤:error: vtysh needs libreadline but was not found and usable on your system.

解決辦法:sudo apt-get install libreadline-dev

重新編譯,通過。

檢查整個環境配置過程,如果沒有新的錯誤出現,接下來就進行編譯。

4、 make

編譯過程也不是那么順利的,錯誤又來了。

出現錯誤:

解決辦法:sudo apt-get install texinfo

make clean

make

直到所有錯誤都不在出現。

5、 sudo make install

整個安裝流程到此就全部完成。

 

二、簡單的配置使用

首先   vim /etc/service,可以看到各種協議所對應的接口

科普學習:/etc/services文件是記錄網絡服務名和它們對應使用的端口號及協議。文件中的每一行對應一種服務,它由4個字段組成,中間用TAB或空格分隔,分別表示“服務名稱”、“使用端口”、“協議名稱”以及“別名”。
/etc/services文件包含了服務名和端口號之間的映射,很多的系統程序要使用這個文件。一般情況下,不要修改該文件的內容,因為這些設置都是Internet標准的設置。一旦修改,可能會造成系統沖突,使用戶無法正常訪問資源。Linux系統的端口號的范圍為0–65535,不同范圍有不同的意義。
0 不使用
1--1023 系統保留,只能由root用戶使用
1024---4999 由客戶端程序自由分配

5000---65535 由服務器端程序自由分配

關於各種協議的配置文本所在的目錄為/usr/local/etc下面(很重要的一點)

對Quagga進行配置,實際上就是對各進程進行配置,並且路由器的配置和路由協議的配置是分開不同進程的。 可以通俗點這么理解,Quagga里的zebra進程,相當於一個路由器,對zebra進行配置,就相當於對路由器進行基本配置(注意,這里是說基本配置,路由協議不是在zebra里配置的)。而Quagga里的ripd、ospfd、bgpd等進程,相當於不同的路由協議,要啟動哪一種協議,就對協議相應的進程進行配置。(摘於網絡)

 

配置zebra和rip(這里我選擇rip協議,這些配置文件選擇你選用的哪種協議)

1.cd /usr/local/etc//存放.conf文件的目錄

2.sudo cp zebra.conf.sample zebra.conf//.sample為自帶的配置文件

3.sudo cp ripd.conf.sample rip.conf

4.sudo zebra -d  //啟動

出現錯誤:zebra: error while loading shared libraries: libzebra.so.1: cannot open shared object file: No such file or directory

解決辦法:sudo cp /usr/local/lib/libzebra.so.1 /lib

然后重新執行sudo zebra -d

 

ps -e | grep zebra  //查看進程是否啟動成功,成功會出現對應的進程號,否則不會有輸出

配置已經成功了,電腦已經成為一個路由器了,但是我們還未對其中的設置進行配置。

5.telnet localhost 2601

出現>說明已經進入路由器用戶模式

6.特權模式

在特權模式就可以配置一些路由器的屬性。

 

==========

來源 https://www.iteye.com/blog/siwind-1745643

 

安裝: 
0) 安裝依賴軟件包(--enable-vtysh需要) 
#sudo apt-get install libreadline6-dev (Ubuntu) 
#sudo yum install readline-devel (CentOS) 

創建用戶(可選) 
#sudo groupadd quagga 
#sudo useradd quagga -g quagga 

1) 下載軟件包,解壓縮, 編譯並安裝 

#tar xzf quagga-0.99.21.tar.gz
#cd quagga-0.99.21

#sudo mkdir /var/run/quagga (運行時的PID文件位置)
#sudo chmod 777 /var/run/quagga

#sudo mkdir /etc/quagga (運行時的配置文件目錄)
#sudo chmod 777 /etc/quagga

#./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga
(默認運行用戶為quagga, 確保運行的localstatedir對用戶有讀寫的權限,建議配置)

#./configure --localstatedir=/var/run/quagga

#make
#sudo make install
#sudo ldconfig (加載庫文件路徑)


注意:  配置文件路徑, 默認為/usr/local/etc; 可執行文件路徑, 默認為/usr/local/sbin  


2) 修改文件/etc/services (某些linux平台可能不需要), 添加如下內容:  
zebrasrv 2600/tcp # zebra service 
zebra 2601/tcp # zebra vty 
ripd 2602/tcp # RIPd vty 
ripngd 2603/tcp # RIPngd vty 
ospfd 2604/tcp # OSPFd vty 
bgpd 2605/tcp # BGPd vty 
ospf6d 2606/tcp # OSPF6d vty 
ospfapi 2607/tcp # ospfapi 
isid 2608/tcp # ISISd vty 

3) 使用如下腳本啟動/停止quagga: sudo ./run_quagga.sh start|stop|restart  
   或者直接啟動停止: 
   #sudo /../zebra -u 用戶 -g 用戶組 -d   (確保編譯時設置的localstatedir對用戶有讀寫權限即可) 
   #sudo ospfd -u 用戶 -g 用戶組 -d 
   ...... 
   
4) 登錄控制台:  

#telnet localhost 2601 //zebra
#telnet localhost 2604 //ospf
#sudo /usr/local/bin/vtysh //vtysh
......

 

5) 問題解決  
    i) 如果遇到zebra庫文件未找到錯誤,則到目錄 /etc/ld.so.conf.d下面新建個文件, 
內容為quagga安裝的庫路徑,例如: /usr/local/lib 
然后 sudo ldconfig即可。 
ii) 如果不能連接vtysh的話,是因為在/var/run/quagga/*.vty文件對當前執行vtysh命令的用戶沒有權限。 
可以使用: sudo /usr/local/bin/vtysh即可。 
也可以: sudo chmod 777 /var/run/quagga/* ,(當zebra都啟動之后), 然后運行vtysh即可。 
iii) 如果需要設置IP地址,設置路由等,則建議使用root用戶身份運行Quagga(zebra/ospfd/bgpd等), 否則修改路由IP等會導致沒有權限的錯誤。 

     iii)  如果路由不能轉發,修改/etc/sysctl.conf文件。 啟用IPv4轉發功能
        net.ipv4.ip_forward = 1
 
     iv) 如果發生了源路由驗證的路由問題,  修改/etc/sysctl.conf文件。 禁用源路由驗證功能 
        net.ipv4.conf.default.rp_filter = 1
 
     v)  如果要啟用 net-snmp支持,則如下:
            #sudo yum install net-snmp net-snmp-devel  net-snmp-perl net-snmp-utils
            #  ./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga  --enable-snmp=smux

 

6) 如果要啟用quagga的vtysh控制台:  

#./configure --enable-vtysh --localstatedir=/var/run/quagga --sysconfdir=/etc/quagga
#make
#sudo make install

 


然后配置/etc/quagga/vtysh.conf文件內容即可。  


在Eclipse中調試運行Quagga (CentOS環境) 

0) 首先按照上面要求正確編譯運行Quagga.
1) 打開Eclipse, 新建項目 "Makefile Project with existing code", 選擇Quagga的解壓縮路徑
2) 選擇 “Run Configuration ...", 新建C/C++可執行程序, 命名為 ”Quagga-0.99.21 zebra“
在C/C++ Application輸入: zebra/.libs/zebra
在Argument處輸入: -f /usr/local/etc/zebra.conf -u 當前用戶 -g 當前用戶
在Enviremont處新建變量: LD_LIBRARY_PATH, 取值為: :./lib/.libs:./ospfd/.libs
3) 其它ospfd, bgpd等都可以同樣如2)設置。
4) 運行和調試都OK。


run_quagga.sh 

#!/bin/bash  
  
EXEC_DIR=/usr/local/sbin  
CONF_DIR=/etc/quagga  
LIB_DIR=/usr/local/lib  
PID_DIR=/var/run/quagga  
DAEMON=(zebra ospfd bgpd)  
USER=root  
TIME_DELAY=2  
  
#DAEMON=(zebra ospfd ospf6d ripd bgpd)   
#set librery path  
export LD_LIBRARY_PATH=$LIB_DIR:$LD_LIBRARY_PATH  
  
#  
echo make sure user \"$USER\" has read-write privileges in directory \"$PID_DIR\" !  
  
start()  
{  
    for d in ${DAEMON[*]}; do  
        $EXEC_DIR/$d -f $CONF_DIR/$d.conf -i $PID_DIR/$d.pid -u $USER -g $USER -d  
        ps -ef | grep $d  
        if [ $d = "zebra" ] ; then  
            sleep $TIME_DELAY  
        fi  
    done  
    echo "start (${DAEMON[*]})  finished!"  
}  
  
stop()  
{  
    for d in ${DAEMON[*]}; do  
        killall $d  
        #rm -f $PID_DIR/$d.pid  
    done  
    rm -f $PID_DIR/*  
    echo "stop (${DAEMON[*]})  finished!"  
}  
  
case $1 in  
    start)  
        start ;;  
    stop)  
        stop ;;  
    restart)  
        stop  
        start  ;;  
    *)  
        echo "Usage: $0 start | stop | restart"  
esac  

 

============ End

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM