VyOS で複数ネットワーク、拠点間接続、トンネル、VRF を扱う場合、static route だけでは経路管理が重くなる場面があります。その場合、OSPF / OSPFv3 を使うことで、IPv4 と IPv6 の経路を動的に広報できます。
ただし、VyOS では IPv4 の OSPF と IPv6 の OSPFv3 は別の設定として扱います。デュアルスタック環境では、OSPF と OSPFv3 を同じ設計思想で分けて書き、area、router-id、interface、再配送、確認コマンドを別々に見る必要があります。
この記事では、VyOS 1.5 系で読むことを前提に、OSPF / OSPFv3 の基本設定、area 設計、再配送、route-map、neighbor と経路確認の手順をまとめます。アドレスは公開用の例です。
書籍
OSPF、経路制御、ルーティングプロトコル、ルーター設計の前提を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
この記事の結論
- IPv4 の OSPF と IPv6 の OSPFv3 は別設定として扱う
- router-id は安定した識別子として明示する
- area は番号ではなくトポロジの意味で決める
- 再配送は route-map と prefix-list で対象を絞る
- 設定後は neighbor、route、database を分けて確認する
OSPF と OSPFv3 の違い
IPv4 の OSPF は network 指定で area に参加させる構成が中心です。一方、OSPFv3 は IPv6 の経路をインターフェイス単位で扱います。IPv4 の area 設定を入れても、IPv6 の経路は広報されません。
| 項目 | OSPF | OSPFv3 |
|---|---|---|
| 対象 | IPv4 経路 | IPv6 経路 |
| 参加方法 | area network | interface area |
| 確認 | show ip ospf | show ipv6 ospfv3 |
| 経路 | show ip route ospf | show ipv6 route ospfv3 |
| 再配送 | IPv4 prefix を扱う | IPv6 prefix を扱う |
router-id を決める
router-id は OSPF 内でルーターを識別する値です。実際にその IPv4 アドレスへ到達できる必要はありませんが、ルーターごとに一意で、変わりにくい値にします。
configure
set protocols ospf parameters router-id '192.0.2.1'
set protocols ospfv3 parameters router-id '192.0.2.1'
set protocols ospf log-adjacency-changes detail
set protocols ospfv3 log-adjacency-changes detail
commit
saveOSPF の基本設定
IPv4 の OSPF では、広報したい IPv4 ネットワークを area に参加させます。バックボーンや拠点間リンク、拠点内ネットワークをどの area に入れるかを先に決めます。
configure
set protocols ospf area 0 network '192.0.2.0/30'
set protocols ospf area 1 network '10.10.0.0/24'
set protocols ospf area 1 network '10.10.10.0/24'
commit
saveOSPFv3 の基本設定
OSPFv3 では、IPv6 の経路を扱うインターフェイスを area に参加させます。トンネル、loopback、拠点内インターフェイスなど、どのインターフェイスで隣接を張るのかを明示します。
configure
set protocols ospfv3 interface tun1000 area '0'
set protocols ospfv3 interface eth1 area '1'
set protocols ospfv3 interface lo area '1'
commit
savearea はトポロジの意味で分ける
OSPF の area は、単に番号を付けるためのものではありません。バックボーン、拠点、トンネル、管理ネットワークなど、ネットワークの構造をどう分けるかを表します。
| area | 用途例 | 考え方 |
|---|---|---|
| area 0 | バックボーン、拠点間接続 | 拠点間の中核として扱う |
| area 1 | 拠点内 LAN | 拠点や役割単位で分ける |
| area 10 | 管理ネットワーク | 管理系経路を分けたい時に使う |
| トンネル | area 0 または拠点 area | 経路設計上の位置づけで決める |
再配送は絞る
static route や connected route を OSPF に再配送する場合は、route-map で対象を絞る方が安全です。意図しない経路を広報すると、障害時に戻すのが難しくなります。
configure
set policy prefix-list ospf-static-v4 rule 10 action 'permit'
set policy prefix-list ospf-static-v4 rule 10 prefix '10.20.0.0/16'
set policy route-map ospf-from-static rule 10 action 'permit'
set policy route-map ospf-from-static rule 10 match ip address prefix-list 'ospf-static-v4'
set protocols ospf redistribute static route-map 'ospf-from-static'
commit
saveconfigure
set policy prefix-list6 ospfv3-static-v6 rule 10 action 'permit'
set policy prefix-list6 ospfv3-static-v6 rule 10 prefix '2001:db8:20::/48'
set policy route-map ospfv3-from-static rule 10 action 'permit'
set policy route-map ospfv3-from-static rule 10 match ipv6 address prefix-list 'ospfv3-static-v6'
set protocols ospfv3 redistribute static route-map 'ospfv3-from-static'
commit
save再配送は便利ですが、経路を増幅する操作でもあります。どの経路を、どのプロトコルへ、どの条件で流すのかを prefix-list と route-map で説明できる状態にします。
確認する
OSPF / OSPFv3 は、設定を入れただけでは完了しません。neighbor が張れているか、経路が入っているか、database に期待した情報があるかを分けて確認します。
show ip ospf neighbor
show ipv6 ospfv3 neighbor
show ip route ospf
show ipv6 route ospfv3
show ip ospf database
show ipv6 ospfv3 database
show configuration commands | match 'protocols ospf'よくあるつまずき
| 症状 | 見る場所 | 考え方 |
|---|---|---|
| IPv4 は流れるが IPv6 が流れない | OSPFv3 interface | OSPF と OSPFv3 は別設定として見る |
| neighbor が張れない | area、MTU、Firewall | 隣接条件と通信許可を確認する |
| 経路が増えすぎる | redistribute / route-map | 再配送対象を prefix-list で絞る |
| トンネル経由だけ不安定 | tunnel MTU / MSS | OSPF だけでなく下位経路を見る |
| 経路の戻りが意図と違う | route table / cost | 入る経路と戻る経路を両方見る |
まとめ
VyOS の OSPF / OSPFv3 は、IPv4 と IPv6 の動的ルーティングを別々に扱いながら、同じ設計思想でそろえることが重要です。area、router-id、interface、再配送、確認コマンドを分けて見ると、どこで経路が生まれ、どこへ広報されるのかを追いやすくなります。
特に拠点間トンネルや複数セグメントを扱う場合、OSPF は便利ですが、雑に再配送すると経路設計が見えなくなります。route-map と prefix-list を組み合わせ、広報する経路を明示するのが基本です。

