Last-Modified: 2002/10/16 13:00
IPv6の経路制御の設定(RIPng)
他のネットワークとの境界にあたるエッジルータでは,ここまでの内容に加えて若干の追加設定が必要になります.
以下では比較的小規模なIPv6ネットワークの経路制御に良く使われるRIPngをとりあげ,追加すべき設定を見て行くことにします.
経路の集約
IPv6ルータでは経路情報を爆発させないため,図2のように,上位のルータに対して自分より下位の経路情報を一つにまとめ,集約した経路のみを通知することが求められます.このため64bit未満のプレフィクス長のアドレスを割り振られサブネットを切って運用する際には,エッジルータでの経路の集約が必須となります.

図2 経路集約の概念
経路の集約などルーティングプロトコル固有の設定は,各プロトコルを担当するモジュールの設定モード内のルータ設定(routing process)モードで行います.RIPngの場合にはtelnet localhost ripngdでripngdモジュールのVTYにアクセスし,閲覧モードから特権モード,設定モードに移行した後,router ripngコマンドでRIPngルータ設定モードに入ります.
集約経路の作成コマンドはaggregate-address 経路を集約したプレフィクス/プレフィクス長です.リスト13では4行目でRIPngルータ設定モードに入り,5行目で2001:268:xxxx::/48の集約経路を作成するよう設定しています.
1: ripngd> enable 2: Password: ******** 3: ripngd# configure terminal 4: ripngd(config)# router ripng 5: ripngd(config-router)# aggregate-address 2001:268:xxxx::/48 6: ripngd(config-router)# write memory 7: ripngd(config-router)# exit
リスト13 ripngdでの集約経路の作成例
経路情報のフィルタリング
動的経路制御は各ルータが流して来る経路情報が正しいものであるという前提のもとに成り立っています.逆に言えば矛盾した経路情報が流れてきても,ルータはそれを正しいものとして扱ってしまうということになります.悪意の有無に関わらず,隣接するルータや必要も無いのにルーティングデーモンが動いてしまっているホストなどからおかしな経路情報が流れ込んで来ると,ネットワーク全体が混乱することになりかねません.また,自身の設定ミスが原因で隣接するネットワークの経路情報までおかしくしてしまう可能性もあります.
このような事態を防ぐため,Zebraでは経路情報のフィルタリングができるようになっています.
RIPngで経路情報をフィルタリングするためには,まずripngdモジュールのターミナル設定モードでリスト14のようにipv6 prefix-list プレフィクス名 [seq シーケンス番号] {permit|deny} プレフィクス/プレフィクス長というコマンドでプレフィクスリストの定義を行います.
ripngd(config)# ipv6 prefix-list OUTGOING seq 10 permit 2001:268:xxxx::/48 ripngd(config)# ipv6 prefix-list OUTGOING seq 20 deny any
リスト14 プレフィクスリストの作成例
ここでは'OUTGOING'という名前で「シーケンス10で2001:268:xxxx:10::/48を許可し,シーケンス20で全てを拒否する」つまり「2001:268:xxxx:10::/48以外全て拒否」という内容のプレフィクスリストを定義しています.シーケンス番号を省略した場合には,そのプレフィクスリスト名の最初の定義がシーケンス5となり,以降10,15…と,5刻みでシーケンス番号が増えていくようになります.
プレフィクスリストの定義を終えたらRIPngルータ設定モードに入りフィルタの設定を行います.フィルタの設定にはリスト15のようにdistribute-list prefix プレフィクスリスト名 {in|out} インターフェースというコマンドを用います.
ripngd(config)# router ripng ripngd(config-router)# distribute-list prefix OUTGOING out sit1 ripngd(config-router)# write memory
リスト15 ルーティング情報のフィルタリング例
ここではリスト14で定義した'OUTGOING'というプレフィクスリストをsit1から出て行く経路情報に適用するように設定します.'OUTGOING'というプレフィクスリストは「2001:268:xxxx:10::/48以外全て拒否」という内容でしたので,リスト15では「sit1からは2001:268:xxxx:10::/48以外の経路情報を流さない」という設定を行っていることになります.
特定のネットワークとの間でのみRIPngでの経路交換を行いたい場合には,リスト16のようにRIPngルータ設定モードでnetwork RIPngで経路を交換するプレフィクスまたはインターフェースと指定します.この例ではsit1に接続されたネットワークとのみRIPngで経路を交換するように設定しています.
ripngd(config-router)# network sit1 ripngd(config-router)# write memory
リスト16 RIPngで経路情報を交換するネットワークの指定例
経路の再配布
RIPng以外のルーティングプロトコルにより取得した経路情報やOSが保持している経路情報をRIPngで再配布するには,RIPngルータ設定モードでredistribute 元のプロトコルと指定します.リスト17ではOSが保持している経路情報,各インターフェースに直結するネットワークの経路情報,静的に定義された経路情報,およびbgpにより得られた経路情報をRIPngで再配布するよう指定しています.
ripngd(config-router)# redistribute kernel ripngd(config-router)# redistribute connected ripngd(config-router)# redistribute static ripngd(config-router)# redistribute bgp ripngd(config-router)# write memory
リスト17 RIPngでの経路の再配布の設定例
LAN内の他のルータの設定の手間を省くためにも,各インターフェースに直結するネットワークの経路情報は常に再配布の対象とした方がよいでしょう.
おわりに
以上,駆け足になってしまいましたが,Zebraの基本設定とIPv6の経路制御についての概要は掴んでいただけたでしょうか.
ZebraをUNIX系OSで動作するNATルータ上で動かすことでIPv4/IPv6デュアルスタックルータを簡単に作成することができ,既存のIPv4ネットワークに手を加えること無くIPv4とIPv6の混在したネットワークが構築可能となります.
本稿では紹介しきれませんでしたが,Zebraには有用な機能がまだまだあります.踊るカメを見てひと通り満足された後は,Zebraを使いこなしてIPv6の広大なアドレス空間を効率良く管理していただければと思います.
参考資料
1) SoftwareDesign 2002年8月号 pp.58-67, 「実践IPルーティング―Zebraを使ってIPv6対応LANを作ろう」より一部加筆の上,転載
