1. 程式人生 > >自由路由軟體ZEBRA基本配置完全攻略

自由路由軟體ZEBRA基本配置完全攻略

前言

  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