自由路由軟體ZEBRA基本配置完全攻略
阿新 • • 發佈:2019-02-09
前言
Zebra是一個路由軟體包,提供基於TCP/IP路由服務,支援RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4, 和 BGP-4+等眾多路由協議。Zebra還支援BGP特性路由反射器(Route Reflector)。除了傳統的 IPv4路由協議,Zebra也支援IPv6路由協議。如果執行的SNMP守護程序(需要ucd-snmp)支援SMUX協 議,Zebra還能支援路由協議MIBs。
由以上可見,Zebra的確是一個很不錯的路由系統,但比起真正的路由器就簡直是小兒科,所以網路高手 就當這文章是小孩子過家家吧,而對於象我這樣的初學者(特別是沒有真實裝置或足夠裝置進行實驗) 也不失為一個學習和熟悉路由配置、路由協議的好工具。我沒有實際的配置經驗,對路由的技術細節也 不是十分清晰,完全是在扔破磚頭。希望路由高手指正概念錯誤。
安裝
Zebra目前最新的版本是0.92a,它的安裝非常簡單,我們只需從http://www.zebra.org/下載zebra- 0.92a.tar.gz,然後執行以下命令安裝(本文環境是RedHat7.2):
shell> tar xzf zebra-0.92a.tar.gz
shell> cd zebra-0.92a
shell> ./configure
shell> make
shell> make install
這樣Zebra就安裝好了,安裝的執行檔案:
shell> ls /usr/local/sbin
bgpd
ospfd
ripd
zebra
配置檔案:
shell> ls /usr/local/etc
bgpd.conf.sample
ospfd.conf.sample
zebra.conf.sample
bgpd.conf.sample2
ripd.conf.sample
執行
編譯安裝完Zebra後,可以看到有4個可執行檔案和5個配置樣本檔案,我們就使用它的配置樣本檔案:
shell> cd /usr/local/etc
shell> cp zebra.conf.sample zebra.conf
Zebra的各程序有各自的終端介面或VTY,如果我們需要給連線到它們的埠設定別名的話,在/etc/ services檔案新增如下內容:
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
然後就可以啟動Zebra了:
shell> zebra -d
這樣,Zebra就以守護程序啟動了,其它的引數請參考zebra -h。
基本路由配置命令
直接用telnet連線:
shell> telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is zebra (version 0.92a).
Copyright 1996-2001 Kunihiro Ishiguro.
User Access Verification
Password:
Zebra會提示輸入口令,我們通過/usr/local/etc/zebra.conf可以看到口令是zebra,enable口令也是zebra。
輸 入口令zebra,得到路由器使用者模式提示符:
Router>
進入特權模式:
Router> en
Password:
Router#
輸入一個問號,看看Zebra提供了多少路由命令:
Router# ?
configure
Configuration from vty interface
copy
Copy configuration
debug
Debugging functions (see also 'undebug')
disable
Turn off privileged mode command
end
End current mode and change to enable mode.
exit
Exit current mode and down to previous mode
help
Description of the interactive help system
list
Print command list
no
Negate a command or set its defaults
quit
Exit current mode and down to previous mode
show
Show running system information
terminal
Set terminal line parameters
who
Display who is on vty
write
Write running configuration to memory, network, or terminal
提供的命令很少,實際路由器好多命令都沒有,我們只能用有限的命令投入到無限的實驗中去。
Router# sh run
Current configuration:
!
hostname Router
password zebra
enable password zebra
!
interface lo
!
interface eth0
!
line vty
!
end
Zebra把作業系統的網路介面當做路由器的介面,所以在做比較複雜的路由實驗,會需要比較多的網絡卡。
進入全域性模式,儘可能把實際可用的配置命令都實驗一遍:
Router# conf t
Router(config)#
自己取一個路由器名字:
Router(config)# hostname r1
r1(config)#
Zebra比較簡單,登陸口令不是在line下修改,而是直接在全域性模式下用password修改r1(config)# password {password}
Zebra不支援enable secret {password}這種MD5加密口令,只能使用enable password {password}來修改 enable口令:
r1# conf t
r1(config)# enable password {password}
在路由器配置中加密所有的口令:
r1(config)# service password-encryption
回到特權模式:
r1(config)# exit
r1# sh run
Current configuration:
!
hostname r1
password 8 alA5.vcyMAwXQ
enable password 8 ksbxOFN8xcFMc
service password-encryption
!
interface lo
!
interface eth0
!
line vty
!
end
我們看到剛才的明文密碼都進行加密了,給我們的實驗機也提高安全性。Zebra有一點比較噁心,如果我 們先設定了service password-encryption,然後再修改口令,sh run就發現口令又都是明文的了,但是由 於有service password-encryption,所以就無法登陸了。
去掉會話超時,免得10分鐘沒有動作,就把我們給踢了。但是在實際的路由器配置中,為安全起見我們 最好還是設上會話超時。
r1# conf t
r1(config)# line vty
r1(config-line)# exec-timeout 0 0
設定日誌記錄,Zebra可以把日誌記錄到標準輸出、syslog、以及指定輸出檔案:
r1(config-line)# exit
r1(config)# log stdout
r1(config)# no log stdout
r1(config)# log syslog
r1(config)# no log syslog
r1(config)# log file /usr/local/etc/zebra.log
配置介面IP地址:
r1(config)# int lo
r1(config-if)# ip address 127.0.0.1/8
r1(config-if)# exit
r1(config)# int eth0
r1(config-if)# ip address 192.168.5.121/24
Zebra比較奇怪,不能使用ip address 192.168.5.121 255.255.255.0這種形式設定IP。測試一下,就設定成和Linux中使用的一樣。
儲存我們剛才的配置:
r1(config-if)# exit
r1(config)# exit
r1# copy run start
Configuration saved to /usr/local/etc/zebra.conf
r1#
2、用Zebra做簡單的RIP實驗
RIP是應用較早、使用較普遍的IGP,適用於小型同類網路,是典型的距離向量(distance-vector)協 議。RIP通過廣播UDP報文來交換路由資訊,每30秒傳送一次路由資訊更新。RIP提供跳躍計數(hop count)作為尺度來衡量路由距離,跳躍計數是一個包到達目標所必須經過的路由器的數目。如果到相同 目標有二個不等速或不同頻寬的路由器,但跳躍計數相同,則RIP認為兩個路由是等距離的。RIP最多支 持的跳數為15,即在源和目的網間所要經過的最多路由器的數目為15,跳數16表示不可達。RIPv2支援 驗證、金鑰管理、路由彙總、無類域間路由(CIDR)和變長子網掩碼(VLSMs)。
Zebra支援RIPv2,使用ripd程式實現RIP路由功能,但ripd程式需要在zebra程式讀取介面資訊,所以zebra 一定要在ripd之前啟動。由於條件所限,下面的RIP實驗是在兩臺單網絡卡的RedHat7.2下做的,所以只是 最簡單的演示。
按照上面基本配置的方法初始化第一臺機器:
shell_1> cd /usr/local/etc
shell_1> cp zebra.conf.sample zebra.conf
shell_1> cp ripd.conf.sample ripd.conf
shell_1> zebra -d
進入zebra設定IP
shell_1> telnet localhost 2601
Password:
Router> en
Password:
Router# conf t
Router(config)# hostname r1
r1(config)# int eth0
r1(config-if)# ip address 192.168.5.121/24
r1(config-if)# ctrl+z
r1# copy run start
進入第一臺機器的rip設定
shell_1> ripd -d
shell_1> telnet localhost 2602
Password:
ripd> en
ripd# conf t
ripd(config)# hostname r1_ripd !改個名字好辨認
r1_ripd(config)# router rip !啟動rip
Zebra是一個路由軟體包,提供基於TCP/IP路由服務,支援RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4, 和 BGP-4+等眾多路由協議。Zebra還支援BGP特性路由反射器(Route Reflector)。除了傳統的 IPv4路由協議,Zebra也支援IPv6路由協議。如果執行的SNMP守護程序(需要ucd-snmp)支援SMUX協 議,Zebra還能支援路由協議MIBs。
由以上可見,Zebra的確是一個很不錯的路由系統,但比起真正的路由器就簡直是小兒科,所以網路高手 就當這文章是小孩子過家家吧,而對於象我這樣的初學者(特別是沒有真實裝置或足夠裝置進行實驗) 也不失為一個學習和熟悉路由配置、路由協議的好工具。我沒有實際的配置經驗,對路由的技術細節也 不是十分清晰,完全是在扔破磚頭。希望路由高手指正概念錯誤。
安裝
Zebra目前最新的版本是0.92a,它的安裝非常簡單,我們只需從http://www.zebra.org/下載zebra- 0.92a.tar.gz,然後執行以下命令安裝(本文環境是RedHat7.2):
shell> tar xzf zebra-0.92a.tar.gz
shell> cd zebra-0.92a
shell> ./configure
shell> make
shell> make install
這樣Zebra就安裝好了,安裝的執行檔案:
shell> ls /usr/local/sbin
bgpd
ospfd
ripd
zebra
配置檔案:
shell> ls /usr/local/etc
bgpd.conf.sample
ospfd.conf.sample
zebra.conf.sample
bgpd.conf.sample2
ripd.conf.sample
執行
編譯安裝完Zebra後,可以看到有4個可執行檔案和5個配置樣本檔案,我們就使用它的配置樣本檔案:
shell> cd /usr/local/etc
shell> cp zebra.conf.sample zebra.conf
Zebra的各程序有各自的終端介面或VTY,如果我們需要給連線到它們的埠設定別名的話,在/etc/ services檔案新增如下內容:
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
然後就可以啟動Zebra了:
shell> zebra -d
這樣,Zebra就以守護程序啟動了,其它的引數請參考zebra -h。
基本路由配置命令
直接用telnet連線:
shell> telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is zebra (version 0.92a).
Copyright 1996-2001 Kunihiro Ishiguro.
User Access Verification
Password:
Zebra會提示輸入口令,我們通過/usr/local/etc/zebra.conf可以看到口令是zebra,enable口令也是zebra。
輸 入口令zebra,得到路由器使用者模式提示符:
Router>
進入特權模式:
Router> en
Password:
Router#
輸入一個問號,看看Zebra提供了多少路由命令:
Router# ?
configure
Configuration from vty interface
copy
Copy configuration
debug
Debugging functions (see also 'undebug')
disable
Turn off privileged mode command
end
End current mode and change to enable mode.
exit
Exit current mode and down to previous mode
help
Description of the interactive help system
list
Print command list
no
Negate a command or set its defaults
quit
Exit current mode and down to previous mode
show
Show running system information
terminal
Set terminal line parameters
who
Display who is on vty
write
Write running configuration to memory, network, or terminal
提供的命令很少,實際路由器好多命令都沒有,我們只能用有限的命令投入到無限的實驗中去。
Router# sh run
Current configuration:
!
hostname Router
password zebra
enable password zebra
!
interface lo
!
interface eth0
!
line vty
!
end
Zebra把作業系統的網路介面當做路由器的介面,所以在做比較複雜的路由實驗,會需要比較多的網絡卡。
進入全域性模式,儘可能把實際可用的配置命令都實驗一遍:
Router# conf t
Router(config)#
自己取一個路由器名字:
Router(config)# hostname r1
r1(config)#
Zebra比較簡單,登陸口令不是在line下修改,而是直接在全域性模式下用password修改r1(config)# password {password}
Zebra不支援enable secret {password}這種MD5加密口令,只能使用enable password {password}來修改 enable口令:
r1# conf t
r1(config)# enable password {password}
在路由器配置中加密所有的口令:
r1(config)# service password-encryption
回到特權模式:
r1(config)# exit
r1# sh run
Current configuration:
!
hostname r1
password 8 alA5.vcyMAwXQ
enable password 8 ksbxOFN8xcFMc
service password-encryption
!
interface lo
!
interface eth0
!
line vty
!
end
我們看到剛才的明文密碼都進行加密了,給我們的實驗機也提高安全性。Zebra有一點比較噁心,如果我 們先設定了service password-encryption,然後再修改口令,sh run就發現口令又都是明文的了,但是由 於有service password-encryption,所以就無法登陸了。
去掉會話超時,免得10分鐘沒有動作,就把我們給踢了。但是在實際的路由器配置中,為安全起見我們 最好還是設上會話超時。
r1# conf t
r1(config)# line vty
r1(config-line)# exec-timeout 0 0
設定日誌記錄,Zebra可以把日誌記錄到標準輸出、syslog、以及指定輸出檔案:
r1(config-line)# exit
r1(config)# log stdout
r1(config)# no log stdout
r1(config)# log syslog
r1(config)# no log syslog
r1(config)# log file /usr/local/etc/zebra.log
配置介面IP地址:
r1(config)# int lo
r1(config-if)# ip address 127.0.0.1/8
r1(config-if)# exit
r1(config)# int eth0
r1(config-if)# ip address 192.168.5.121/24
Zebra比較奇怪,不能使用ip address 192.168.5.121 255.255.255.0這種形式設定IP。測試一下,就設定成和Linux中使用的一樣。
儲存我們剛才的配置:
r1(config-if)# exit
r1(config)# exit
r1# copy run start
Configuration saved to /usr/local/etc/zebra.conf
r1#
2、用Zebra做簡單的RIP實驗
RIP是應用較早、使用較普遍的IGP,適用於小型同類網路,是典型的距離向量(distance-vector)協 議。RIP通過廣播UDP報文來交換路由資訊,每30秒傳送一次路由資訊更新。RIP提供跳躍計數(hop count)作為尺度來衡量路由距離,跳躍計數是一個包到達目標所必須經過的路由器的數目。如果到相同 目標有二個不等速或不同頻寬的路由器,但跳躍計數相同,則RIP認為兩個路由是等距離的。RIP最多支 持的跳數為15,即在源和目的網間所要經過的最多路由器的數目為15,跳數16表示不可達。RIPv2支援 驗證、金鑰管理、路由彙總、無類域間路由(CIDR)和變長子網掩碼(VLSMs)。
Zebra支援RIPv2,使用ripd程式實現RIP路由功能,但ripd程式需要在zebra程式讀取介面資訊,所以zebra 一定要在ripd之前啟動。由於條件所限,下面的RIP實驗是在兩臺單網絡卡的RedHat7.2下做的,所以只是 最簡單的演示。
按照上面基本配置的方法初始化第一臺機器:
shell_1> cd /usr/local/etc
shell_1> cp zebra.conf.sample zebra.conf
shell_1> cp ripd.conf.sample ripd.conf
shell_1> zebra -d
進入zebra設定IP
shell_1> telnet localhost 2601
Password:
Router> en
Password:
Router# conf t
Router(config)# hostname r1
r1(config)# int eth0
r1(config-if)# ip address 192.168.5.121/24
r1(config-if)# ctrl+z
r1# copy run start
進入第一臺機器的rip設定
shell_1> ripd -d
shell_1> telnet localhost 2602
Password:
ripd> en
ripd# conf t
ripd(config)# hostname r1_ripd !改個名字好辨認
r1_ripd(config)# router rip !啟動rip
r1_ripd(config-rout