*Zebra [#xa2d4cc6]

RIGHT:更新日&lastmod();

zebraはTCP/IPのルーティングを行うフリー・ソフトでサポートしているルーティング・プロトコルは,IPv4用はBGP-4,RIPv1,RIPv2,OSPFv2など,IPv6用はRIPng,BGP4+,OSPFv3など。quaagaというzebraの後続版もあるようだ

今回はripを利用するためにインストールしてみる。

それぞれのプロトコルに対応したデーモンがあり、それをzebraというデーモンを通してKeranelのルーティングテーブルに書き込みをしている。またネットワークに経路情報を発信する。

実験環境

  192.168.50.0/24
        | (ripなし)
        | 
        |
        | 192.168.50.1 (eth1)
        | 192.168.50.1 (eth1) (rip受信のみ)
 ----------------
 |  host1       |
 |              |
 ----------------
        | 192.168.10.43 (eth0)
        | (この間がrip)
        |
        | 192.168.10.44 (eth0)
 ----------------
 |  host2       |
 |              |
 ----------------
        | 192.168.60.1 (eth1)
        | 192.168.60.1 (eth1) (rip受信のみ)
        |
        | (ripなし)
        | 
  192.168.60.0/24


それぞれのインターフェイスにパケットがフォワードされるように

''/etc/sysctl.conf''を変更

 net.ipv4.ip_forward = 1  0から1

''有効にするため''

 # sysctl -p

**インストール [#z874a218]

http://www.zebra.org/から Downlad

もしかすると readline-develが必要かもしれないのでインストール

 $ tar zxvf zebra-0.95a.tar.gz
 $ cd zebra-0.95a
 $ ./configure
 $ make
 $ su
 # make install


**環境設定 [#vb864c8e]

環境ファイルは /usr/local/etcにプログラムは /usr/loca/sbinにインストールされる

 # cd /usr/local/etc/
 # cp zebra.conf.sample zebra.conf
 # cp ripd.conf.sample ripd.conf

zebra.confは特に変更場所はない。ただし、対話モードにログインするときのパスワードが記入されているので実運用時変更の必要あり。

''ripd.conf''

[host1側]

 !        <==コメント
 ! Zebra configuration saved from vty
 !   2009/09/10 20:49:46
 !
 hostname ripd
 password zebra

 debug rip events  <= event(Sending and receiving packets, timers, and changes in interfaces )をlogに書き出す
 debug rip packet  <= packet(information about the RIP packets)をlogに書き出す

!log stdout

 log  file  /var/log/ripd.log

 log stdout
 !
 interface lo
 !
 interface eth0   <==インターフェイスの指定
 interface eth1   <==これがないとpassive-interfaceを指定しても有効にならずripを出してしまう
 !
 interface sit0
 !
 router rip       <== RIPを使うための宣言
 passive-interface eth1  <== 受信した全てのRIPメッセージを解釈するが、
                               そのインターフェースから自分は発信しない
 !
  network 192.168.10.0/24  <== RIP情報を流すネットワークを指定(passive modeの時も必要なようだ)
  network 192.168.50.0/24  <== RIP情報を流すネットワークを指定(両方必要なようだ)
 !
 line vty
 !

[host2側]

 !
 ! Zebra configuration saved from vty
 !   2009/09/10 13:05:42
 !
 hostname ripd
 password zebra
 log stdout
 !
 interface lo
 !
 interface eth0
 interface eth1
 !
 interface sit0
 !
 router rip
 passive-interface eth1
  network 192.168.10.0/24
  network 192.168.60.0/24
 !
 line vty
 !

***起動 [#w803823d]

 # /usr/local/sbin/zebra -d
 # /usr/local/sbin/ripd -d


***確認 [#l6abef97]

host1で(host2も同じ)仮想端末(zebra:2601)にログイン

 $ telnet localhost 2601
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 
 Hello, this is zebra (version 0.95a).
 Copyright 1996-2004 Kunihiro Ishiguro.
 
 
 User Access Verification 
 
 Password:  <=zebra(zebra.confのパスワード)
 Router> show ip route
 Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
        B - BGP, > - selected route, * - FIB route
 
 K>* 0.0.0.0/0 via 192.168.10.253, eth0
 C>* 127.0.0.0/8 is directly connected, lo
 K>* 169.254.0.0/16 is directly connected, eth1
 C>* 192.168.10.0/24 is directly connected, eth0
 R>* 192.168.50.0/24 [120/2] via 192.168.10.43, eth0, 00:00:12
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 rip情報が追加されている
 C>* 192.168.60.0/24 is directly connected, eth1

Status 表示 仮想端末(ripd:2602)にログイン

 ripd> show ip protocols
 Routing Protocol is "rip"
   Sending updates every 30 seconds with +/-50%, next due in 20 seconds
   Timeout after 180 seconds, garbage collect after 120 seconds
   Outgoing update filter list for all interface is not set
   Incoming update filter list for all interface is not set
   Default redistribution metric is 1
   Redistributing:
   Default version control: send version 2, receive version 2
     Interface        Send  Recv   Key-chain
     eth0             2     2
     eth1             2     2
   Routing for Networks:
     192.168.10.0/24
     192.168.50.0/24
   Routing Information Sources:
     Gateway          BadPackets BadRoutes  Distance Last Update
     192.168.10.44            0         0       120   00:00:05
   Distance: (default is 120)


host1でdebug rip events, debug rip packetを有効にしてeth1はrip受信のみしたときのlog

 # tail -f /var/log/ripd.log
 2009/09/12 17:28:15 RIP: RECV packet from 192.168.10.44 port 520 on eth0
 2009/09/12 17:28:15 RIP: RECV RESPONSE version 2 packet size 24
 2009/09/12 17:28:15 RIP:   192.168.60.0/24 -> 0.0.0.0 family 2 tag 0 metric 1
 2009/09/12 17:28:15 RIP: triggered update!
 2009/09/12 17:28:15 RIP: SEND UPDATE to eth0 ifindex 2
 2009/09/12 17:28:15 RIP: multicast announce on eth0
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^eth0しかrip送信していない
 2009/09/12 17:28:15 RIP: update routes on interface eth0 ifindex 2
 2009/09/12 17:28:15 RIP: SEND to socket 8 port 520 addr 224.0.0.9
 2009/09/12 17:28:15 RIP: SEND RESPONSE version 2 packet size 24
 2009/09/12 17:28:15 RIP:   192.168.50.0/24 -> 0.0.0.0 family 2 tag 0 metric 1
 2009/09/12 17:28:15 RIP: RECV packet from 192.168.10.44 port 520 on eth0
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^host2からripを受信
 2009/09/12 17:28:15 RIP: RECV RESPONSE version 2 packet size 24
 2009/09/12 17:28:15 RIP:   192.168.60.0/24 -> 0.0.0.0 family 2 tag 0 metric 1
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^host2からの内容
 2009/09/12 17:28:15 RIP: ignore packet comes from myself


もしeth1もripを送信していると以下のようなlogになる

 2009/09/12 17:26:19 RIP: SEND UPDATE to eth0 ifindex 2
 2009/09/12 17:26:19 RIP: multicast announce on eth0
 2009/09/12 17:26:19 RIP: update routes on interface eth0 ifindex 2
 2009/09/12 17:26:19 RIP: SEND UPDATE to eth1 ifindex 3
 2009/09/12 17:26:19 RIP: multicast announce on eth1
 2009/09/12 17:26:19 RIP: update routes on interface eth1 ifindex 3



''shellでも確認''
 $ netstat -rn
 カーネルIP経路テーブル
 受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インターフェース
 192.168.50.0    192.168.10.43   255.255.255.0   UG        0 0          0 eth0
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 追加されている。
 192.168.60.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
 192.168.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
 169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
 0.0.0.0         192.168.10.253  0.0.0.0         UG        0 0          0 eth0


仮想端末のポート

-zebra    2601
-ripd     2602
-ripngd   2603
-ospfd    2604
-bgpd     2605
-ospf6d   2606


**参考 [#b1810ffe]

-http://itpro.nikkeibp.co.jp/free/v6start/zebra_v6/20020308/1/?ST=system
-http://www.miraclelinux.com/support/?q=node/184
-http://www.wakhok.ac.jp/~kanayama/summer/05/net/node129.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS