Ubuntu下使用Quagga(Zebra)搭建路由器


本文參考:Linux下使用Quagga(Zebra)搭建路由器記錄 - sanyuanyanjin - 博客園 (cnblogs.com)

1. 靜態路由的路由器搭建方法

1.1 准備工作

1、在虛擬機 Virtual Box 上安裝上一個Linux系統,我用的Ubuntu 14.04服務器版。然后配置好系統,安裝上zebra/quagga軟件。

以下是步驟截圖:

右擊打開剛創建好的虛擬機的“設置”,設置啟動盤,設置網絡。

啟動虛擬機,自行配置安裝好系統,然后安裝上zebra/quagga軟件。

apt update
apt install quagga

2、連續復制得到另外三個相同的虛擬機。

1.2 實驗內容

將四個虛擬機系統模擬構建出下面的一個網絡。

一般網絡:由Linux Router A,Workstation 和 Linux Router B 構成。

保護網絡:由 Linux Router B 和 Linux Client 所組成。

Linux Router A Linux Router B 工作站 客戶端
1、兩張網卡eth0, eth1,通過內部網絡方式連接。
2、Eth0(外網),IP可不設定。
3、Eth1(內網),IP設置為:192.168.1.254/24。
1、兩張網卡eth0,eth1, 通過內部網絡方式連接。
2、Eth0(外), IP設置為:192.168.1.100/24
3、Eth1(內),IP設置為:192.168.100.254/24
4、默認網關:192.168.1.254
1、一張網卡eth0,通過內部網絡方式連接。
2、Eth0,IP設置為:192.168.1.102/24
3、默認網關:192.168.1.254
1、一張網卡eth0,通過內部網絡方式連接。
2、Eh0, IP設置為192.168.100.12/24
3、默認網關:192.168.100.254

1.3 開始實驗

給虛擬機配置網卡:

LinuxRouterA:

LinuxRouterB:

Workstation:

ClientLinux:

依次啟動四個虛擬機,同時登陸到系統中。接下來,切換到root模式。開始進行系統的配置。

1、配置Linux Router A

修改網卡1的IP地址,子網掩碼等信息。終端輸入命令:

vim /etc/network/interfacesB

然后添加內容后如下:

auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0

開啟數據包轉發功能:

vim /etc/sysctl.conf

找到net.ipv4.ip_forward=1這一行,然后將前面的#號去除即可。

接下來重啟一次系統。此時,Linux Router A基本配置完畢了。

2、配置Linux Router B:

修改主機名:

vim /etc/hostname

配置網卡0和網卡1:

 vim /etc/network/interfaces

然后在后面添加內容如下:

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254

auto eth1
iface eth1 inet static
address 192.168.100.254
netmask 255.255.255.0

up route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.100 eth1

開啟數據包轉發功能:

vim /etc/sysctl.conf

找到net.ipv4.ip_forward=1這一行,然后將前面的#號去除即可。

修改成功后,則重啟一次系統。

使用ifconfig查看修改有沒有成功。

查看一下路由表是否正確,終端輸入route -n,得到如下結果,重點第一行的內容確定配置無誤:

3、配置客戶端Linux:

修改主機名:

vim /etc/hostname

配置網卡0和網卡1:

 vim /etc/network/interfaces

然后在后面添加內容如下:

auto eth0
iface eth0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.254

查看一下路由表,route -n

ping 一下自己的網關和外部網關,如果成功,則表明客戶端也基本配置完了。

ping 192.168.100.254 -c 2
ping 192.168.1.254 -c 2

4、配置工作站(Workstation):

修改主機名:

vim /etc/hostname

配置網卡0和網卡1:

 vim /etc/network/interfaces

然后在后面添加內容如下:

auto eth0
iface eth0 inet static
address 192.168.1.102
netmask 255.255.255.0
gateway 192.168.1.254

up route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.100 eth0

重啟一次系統,查看一下路由規則。

1.4 測試這個網絡

測試1:在客戶端中ping工作站的IP地址:

測試2:在工作站中ping客戶端的IP地址:

2. 動態路由的路由器搭建方法——使用RIP協議

