Quagga

先日買ってきたSoftwareDesignにLinuxのルーティングソフト「Quagga」が載っていたので、さっそく試してみようと。

Software Design (ソフトウエア デザイン) 2006年 10月号 [雑誌]

Software Design (ソフトウエア デザイン) 2006年 10月号 [雑誌]

今月号は「五輪の書TCP/IPルーティング」でした。


Quaggaは、以前「Zebra」と呼ばれていたルーティングソフトで。


昔話。
CCNAを受けようと思っていたとき、実機がないのでルータシミュレータが欲しかった。
今のようにシミュレータだの、参考書だの問題集だのない頃で。
アメリカのサイトでシミュレータを見つけはしたが、どうなのかなぁ、なんて思ってた。
いろいろ検索したところ、「Zebraというソフトがいい」という話を聞いてさっそくダウンロード。
これがシミュレータかと思ってたら、ルーティングソフト。さらに、その頃はほぼド素人状態なので、Linux用ソフトなんか手に入れてもなにもできないのであった。
結局、触らず放置でした。


まぁ、どうでもいい話ですね。
で、Zebraが名前を変えて、後継として開発されたのが、このQuagga(絶滅したシマウマに似た動物:クアッガ)。
なんでこのZebra = QuaggaがCCNAのルータシミュレータの話題にあがっていたかというと、IOSにめちゃくちゃ似てるインタフェースだから、なのです。


SoftwareDesignでは好都合なことにDebian GNU/Linuxでのインストール・設定が載っていたので。
さっそくVirtualServerDebianインストール。
…ウチのVSにこれでDebian4つ目。
最小構成Debianってやっぱ便利ー。

Quaggaインストール

apt-get install quagga

これだけ。

Quagga起動設定

まず、設定ファイルを/etc/quaggaに作成するのだが、サンプルが用意されているのでこれをまるっと流用。

cp /usr/share/doc/quagga/examples/* /etc/quagga/

で、〜.conf.sampleというファイルが/etc/quagga/にコピーされるので、これの.sample部分を削る。
まず、次の2つのファイルは必須。zebra.confとvtysh.conf。

cp zebra.conf.sample zebra.conf
cp vtysh.conf.sample vtysh.conf

zebraはQuagga本体。vtyshはVTYログインのために必要。


で、使用したいルーティングプロトコルの.confファイルを作成する必要がある。
Quaggaは、RIP、OSPF、OSPFv6、IS-IS、BGP4が使用可能で、それぞれの.confファイルがサンプルで用意されてる。
今回は、OSPFにする。

cp ospfd.conf.sample ospfd.conf

次に、/etc/quagga/daemonsファイルを書き換える。
Quaggaは、「ルータ本体(Zebra)」「ルーティングプロトコル」がそれぞれ別のデーモンとして動作するらしく。
どのデーモンを起動させるか明示する。

/etc/quagga/daemons

zebra=yes
ospfd=yes

vtysh=yes

デフォルトは全部「no」になってるので、zebraとospfdをyesに、あとvtyshを追加してyesにする。
これで、設定おしまい。起動させる。

/etc/init.d/quagga start

Quaggaの操作

まず。Quaggaの操作としてポイント。

  1. 基本はIOS
  2. zebraとospfdはそれぞれ別のデーモンなので、別々にVTY接続する
  3. インタフェースは実際にLinuxにあるインタフェースとLoopbackが接続されている

という感じ。
特に重要なのは2。
zebraにVTY接続しても、ルーティング設定ができない。ルーティング設定をするなら、ospfdへVTY接続をかけなければいけないという。ちょっとIOSに慣れてると変な感じがするですよ。
で、それぞれ、

telnetすることにより、VTY接続できる。デフォルトパスワードは「zebra」。



おー。IOSだー。


あとは普通のIOSと同じように設定していくのだが。
show ip interface briefがなかったりしたりするので、確かめつつ使うとよろしいかと。
基本的なヘルプ機能(Tabとか?とか)はIOSと同じなので、非常に使いやすい。
ちなみにIPアドレス設定が。

interface eth0
ip address 192.168.0.6/24

のように、IOSサブネットマスク記述ではなく、CIDR記述だったりする。
エラーがでてなんで〜?とか思ってた。

ルーティングプロトコル設定

ルーティングプロトコルを設定する場合は、先ほども書いたように、ルーティングプロトコルのデーモンへtelnetする。



こんな風に、localhost:2064へtelnetかけると、OSPFの設定ができる。プロンプトが「ospf」になってるし。
設定自体は、IOSと大きく変わらない。
router ospfの後にプロセスIDがいらなかったり。
networkコマンドでもワイルドカードマスクではなく、CIDRだったりするけどね。

あと、注意点。
showコマンドのうち、ルーティングプロトコルを見たい場合(sh ip ospf databaseとか)はやはりospfdにつなげてないと見れない。
逆に、sh ip routeはZebraにつなげてないと見えない。ちと不便。


さて、じゃあ実際に、他のルータとOSPFでルーティング情報交換してみよう。

[10.0.0.0]---Cisco2621---[172.16.1.0]---Cisco2621---[192.168.0.0]---BBルータ
                                                           |  
                                                     Debian/Quagga   

こんな感じで繋がってます。もちろんBBルータは莫迦なのでOSPFなんか使えるわきゃない。

さて、Cisco2621にもOSPF設定して、Quaggaでsh ip routeしてみると。



こうなります。
ん〜、なんかメトリックが変な感じするけど、ちゃんとルーティングテーブルできてます。
ちなみにKのデフォルトルートは、Debianデフォルトゲートウェイがそのままテーブルになってるということかな。


Debian側のrouteコマンドにもちゃんと反映されますし、pingも通ります。



あ、Quaggaにはpingがありませんので注意。

その他設定


ちゃんと使用する場合には、VTYログインもenableもパスワードいりますけど。
実験・検証用ならあるとウザイ。
特に、Zebra、ospfdのように2つのデーモンにtelnetを何度もかけるとなるとね。
でも、VTYパスワードがないとログインできないので、これだけはどうしようもならないけど。
enable passwordはなくてもOKなので、直接zebra.confをいじって、Quaggaを再起動するとena passなしでもいける。

あと、デーモンごとにcopy run start(write memory、wrでもよい)をやらないと設定が保存できません。


結構面白いです、Quagga。
Debianにこれだけいれると400M程度ですむし、メモリもそれほど使用しない(64Mでさくさく動く)ので、3〜5つぐらい仮想でインストールできそうな気がする。
そうなると、いろいろ実験できるなぁ。
IPv6ルータとしても使えるし、なかなかいじりがいがある。


Quaggaで実験はまたやります。