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)
----------------
| host1 |
| |
----------------
| 192.168.10.43 (eth0)
|
|
| 192.168.10.44 (eth0)
----------------
| host2 |
| |
----------------
| 192.168.60.1 (eth1)
|
|
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
log stdout
!
interface lo
!
interface eth0 <==インターフェイスの指定
!
interface sit0
!
router rip <== RIPを使うための宣言
! passive-interface eth0 <== コメントアウトを外すと受信した全ての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 sit0 ! router rip 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
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
仮想端末のポート