" /> quagga 0.99.7

quagga 0.99.7

quagga(zebra)とは

絶滅したシマウマのこと(ぉぃ。もとい、ルーティングソフトウェア。
一般に利用されているルーティングプロトコルのほとんどを網羅している。IPv6用のそれとしては RIPng BGP4+ OSPFv3 があるが、ここでは RIPng を使用する。ルーティングプロトコル毎にdaemonが分かれているのが特徴。

RPMのビルド

RPMを作成しませう。

$ tar zxvf quagga-0.99.7.tar.gz
$ cp -a quagga-0.99.7/redhat/quagga.spec ~/rpm/SPECS
$ vi ~/rpm/SPECS/quagga.spec
$ cp -a quagga-0.99.7.tar.gz ~/rpm/SOURCES
$ rpmbuild -ba ~/rpm/SPECS/quagga.spec

インストール

RPMをインストールする。

$ cd ~/rpm/RPMS/i386
$ sudo rpm -ivh quagga-devel-0.99.7-2007042901.i386.rpm quagga-contrib-0.99.7-2007042901.i386.rpm quagga-0.99.7-2007042901.i386.rpm

インストールの確認

RPMをインストールすると、/etc/quagga というディレクトリが作成される。このディレクトリは一般ユーザは参照できない。quagga:quagga だけが参照可能である。(このユーザ/グループの設定もRPMをインストールしたときに追加される)

設定ファイルのとりあえずの作成

まず、zebra の設定ファイルを「とりあえず」作成する。後で設定変更するから「とりあえず」である。zebra はルーティングプロトコル毎の処理を統合し、種々の判断を行うdaemonである。ゆえに、zebra daemonは各種ルーティングdaemonを起動する際には、あらかじめ起動しておく必要がある。

sampleファイルをテンプレートとして使用する。

# cp -a /etc/quagga/zebra.conf.sample /etc/quagga/zebra.conf

続いて、ripngd の設定ファイルを作成します。こちらもsampleファイルをテンプレートに使用します。とりあえず、コピーしましょう。

# cp -a /etc/quagga/ripngd.conf.sample /etc/quagga/ripngd.conf

daemon起動

zebra ripngd を起動する。

$ sudo /etc/rc.d/init.d/zebra start
$ sudo /etc/rc.d/init.d/ripngd start

zebraの設定ファイルを更新する

今のままでも動きますが、動くだけなので、ある程度きちんとした内容に更新させます。

zebraにアクセス

$ telnet localhost zebra
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.7).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: (たぶん zebra )
Router>

VTYパスワード変更

VTYへアクセスする際のパスワードを変更します。ついでに暗号化させておきましょう。

Router> enable
Password: (たぶん zebra )
Router# configure terminal
Router(config)# password hogehoge        <--- vty(zebra)にアクセスするためのパスワードを入力してくだされ
Router(config)# enable password hogehoge <--- 特権モード(enable)に移るときのパスワードを入力してくだされ
Router(config)# service password-encryption
Router(config)# write memory
Configuration saved to /etc/quagga/zebra.conf
Router(config)# exit
Router#

VTYアクセス制御

とりあえず、ローカルPCからだけアクセスできるように制御リストを作成しましょう。

Router> enable
Password: (たぶん hogehoge )
Router# configure terminal
Router(config)# access-list LOCALHOST permit 127.0.0.1/32
Router(config)# ipv6 access-list LOCALHOST permit ::1/128
Router(config)# line vty
Router(config-line)# access-class LOCALHOST
Router(config-line)# exit
Router(config)# write memory
Configuration saved to /etc/quagga/zebra.conf
Router(config)# exit
Router#

/etc/quagga/zebra.conf

こんな感じです。特権モードで show running-config でも確認できます。

# cat /etc/quagga/zebra.conf
!
! Zebra configuration saved from vty
!   2007/05/05 03:24:42
!
hostname Router
password 8 {VTYほげほげぇ〜}
enable password 8 {特権モードほげほげぇ〜}
service password-encryption
!
interface eth0
ipv6 nd suppress-ra
!
interface lo
!
interface ppp0
 ipv6 nd suppress-ra
!
interface sit0
 ipv6 nd suppress-ra
!
interface sit1
 ipv6 nd suppress-ra
!
access-list LOCALHOST permit 127.0.0.1/32
!
ipv6 access-list LOCALHOST permit ::1/128
!
!
line vty
 access-class LOCALHOST
!
#

ripngdの設定ファイルを更新する

今のままでも動きますが、動くだけなので、ある程度きちんとした内容に更新させます。

ripngdにアクセス

$ telnet ::1 ripngd
Trying ::1...
Connected to ::1.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.7).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: (たぶん zebra )
ripngd>

VTYパスワード変更

VTYへアクセスする際のパスワードを変更します。ついでに暗号化させておきましょう。

Router> enable
Password: (たぶん zebra )
Router# configure terminal
Router(config)# password hogehoge        <--- vty(ripngd)にアクセスするためのパスワードを入力してくだされ
Router(config)# enable password hogehoge <--- 特権モード(enable)に移るときのパスワードを入力してくだされ
Router(config)# service password-encryption
Router(config)# write memory
Configuration saved to /etc/quagga/ripngd.conf
Router(config)# exit
Router#

VTYアクセス制御

とりあえず、ローカルPCからだけアクセスできるように制御リストを作成しましょう。

Router> enable
Password: (たぶん hogehoge )
Router# configure terminal
Router(config)# ipv6 access-list LOCALHOST permit ::1/128
Router(config)# line vty
Router(config-line)# access-class LOCALHOST
Router(config-line)# exit
Router(config)# write memory
Configuration saved to /etc/quagga/ripngd.conf
Router(config)# exit
Router#

RIPngとしての設定

以上は前置きであって、これから本番。

ripngd> enable
Password: (たぶん hogehoge) 
ripngd# configure terminal
ripngd(config)# router ripng
ripngd(config-router)# network sit1  <--- ipv6を外と語り合うI/Fを設定する
ripngd(config-router)# aggregate-address 2001:240:50a::/48 <--- 集約経路が不要な方は要らないかも。
ripngd(config-router)# route 2001:240:50a::/48
ripngd(config-router)# exit
rpingd(config)# ipv6 prefix-list OUTGOING seq 10 permit 2001:240:50a::/48 <--- へんてこりんな経路情報を上位に漏らさないためのリストの作成
ripngd(config)# ipv6 prefix-list OUTGOING seq 20 deny any
ripngd(config)# router ripng
ripngd(config-router)# distribute-list prefix OUTGOING out sit1 <--- 作成したリストをI/F(sit1)に適用する
ripngd(config-router)# write memory
ripngd(config-router)# exit
ripngd(config)# exit
ripngd#

/etc/quagga/ripngd.conf

こんな感じです。特権モードで show running-config でも確認できます。

# cat /etc/quagga/ripngd.conf
!
! Zebra configuration saved from vty
!   2007/05/11 01:20:19
!
hostname ripngd
password 8 {VTYほげほげぇ〜}
enable password 8 {特権モードほげほげぇ〜}
log stdout
service password-encryption
!
router ripng
 network sit1
 aggregate-address 2001:240:50a::/48
 route 2001:240:50a::/48
 distribute-list prefix OUTGOING out sit1
!
ipv6 access-list LOCALHOST permit ::1/128
!
ipv6 prefix-list OUTGOING seq 10 permit 2001:240:50a::/48
ipv6 prefix-list OUTGOING seq 20 deny any
!
line vty
 access-class LOCALHOST
!
#