前面在搭建靜態的路由器時,並沒有使用到zebra/quagga這個軟件。因為系統自帶的工具已經足夠配置了。

2.1 准備工作

准備四個不同的虛擬機系統。

2.2 實驗內容

實驗的網絡連接如下圖所示,其中共有三個局域網的網段,其中最大的是192.168.1.0/24這個外部局域網,另外有兩個內部局域網,分別是192.168.100.0/24和192.168.200.0/24。

在開始實驗之前,還是需要敲定一下各個虛擬機的配置信息:

Router A:
1、兩張網卡,通過內部網絡方式連接
2、IP1:192.168.1.100/24
3、IP2:192.168.100.254/24
 
Router B:
1、兩張網卡,通過內部網絡方式連接
2、IP1:192.168.1.200/24
3、IP2:192.168.200.254/24
 
Client A:
1、一張網卡,通過內部網絡的方式連接
2、IP:192.168.100.10/24
3、默認網關:192.168.100.254
 
Client B:
1、一張網卡,通過內部網絡的方式連接
2、IP:192.168.200.10/24
3、默認網關:192.168.200.254

2.3 開始實驗

Router A:

Router B:

Client A:

Client B:

依次啟動四個虛擬機系統。

1、配置路由器A(Router A)

修改主機名 vim /etc/hostname

修改網絡參數:

保存配置信息,並且重啟一次系統讓配置生效。

配置路由器上的zebra:

cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf
vim /etc/quagga/zebra.conf

接下來啟動zebra:

cd /usr/lib/quagga/
./zebra -d

運行以下命令,可以看到zebra這個服務的主要任務就是要修改Linux系統內核內的路由,所以它僅僅就是監聽本機接口罷了,並不會監聽外部接口。

netstat -tnupl | grep zebra

登陸到端口2601中。可以用show ip route 來顯示路由規則。

exit	# 退出zebra

設置並啟用ripd服務。ripd服務可以在兩台路由器之間進行路由規則的交換與溝通。具體設置方法如下:

cp /usr/share/doc/quagga/examples/ripd.conf.sample /etc/quagga/ripd.conf
vim /etc/quagga/ripd.conf

配置文件的填寫,內容如下:

hostname RouterA_Rip
password zebra
enable password zebra
debug rip events
debug rip packet
router rip
version 2
network 192.168.1.0/24
network 192.168.100.0/24
interface eth0
no ip rip authentication mode
log file /var/log/quagga/ripd.log

保存上述配置,並啟動ripd服務,輸入sudo ripd -d即可。這樣就完成了基本的RIP路由器的配置了。

cd /usr/lib/quagga/
./ripd -d

2、配置路由器B(Router B)

修改主機名 vim /etc/hostname

由於路由器B的配置和路由器A配置基本步驟一致,在此就省略了。參見上面的配置方法。

修改網絡參數:

重啟一下。

zebra.conf 配置信息:

ripd.conf 的配置信息:

3、配置客戶端A(Client A)

修改主機名 vim /etc/hostname

網絡參數配置信息(/etc/network/interfaces):

重啟一下。

4、配置客戶端B(Client B)

修改主機名 vim /etc/hostname

網絡參數配置信息(/etc/network/interfaces):

重啟一下。

2.4 測試這個網絡

1、檢查RIP協議的溝通是否正常

以路由器1為例,在終端中輸入route -n查看有沒有新添加的路由規則,見下圖,看到倒數第一條顯示的就是增加的路由規則。

然后登陸到端口2601中進行查看,如果出現了下面R>* 的輸出就表明配置成功了。

此外,還可以觀察ripd的日志輸出來確認。日志輸出如下截圖所示。可以看到RECV packet之類的日志信息。

2、進行ping測試。

客戶端A上的測試:

1、ping路由器A的IP2地址

2、ping路由器A的IP1地址

3、ping路由器B的IP1地址

4、ping路由器B的IP2地址

5、ping 客戶端B的IP地址

客戶端B上的測試:

1、ping 客戶端A的IP地址

3. 動態路由的路由器搭建方法——使用OSPF協議

3.1 開始實驗

