今回から3回にわたり,IPv6でダイナミック・ルーティングを行う例として,GNU Zebra(以下zebra)におけるRIPngの利用方法について説明していきます。まず第1回目の今回は,zebraのインストールとデーモンの起動などについて説明します。RIPngの設定については,次回以降で説明していきます。

 ここでは,FreeBSD 4.5-RELEASEにzebra-0.92aをインストールする例で説明します。ただし,他のOSの上でインストールした場合でも,設定や操作方法に大きな違いはありません。

■zebraとは?

 zebraはTCP/IPのルーティングを行うフリー・ソフトです。FreeBSD,Linux,NetBSD,OpenBSDなど代表的なフリーUNIX上で利用できます。

 サポートしているルーティング・プロトコルは,IPv4用はBGP-4,RIPv1,RIPv2,OSPFv2など,IPv6用はRIPng,BGP4+,OSPFv3などです。一般に利用されているルーティング・プロトコルのほとんどを含んでいるといえます。

 最近では,IPv6対応のルーター専用機も多くなってきましたが,まだ多くのzebraルーターが利用されています。例えば,世界的に見てもかなり大規模なIPv6向けIXである「NSPIXP-6」でも,多くの組織がピアリング用のルーターにzebraを採用しています。

NSPIXP-6のピアリング状況のページ

 紹介してきたように,IPv6の世界では多くの組織がzebraを採用しています。その理由は大きく三つあります。

 まず第一にフリーソフトであるということです。無償で利用できるというメリットがあります。

 第二は,ユーザー・インタフェースが米シスコシステムズのルーター・ソフト「IOS」のそれに似ているという点です。設定ファイルの書式だけでなく,コマンド・インタフェースや表示形式もよく似ているので,Cisco IOSでの運用経験があれば,戸惑わずにzebraでもconfigできます。

 第三は,さまざまな場所での運用実績があるので,安定して動作することです。特にIPv6での運用実績が豊富なので,IPv6のフリーのルーティング・ソフトといえばまずzebraの名前が挙がるほど普及しています。

■インストールしてみよう

 zebraはソースコードで配布されるフリーソフトウエアなので,ソースコードのパッケージをダウンロードし,それをコンパイルすることで利用できます。ダウンロード先としては,ftp.zebra.orgが代表的ですが,他にもいくつかのミラーサイトがあります。また zebraのWebページであるwww.zebra.orgからもダウンロードできます。現在リリースされている一番新しいバージョンはzebra-0.92aですが,cvsなどでさらに新しいソースコードを入手することも可能です。

 インストール作業としては,ソフトをftpなどでダウンロードした上で展開し,

./configure
make
を行ったら,root権限で
make install
を実行します。

 FreeBSDの場合,portsコレクションのnetの下にzebraが含まれていますので,ネットワークに接続された状態なら,root権限で

make install
とタイプするだけでインストール作業は完了です。途中で「Zebra Compile Time Options」の選択がありますが,ここでは特に何も指定しなくても問題はありません。

■関連ファイルおよびディレクトリ

 さて,installが終わりました。zebraパッケージに関係するファイルやディレクトリは以下の通りです。

表1●関連ファイルとその位置
実行ファイル /usr/local/sbin/{ripdripngdospfdospf6dbgpdzebra}
設定ディレクトリ /usr/local/etc
(portsを利用した場合 /usr/local/etc/zebra)
マニュアル /usr/local/man/man8/{ripd.8ripngd.8ospfd.8ospf6d.8bgpd.8zebra.8}
infoファイル /usr/local/info/zebra.info

実行ファイル

表2●デーモンとプロトコル
デーモン プロトコル
bgpd BGP-4, BGP-4+
ripd RIPv1/v2
ripngd RIPng
ospfd OSPFv2
ospf6d OSPFv3
 
