Zebra

更新日2009-09-12 (土) 17:59:12

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

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

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

実験環境

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

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

/etc/sysctl.confを変更

net.ipv4.ip_forward = 1  0から1

有効にするため

# sysctl -p

インストール

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

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

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

環境設定

環境ファイルは /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
!

起動

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

確認

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

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-12 (土) 17:59:12 (3083d)