VyOS の route-map は、経路をどのルーティングプロトコルへ渡すか、どの経路だけ許可するか、属性をどう変更するかを表すポリシーです。static route や connected route を OSPF へ再配送するときに route-map を挟むと、意図しない経路の広報を防ぎやすくなります。
この記事では VyOS 1.5 を前提に、prefix-list で経路を選び、route-map で permit / deny と属性変更を行い、OSPF / OSPFv3 の再配送へ適用する流れを確認します。アドレスは公開用の例です。
書籍
経路選択、再配送、ルーティングプロトコル、ネットワーク設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
この記事の結論
- prefix-list は対象となるプレフィックスを定義する
- route-map は番号順に評価され、permit で許可、deny で拒否する
- どの rule にも一致しない経路は暗黙に deny される
geとleを使う場合は、含めるプレフィックス長を明示する- route-map を作っただけでは動作せず、OSPF 再配送や BGP neighbor などへ適用する必要がある
- PBR の
policy routeはパケットの転送先を変える機能であり、route-map とは役割が違う
経路ポリシーを 3 つの段階に分ける
経路選別では、対象の定義、判定と属性変更、適用先を分けて確認します。どれか 1 つだけ設定しても、期待した広報にはなりません。
| 段階 | 設定 | 役割 |
|---|---|---|
| 対象 | prefix-list / prefix-list6 | 許可または拒否するプレフィックスを定義する |
| 判定 | route-map | 条件、permit / deny、metric や tag を定義する |
| 適用 | OSPF / OSPFv3 / BGP など | どの入出力や再配送で route-map を使うか決める |
完全一致する prefix-list を作る
特定の static route だけを再配送する場合は、対象プレフィックスを完全一致で列挙します。prefix-list に一致しない経路は許可されません。
configure
set policy prefix-list PUBLISH-STATIC-V4 description 'Static routes exported to OSPF'
set policy prefix-list PUBLISH-STATIC-V4 rule 10 action 'permit'
set policy prefix-list PUBLISH-STATIC-V4 rule 10 prefix '10.10.10.0/24'
set policy prefix-list PUBLISH-STATIC-V4 rule 20 action 'permit'
set policy prefix-list PUBLISH-STATIC-V4 rule 20 prefix '10.10.20.0/24'
commit
savege と le で範囲を指定する
集約範囲の配下にある複数の経路を対象にする場合は、ge と le でプレフィックス長を限定します。次の例は、10.20.0.0/16 配下の /24 から /28 だけを許可します。/16 自体や /29 より細かい経路は一致しません。
configure
set policy prefix-list PUBLISH-SUBNETS-V4 rule 10 action 'permit'
set policy prefix-list PUBLISH-SUBNETS-V4 rule 10 prefix '10.20.0.0/16'
set policy prefix-list PUBLISH-SUBNETS-V4 rule 10 ge '24'
set policy prefix-list PUBLISH-SUBNETS-V4 rule 10 le '28'
commit
save範囲指定は便利ですが、意図より広い経路を許可しやすい設定でもあります。集約プレフィックス、最小長、最大長をセットで確認します。
route-map で許可と属性を定義する
prefix-list を route-map から参照し、許可した経路へ OSPF external metric、metric type、tag を設定します。rule は番号順に評価され、最初に一致した処理で結果が決まります。
configure
set policy route-map OSPF-STATIC rule 10 action 'permit'
set policy route-map OSPF-STATIC rule 10 match ip address prefix-list 'PUBLISH-STATIC-V4'
set policy route-map OSPF-STATIC rule 10 set metric '20'
set policy route-map OSPF-STATIC rule 10 set metric-type 'type-1'
set policy route-map OSPF-STATIC rule 10 set tag '3000'
commit
saveこの route-map では、prefix-list に一致しない経路は暗黙に deny されます。最後に match 条件のない permit rule を追加すると残りの全経路を許可するため、フィルタ目的では安易に追加しません。
OSPF 再配送へ適用する
route-map は作成しただけでは使われません。static route の再配送設定から route-map 名を参照します。
configure
set protocols ospf redistribute static route-map 'OSPF-STATIC'
commit
save再配送元に static を指定した場合、RIB に存在する static route が候補になります。prefix-list と route-map を通過した経路だけが OSPF external route として広報されます。
IPv6 を OSPFv3 へ再配送する
IPv6 では prefix-list6 と match ipv6 address prefix-list を使います。IPv4 と IPv6 は同じ意図でも別のポリシーとして記述します。
configure
set policy prefix-list6 PUBLISH-STATIC-V6 rule 10 action 'permit'
set policy prefix-list6 PUBLISH-STATIC-V6 rule 10 prefix '2001:db8:10::/64'
set policy route-map OSPFV3-STATIC rule 10 action 'permit'
set policy route-map OSPFV3-STATIC rule 10 match ipv6 address prefix-list 'PUBLISH-STATIC-V6'
set policy route-map OSPFV3-STATIC rule 10 set metric '20'
set policy route-map OSPFV3-STATIC rule 10 set metric-type 'type-1'
set protocols ospfv3 redistribute static route-map 'OSPFV3-STATIC'
commit
saveroute-map と PBR を区別する
| 機能 | 対象 | 主な用途 |
|---|---|---|
| route-map | 経路情報 | 再配送、BGP 入出力、属性変更 |
| prefix-list | プレフィックス | route-map などで使う一致条件 |
| policy route / PBR | 転送されるパケット | 送信元や宛先に応じた経路表選択 |
| Firewall | パケット | 通信の許可または拒否 |
route-map と PBR は名前に route が含まれますが、操作対象が違います。経路広告を制御したいのか、実際のパケット転送を変えたいのかを先に決めます。
設定と広報結果を確認する
設定の存在だけでなく、route-map の一致状況、OSPF への再配送、隣接ルーターで学習した経路まで確認します。
show configuration commands | match 'prefix-list'
show configuration commands | match 'route-map'
show route-map OSPF-STATIC
show ip ospf redistribute
show ip route ospf
show ip ospf database external
show ipv6 ospfv3 redistribute
show ipv6 route ospfv3経路が広報されない場合の切り分け
| 症状 | 確認する場所 | 判断 |
|---|---|---|
| static route が候補にならない | show ip route | 再配送前に RIB へ存在するか確認する |
| 特定経路だけ広報されない | prefix-list の prefix / ge / le | 一致範囲を確認する |
| すべての経路が止まる | route-map の暗黙 deny | permit rule に一致しているか確認する |
| route-map が使われない | protocol 側の適用設定 | 再配送から route-map 名を参照しているか確認する |
| metric や tag が付かない | set 行と一致カウンター | 別 rule に先に一致していないか確認する |
| IPv6 だけ広報されない | prefix-list6 / OSPFv3 | IPv4 用設定と混同していないか確認する |
まとめ
VyOS の route-map は、prefix-list で対象経路を定義し、permit / deny と属性変更を記述し、OSPF や BGP などの適用先から参照して初めて動作します。未一致が暗黙に deny される点は、経路漏れを防ぐ一方で、必要な経路まで止める原因にもなります。
経路ポリシーを変更するときは、設定行だけでなく、RIB、route-map の一致、再配送状態、隣接ルーターの学習結果まで確認します。