図1●各デーモンの関係

 zebraは,各ルーティング・プロトコルごとのデーモン間や, カーネル・ルーティング・テーブルとの間の管理を行うzebraデーモンで構成されます。各ルーティング・デーモンがサポートするプロトコルは表2の通りです。

 zebraデーモンは,各プロトコルのルーティング計算の結果をとりまとめ,カーネルのルーティング・テーブルに渡す役割を担当します。各デーモンの関係は図1の通りです。

 zebraを使って何らかのルーティング・プロトコルを動作させる場合は,まずzebraデーモンを起動し,その次に必要になるルーティング・プロトコル用のデーモンを起動することになります。また,zebraはカーネルのルーティング・テーブルへの書きこみを行うため,スタティック・ルートについてはzebraデーモンで設定することになります。


設定ファイル

 デフォルトの状態では,/usr/local/etc直下が各デーモンの設定ファイルのディレクトリになります(FreeBSDのportsからインストールした場合には/usr/local/etc/zberaがデフォルトの設定ファイルの位置になりますので注意が必要です)。設定ファイル名は,「デーモン名.conf」という形式になります。パッケージのインストール時に「デーモン名.conf.sample」という設定のサンプル・ファイルが,このディレクトリにコピーされています。

マニュアル

 各デーモンごとにmanページが用意されています。ただし,必ずしもすべての機能がmanに書かれているとは限りません。利用できる機能についてはコマンドラインのhelpや後に説明する補完機能,ソースコードを参照するなどして調べます。

infoファイル

 info形式でもzebraについての詳しい説明がありますので参考にして下さい。

■zebraデーモンを起動してみよう

 先程も説明したように,zebraを使ったルーティングを行う際には,まずzebraデーモンを起動し,それから必要なルーティング・プロトコルのデーモンを起動します。デーモンの設定や立ち上げ方法については,どれも同様な方法で行いますので,今回はまずzebraデーモンを例に取り上げ,設定ファイルの準備,デーモンの起動方法について説明していきます。

 デーモンを起動するには,まず設定ファイルを準備する必要があります。zebraの場合は「zebra.conf」 になります。

 ここでは,設定ファイルのディレクトリにある設定例「zebra.conf.sample」を参考に進めていきます。

 まずはzebra.conf.sampleの中身を見てみましょう。

図2●zebra.conf.sampleの内容

 "!"で始まる行はコメントアウトされた行になります。 つまり,このサンプルの設定ファイルで有効なのは,

hostname Router
password zebra
enable password zebra
の3行だけということになります。以下それぞれについて説明します。

hostname <ホスト名>

 hostname はこのシステムの名前を指定するコマンドです。ここで指定した<ホスト名>は,デーモンの仮想端末(vty)にアクセスした場合のコマンド・プロンプトに表示されます。設定しないとシェルで「hostname」とタイプした場合に表示される名前がプロンプトに表示されます。この例では「Router」という名前が設定されています。

password <パスワード>

 デーモンのvtyへアクセスする場合のパスワードを設定するコマンドです。この設定がないとtelnetによるvtyへのアクセスができなくなりますので,必ず設定します。この例では「zebra」というパスワードが設定されています。

enable password <パスワード>

 設定変更やデバックの作業など,より重要なコマンドを実行するenable権限へ移る際のパスワードを設定するコマンドです。このenable passwordの設定がないと,パスワードの入力なしでenable権限に移ることができます。 この例では,passwordの設定と同じ「zebra」に設定されています。

 サンプルファイルの内容が確認できたところで,zebra.conf.sample をデフォルトの設定ファイル名のzebra.confにコピーします。

図3●zebra.confへコピー

 設定フィアルの準備ができましたので,これでようやくzebra を起動することができます。zebraをデーモン・モードで起動するには "-d" オプションが必要です。

図4●デーモン・モードでzebraを起動

 何もエラーなく起動できたでしょうか? ps コマンドなどでzebraデーモンが動作していることを確認しましょう。

 次回は仮想端末(vty)の使い方,設定変更の方法を取り上げます。