確保四台虛擬機系統正常運行,關掉ripd服務:

配置網絡參數以及zebra.conf文件。這些參數和上面的那個實驗是相同的,在此不再贅述。配置完畢后在終端中運行zebra -d即可。

配置ospfd服務需要的配置文件,即ospfd.conf:

cp /usr/share/doc/quagga/examples/ospfd.conf.sample /etc/quagga/ospfd.conf
vim /etc/quagga/ospfd.conf

開啟ospfd服務:

cd /usr/lib/quagga/
./ospfd -d

緊接着,查看端口2604有沒有成功開啟。

netstat -tnupl | grep zebra

同時,可以查看路由表(輸入show ip ospf route),還有ospf接口設置(輸入show ip ospf interface)。如下面的截圖所示。

再到端口2601中查看一些關鍵信息。具體步驟如下圖所示。我們需要重點關注的是路由表顯示信息。可以看到在下面的截圖中,路由表信息中有O 192.168.1.0/24 is directly connected之類的字樣,那是由ospfd產生的。

查看日志輸出,步驟見下面的截圖。在下面這個日志截圖中,我們可以看到,路由器每10s就會發送出去一個hello數據包。

2、配置路由器B(Router B)

由於在配置路由器B時,操作的步驟基本同路由器A配置相同,只是在網段和IP地址等方面有稍許區別
。要注意,在開啟ospfd之前,要保證zebra先運行。

先去關閉ripd進程:

1.ospfd.conf文件內容:

2.查看路由表:

3.查看一下日志輸出:

4.接下來,進入端口2604中。輸入命令sh ip ospf neighbor,見下面的截圖。

5.輸入show ip ospf database,可以看到更為詳細的信息被輸出了。

3.2 測試這個網絡

客戶端A上的ping測試:

1、Ping路由器A上的IP1地址

2、Ping 路由器A上的IP2地址

3、Ping 路由器B上的IP1地址

4、Ping 路由器B上的IP2地址

5、Ping 客戶端B的IP地址

4. 動態路由的路由器搭建方法——使用BGP協議

接下來的實驗,將會使用zebra/quagga支持的邊界網關協議——BGP協議,來構建兩台路由器進行測試。

在開始實驗之前,我們依然要做一些准備工作。但為了方便,我們直接使用了第二個實驗(即“動態路由的路由器搭建方法——使用RIP協議”)框圖以及部分設置。要做的僅僅是改變路由器協議罷了。詳細的准備工作參見第二個實驗開始的部分。

4.1 開始實驗

在開始實驗之前,我們需要確定zebra已經在后台運行,可以使用命令:ps -ef | grep zebra進行查看,在此需要注意的是,zebra.conf的配置文件不要改動,我們繼續使用上面的實驗用的配置文件。

配置路由器A(Router A)

cp /usr/share/doc/quagga/examples/bgpd.conf.sample /etc/quagga/bgpd.conf
vim /etc/quagga/bgpd.conf

bgpd.conf配置的內容如下:

啟動bgpd服務。接下來,我們進入到端口2605中,來查看一些關於bgp的信息:

cd /usr/lib/quagga/
./bgpd -d

打開日志的輸出:

配置路由器B(Router B)

在啟動bgpd之前,要先保證zebra這個daemon在運行中。

1、bgpd.conf文件:

2、進入2605端口后查看有關bgp的信息:

4.2 測試這個網絡

1、日志輸出:

2、端口2601中的路由表信息:

可以看到,有一條路由規則:B>* 192.168.100.0/24這一行。這個便是bgpd產生的。

3、端口2605中的鄰居顯示:

客戶端上的ping測試:

客戶端A使用ping命令測試客戶端B的IP地址:

結束語

上面的三個實驗分別使用了RIP協議、OSPF協議、BGP協議來搭建路由器。演示了使用zebra/quagga搭建路由器的基本方法。可以看到,其實總的來說並不是特別困難,同時,也可以看到zebra/quagga軟件卻是很強大!

參考文章:Linux下使用Quagga(Zebra)搭建路由器記錄 - sanyuanyanjin - 博客園 (cnblogs.com)


免責聲明!

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



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