IPv6ルーティングの基本
IPv6におけるルーティングは、IPv4と同様に スタティックルート と ダイナミックルーティングプロトコル の2種類に分けられます。
- スタティックルート … 管理者が手動で宛先ネットワークとネクストホップを設定
- ダイナミックルーティング … ルータ同士が自動的に経路情報を交換
IPv6で利用される代表的なダイナミックルーティングプロトコルは以下の通りです。
- RIPng(RIP next generation)
- OSPFv3
- IS-IS for IPv6
- EIGRP for IPv6
- MP-BGP4
ここでは、代表的な入門レベルのプロトコルである RIPng について解説します。
RIPngとは
RIPng(RIP next generation)は、IPv6に対応したRIPです。主な特徴を整理すると次の通りです。
| 項目 | 説明 |
|---|---|
| 最大ホップ数 | 15ホップまで(16は到達不能) |
| 通信ポート | UDP 521を使用(IPv4のRIPはUDP 520) |
| 経路情報 | IPv6プレフィックスを交換、ネクストホップはリンクローカルアドレス |
| アップデート送信先 | マルチキャストアドレス FF02::9 |
| アップデート周期 | デフォルトで30秒ごと |
試験で狙われやすいポイントは「UDP 521」「FF02::9宛に送信」「最大ホップ数15」です。
RIPngの基本設定
1. IPv6ルーティングの有効化
まず、ルータでIPv6パケットを転送できるようにします。
(config)# ipv6 unicast-routing
2. RIPngプロセスの起動
RIPngプロセスを開始します。プロセス識別のために tag を指定します。
(config)# ipv6 router rip <tag>
tag… 識別名。数値や文字列を指定でき、OSPFのプロセスIDに相当。- 隣接ルータと同じtagを指定する必要はありません。
例:
(config)# ipv6 router rip P1
3. RIPngを有効にするインターフェースの指定
RIPngではIPv4のような network コマンドはなく、インターフェースごとに有効化します。
(config-if)# ipv6 rip <tag> enable
例:
(config)# interface g0/0
(config-if)# ipv6 rip P1 enable
4. 動作確認
show ipv6 rip… RIPngの稼働状況を確認show ipv6 route… 受信した経路の確認debug ipv6 rip… パケットのやりとりをリアルタイムで確認
RIPngのオプション設定
equal-cost経路数の調整
RIPngはデフォルトで最大4つの等コスト経路をルーティングテーブルに載せます。これを変更するには次のコマンドを使います。
(config-rtr)# maximum-paths <数値>
例:最大6経路に拡張
(config)# ipv6 router rip RIPng
(config-rtr)# maximum-paths 6
デフォルトルートのアドバタイズ
RIPngでデフォルトルートを配布するには default-information originate を使います。
(config-if)# ipv6 rip <tag> default-information originate
originate… デフォルトルートを追加して配布onlyを付けると、デフォルトルートのみを通知
例:Gi0/0からデフォルトルートと通常の経路を広告
(config)# interface g0/0
(config-if)# ipv6 rip RIPng default-information originate
再配布(redistribute)
他のルーティングプロトコルやスタティックルートをRIPngに再配布するには以下のように設定します。
(config-rtr)# redistribute <protocol>
例:スタティックルートを再配布
(config)# ipv6 router rip RIPng
(config-rtr)# redistribute static
※ 再配布時のデフォルトメトリックは以下の通り
- connected = 1
- static = 1
- RIPngの他プロセス = 1
- それ以外のルーティングプロトコル = 16(到達不能)
経路フィルタリング(distribute-list)
受信する経路や送信する経路を制御できます。
例:Gi0/1で 2001:DB8::/16 の経路のみ受信
(config)# ipv6 prefix-list PRE01 permit 2001:DB8::/16
(config)# ipv6 prefix-list PRE01 deny ::/0
(config)# ipv6 router rip process1
(config-rtr-rip)# distribute-list prefix-list PRE01 in Gigabitethernet0/1
RIPngの検証
RIPngを設定した後は、各種 showコマンド を用いて正しく動作しているか確認します。IPv6ルーティングはIPv4と並行して動作するため、IPv4とは別のコマンド体系を意識して覚えておくことが重要です。試験でも「どのコマンドで確認できるか」が問われやすい部分です。
show ipv6 interface brief
各インターフェースに設定されているIPv6アドレスやステータスを一覧表示します。IPv4での show ip interface brief に相当するコマンドです。
R1# show ipv6 interface brief
- 割り当てられたグローバルユニキャストアドレス
- リンクローカルアドレス(自動生成される)
- インターフェースの状態(up/down)
を確認することができます。RIPngの通信ができない場合、まずはインターフェースに正しくIPv6アドレスが設定されているかを確認します。
show ipv6 protocols
ルータで有効になっているIPv6のルーティングプロトコルをまとめて確認できます。
R1# show ipv6 protocols
- 有効なプロセス(RIPng, OSPFv3 など)
- どのインターフェースで動作しているか
- 再配布の有無
を確認できます。IPv6ルーティングプロトコルの全体像を把握するのに便利なコマンドです。
show ipv6 rip
RIPngに関する詳細情報を表示します。
R1# show ipv6 rip
ここでは次の内容を確認できます。
- RIPngのタグ名、使用ポート番号(UDP 521)、送信先マルチキャストアドレス(FF02::9)、内部プロセス番号
- AD値(Administrative Distance) と最大ホップ数(理論値は16、実際の最大到達は15ホップ)
- タイマー情報(更新タイマー、無効タイマーなど)
- RIPng有効インターフェース一覧
特に「どのインターフェースでRIPngが有効になっているか」をここで確認できるため、設定漏れやインターフェースダウンの切り分けに役立ちます。
show ipv6 route
IPv6ルーティングテーブルを表示します。IPv4では show ip route を使いますが、IPv6では必ず show ipv6 route を使います。
R1# show ipv6 route
ここでは以下の情報を確認できます。
- 直接接続(C: connected)
- ローカルアドレス(L: local)
- RIPngから学習した経路(R: RIP)
学習できているはずの経路が表示されない場合は、RIPng設定や隣接関係の問題を疑います。
RIPngの検証では、
- インターフェースに正しいIPv6アドレスがあるか →
show ipv6 interface brief - RIPngプロセスが有効か →
show ipv6 protocols - RIPngがインターフェースで稼働しているか →
show ipv6 rip - ルーティングテーブルに経路が学習されているか →
show ipv6 route
という流れで確認すると効率的です。試験では、この流れを頭に入れておくとトラブルシューティング問題に強くなります。
OSPFv3とは
OSPFv3は、OSPFv2をIPv6に対応させたルーティングプロトコルで、RFC 5340で定義されています。OSPFv2と同じくリンクステート型プロトコルであり、Helloパケットでネイバーを検出し、LSA(Link State Advertisement)の交換によってLSDBを構築、そこからSPFアルゴリズムを用いてルーティングテーブルを生成します。
OSPFv2とほぼ同じ仕組みを持ちますが、IPv6に対応するためにいくつかの違いがあります。
OSPFv2との違い
| 項目 | 説明 |
|---|---|
| 新しいLSAタイプ | Link LSA (Type 8)、Intra-Area Prefix LSA (Type 9) が追加 |
| マルチキャストアドレス | FF02::5(全OSPFルータ宛)、FF02::6(DR/BDR宛) |
| IPv6ヘッダのネクストヘッダ | プロトコル番号 89 |
| 隣接関係のアドレス | ネイバー検出やネクストホップにリンクローカルアドレスを使用 |
| 認証 | OSPFv3自体には認証機能なし。代わりにIPsecで認証や暗号化を実現可能 |
| 有効化の単位 | ネットワーク単位ではなくリンク単位(インターフェースごと)で有効化 |
試験に狙われやすいポイントは「リンクローカルアドレスを使用する」「マルチキャストアドレスの違い」「IPsec認証対応」です。
OSPFv3の設定手順
1. IPv6ルーティングを有効化
まずルータでIPv6を有効にします。
(config)# ipv6 unicast-routing
2. OSPFv3プロセスの作成
OSPFv3のプロセスを起動します。
(config)# ipv6 router ospf <process-id>
<process-id>:1~65535の範囲で指定可能- 隣接ルータ間で一致させる必要はなく、あくまでローカル識別用
例:
(config)# ipv6 router ospf 1
3. ルータIDの設定
OSPFv3でもルータIDは 32ビットの数値(IPv4形式) を使います。
(config-rtr)# router-id <x.x.x.x>
- IPv4アドレスが割り当て済みならその値が自動選択される
- IPv4アドレスが存在しない場合は必ず
router-idコマンドで明示設定
例:
(config-rtr)# router-id 1.1.1.1
4. インターフェースでOSPFv3を有効化
インターフェース単位でOSPFv3を有効化し、所属エリアを指定します。
(config-if)# ipv6 ospf <process-id> area <area-id>
例:GigabitEthernet0/0をエリア0に所属させる場合
(config)# interface g0/0
(config-if)# ipv6 ospf 1 area 0
これでOSPFv3が有効になり、隣接ルータとネイバー関係を確立できます。
OSPFv3の確認コマンド
OSPFv3が正しく動作しているかを確認するために、以下のコマンドを利用します。
| コマンド | 説明 |
|---|---|
show ipv6 protocols | 有効なルーティングプロトコルと適用インターフェースを表示 |
show ipv6 ospf neighbors | OSPFv3で確立したネイバー情報を表示 |
show ipv6 ospf database | OSPFv3のLSDB(リンクステートデータベース)を表示 |
show ipv6 route ospf | OSPFv3から学習したルートを表示 |
show ipv6 ospf interface | OSPFv3が有効なインターフェースの情報(エリア、コスト、タイマー、隣接状況など)を表示 |
試験の狙われポイントは、「IPv4のOSPFコマンドではなく、IPv6専用の show ipv6 ospf ~ コマンドを使う」点です。
OSPFv3は、仕組み自体はOSPFv2とほぼ同じですが、リンク単位での有効化 や リンクローカルアドレスの利用 など、IPv6特有の違いを押さえておくことが大切です。
OSPFv3の設定(発展)
OSPFv3は基本的な設定に加えて、運用環境やネットワーク構成に応じた追加設定を行うことができます。ここでは試験でも問われやすい equal-costマルチパス(ECMP)の制御、ルート集約、NBMA環境でのネイバー定義、ネットワークタイプ変更 などについて整理します。
equal-cost経路数の制御(maximum-paths)
OSPFv3のルーティングテーブルには、同じコストの経路をデフォルトで最大 16パス 登録することができます。このような経路はequal-costマルチパス(ECMP)として負荷分散に利用されます。
最大値を変更するには次のコマンドを使用します。
(config-rtr)# maximum-paths <数値>
例:同時に使用できる経路を2本に制限する
(config)# ipv6 router ospf 1
(config-rtr)# maximum-paths 2
エリア内ルート集約(area range)
OSPFv3では、エリア内で細かいプレフィックスをひとまとめにして上位エリアへ広告することができます。これを「ルート集約」と呼びます。OSPFv2同様、集約はルータプロセス側で設定します。
(config-rtr)# area <area-id> range <prefix> [ cost <value> ]
例:2001:1:1:0001::/64 ~ 2001:1:1:FFFF::/64 をエリア10で集約して 2001:1:1::/48 として広告
(config)# ipv6 router ospf 1
(config-rtr)# area 10 range 2001:1:1::/48
補足:集約ルートはLSA Type 3(OSPFv2)に相当し、OSPFv3では「Inter-Area Prefix LSA」として通知されます。
NBMA環境でのネイバー設定
OSPFv3はOSPFv2と同じく、NBMA(Non-Broadcast Multi-Access)ネットワーク上で自動的にネイバーを検出できません。そのため、手動でネイバーを指定する必要があります。
(config-if)# ipv6 ospf neighbor <ipv6-address> [ priority <number> ] [ cost <value> ] [ database-filter all out ]
- priority:DR/BDR選出時の優先度
- cost:その隣接ルータへのリンクコスト
- database-filter all out:LSDBを同期しない(制御用)
OSPFv2ではルータプロセス上で設定していましたが、OSPFv3では インターフェースモードで設定 する点が違いです。
NBMA環境でのネットワークタイプ変更
OSPFv3では、インターフェースごとにOSPFネットワークタイプを変更できます。これはOSPFv2と同様です。
(config-if)# ipv6 ospf network { broadcast | non-broadcast | point-to-point | point-to-multipoint [ non-broadcast ] }
- broadcast:デフォルト(Ethernetなど)
- non-broadcast:NBMA(Frame Relayなど)、ネイバー手動定義が必要
- point-to-point:直結リンクで使用
- point-to-multipoint:複数接続だがブロードキャスト不可の環境で利用
LSA Typeの比較(OSPFv2 vs OSPFv3)
OSPFv3ではIPv6対応のため、新しいLSAが追加されています。
| OSPFv2 LSA | 名称 | OSPFv3 LSA | 名称 |
|---|---|---|---|
| Type 1 | Router LSA | 0x2001 | Router LSA |
| Type 2 | Network LSA | 0x2002 | Network LSA |
| Type 3 | Network Summary LSA | 0x2003 | Inter-Area Prefix LSA |
| Type 4 | ASBR Summary LSA | 0x2004 | Inter-Area Router LSA |
| Type 5 | AS External LSA | 0x4005 | AS External LSA |
| Type 7 | NSSA External LSA | 0x2007 | NSSA LSA |
| – | – | 0x2008 | Link LSA |
| – | – | 0x2009 | Intra-Area Prefix LSA |
Flooding Scope(OSPFv3 LSAのスコープ)
OSPFv3のLSAには Sビット(スコープ) が定義されており、伝播範囲を制御できます。
00:リンクローカル01:エリア内10:AS全体11:予約
OSPFv3の検証
OSPFv3を設定した後は、正しく動作しているかどうかを showコマンド で確認します。ここでは試験に出やすい代表的な検証コマンドを整理します。IPv4のOSPFと混同しないよう、「IPv6専用コマンド」を覚えることがポイントです。
show ipv6 protocols
R1# show ipv6 protocols
このコマンドでは、ルータに設定されているIPv6ルーティングプロトコルの概要を確認できます。
- 稼働中のOSPFv3プロセスID
- OSPFv3が有効化されているインターフェース
- 再配布設定の有無
などを把握できます。全体の設定状況を一目で確認したいときに便利です。
show ipv6 ospf
R1# show ipv6 ospf
OSPFv3のプロセスごとの詳細情報を確認できます。
- プロセスID
- ルータID(Router ID)
- Hello/Deadインターバル
- 所属エリア
- SPFタイマー
などが表示されます。設定したルータIDが正しく反映されているかをここで確認できます。
show ipv6 ospf interface
R1# show ipv6 ospf interface
インターフェースごとのOSPFv3情報を表示します。
- OSPFv3有効化インターフェースと所属エリア
- コスト値(デフォルトは帯域幅に依存)
- Hello/Deadタイマーの値
- ネイバーの情報(DR/BDR選出状況も確認可)
トラブルシューティング時には「インターフェースでOSPFv3が有効になっているか」「Hello/Deadタイマーが一致しているか」を確認するのが定番です。
show ipv6 ospf neighbor
R1# show ipv6 ospf neighbor
隣接ルータとのネイバー関係を確認するコマンドです。出力の主な項目は以下の通りです。
| 項目 | 説明 |
|---|---|
| Neighbor ID | ネイバーのルータID |
| Pri | ネイバーのインターフェースに設定されたOSPFプライオリティ |
| State | ネイバーの状態(例:FULL/DR、FULL/BDRなど) |
| Dead Time | このネイバーからHelloを受信できなければダウンと判定されるまでの残り時間 |
| Interface ID | ネイバー側のインターフェースID |
| Interface | 自ルータ側で接続しているインターフェース |
ネイバーが正しく確立していれば、FULL 状態になります。試験では「ネイバーがFULLに到達していない原因を問う」問題がよく出るので、Hello/Deadタイマーやエリア設定の不一致に注意しましょう。
OSPFv3の検証コマンドは、
- 全体像の確認 →
show ipv6 protocols - プロセス単位の確認 →
show ipv6 ospf - インターフェースの確認 →
show ipv6 ospf interface - ネイバー関係の確認 →
show ipv6 ospf neighbor
という流れで押さえておくと効率的にトラブルシュートできます。
OSPFv3アドレスファミリとは
従来のOSPFでは
- IPv4 → OSPFv2
- IPv6 → OSPFv3
と分けてプロセスを動かす必要がありました。
しかしOSPFv3アドレスファミリを利用すれば、1つのOSPFv3プロセスでIPv4とIPv6をまとめて扱うことができ、経路情報は共通のリンクステートデータベース(LSDB)に保持されます。デュアルスタック環境の構築を簡素化できる点が大きな特徴です。
この機能はCisco IOS 15.1(3)S / 15.2(1)T以降でサポートされています。
OSPFv3アドレスファミリの設定手順
IPv6ルーティングの有効化
OSPFv3はIPv6を利用して制御パケットをやり取りするため、IPv4のみの環境でも必ず以下を設定します。
(config)# ipv6 unicast-routing
プロセスの起動
OSPFv3のプロセスを作成します。
(config)# router ospfv3 <process-id>
アドレスファミリの指定
1つのプロセスでIPv4とIPv6を個別に有効化できます。
(config-router)# address-family ipv4 unicast
(config-router)# address-family ipv6 unicast
ルータIDの設定
- 全体で共通のルータIDを使用する場合
(config)# router ospfv3 1
(config-router)# router-id 1.1.1.1
- アドレスファミリごとに個別のルータIDを指定する場合
(config-router)# address-family ipv4 unicast
(config-router-af)# router-id 1.1.1.1
インターフェースでの有効化
OSPFv3はnetworkコマンドではなくインターフェースごとに有効化します。
(config-if)# ospfv3 <process-id> <address-family> area <area-id>
例:GigabitEthernet0/0をIPv4・IPv6ともにエリア0に所属させる場合
(config)# interface g0/0
(config-if)# ospfv3 1 ipv4 area 0
(config-if)# ospfv3 1 ipv6 area 0
IPv6アドレスが不要な場合の注意点
IPv4のみを扱う場合でもOSPFv3はIPv6通信を使うため
ipv6 unicast-routingは必須- インターフェースにIPv6アドレスを設定しない場合は
ipv6 enableを設定する必要あり
設定例:
R1の設定
R1(config)# ipv6 unicast-routing
R1(config)# router ospfv3 1
R1(config-router)# router-id 1.1.1.1
R1(config-router)# address-family ipv4 unicast
R1(config-router-af)# exit-address-family
R1(config-router)# address-family ipv6 unicast
R1(config-router-af)# exit-address-family
R1(config)# interface g0/0
R1(config-if)# ip address 10.0.0.1 255.255.255.0
R1(config-if)# ipv6 address 2001:1:1:10::1/64
R1(config-if)# ipv6 address fe80::1 link-local
R1(config-if)# ospfv3 1 ipv4 area 0
R1(config-if)# ospfv3 1 ipv6 area 0
R1(config)# interface g0/1
R1(config-if)# ip address 172.16.1.254 255.255.255.0
R1(config-if)# ipv6 address 2001:1:1:1::1/64
R1(config-if)# ipv6 address fe80::1 link-local
R1(config-if)# ospfv3 1 ipv4 area 1
R1(config-if)# ospfv3 1 ipv6 area 1
R2の設定
R2(config)# ipv6 unicast-routing
R2(config)# router ospfv3 1
R2(config-router)# router-id 2.2.2.2
R2(config-router)# address-family ipv4 unicast
R2(config-router-af)# exit-address-family
R2(config-router)# address-family ipv6 unicast
R2(config-router-af)# exit-address-family
R2(config)# interface g0/0
R2(config-if)# ip address 10.0.0.2 255.255.255.0
R2(config-if)# ipv6 address 2001:1:1:10::2/64
R2(config-if)# ipv6 address fe80::2 link-local
R2(config-if)# ospfv3 1 ipv4 area 0
R2(config-if)# ospfv3 1 ipv6 area 0
R2(config)# interface g0/1
R2(config-if)# ip address 172.16.2.254 255.255.255.0
R2(config-if)# ipv6 address 2001:1:1:2::2/64
R2(config-if)# ipv6 address fe80::2 link-local
R2(config-if)# ospfv3 1 ipv4 area 2
R2(config-if)# ospfv3 1 ipv6 area 2
OSPFv3アドレスファミリの確認コマンド
show ospfv3 neighbor
アドレスファミリごとのネイバー情報を表示show ospfv3 interface brief
OSPFv3が有効化されているインターフェースの一覧を表示show ospfv3 database
OSPFv3のLSDBを表示show ip protocols
IPv4のルーティングプロトコルの情報を確認show ipv6 protocols
IPv6のルーティングプロトコルの情報を確認show ip route
IPv4ルーティングテーブルを確認show ipv6 route
IPv6ルーティングテーブルを確認