手当たり次第に書くんだ

飽きっぽいのは本能

VyOS route-map 設定 – prefix-list と再配送で経路を選別する

VyOS の route-map は、経路をどのルーティングプロトコルへ渡すか、どの経路だけ許可するか、属性をどう変更するかを表すポリシーです。static route や connected route を OSPF へ再配送するときに route-map を挟むと、意図しない経路の広報を防ぎやすくなります。

この記事では VyOS 1.5 を前提に、prefix-list で経路を選び、route-map で permit / deny と属性変更を行い、OSPF / OSPFv3 の再配送へ適用する流れを確認します。アドレスは公開用の例です。

この記事の結論

  • prefix-list は対象となるプレフィックスを定義する
  • route-map は番号順に評価され、permit で許可、deny で拒否する
  • どの rule にも一致しない経路は暗黙に deny される
  • gele を使う場合は、含めるプレフィックス長を明示する
  • 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
save

ge と le で範囲を指定する

集約範囲の配下にある複数の経路を対象にする場合は、gele でプレフィックス長を限定します。次の例は、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-list6match 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
save

route-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 の暗黙 denypermit rule に一致しているか確認する
route-map が使われないprotocol 側の適用設定再配送から route-map 名を参照しているか確認する
metric や tag が付かないset 行と一致カウンター別 rule に先に一致していないか確認する
IPv6 だけ広報されないprefix-list6 / OSPFv3IPv4 用設定と混同していないか確認する

まとめ

VyOS の route-map は、prefix-list で対象経路を定義し、permit / deny と属性変更を記述し、OSPF や BGP などの適用先から参照して初めて動作します。未一致が暗黙に deny される点は、経路漏れを防ぐ一方で、必要な経路まで止める原因にもなります。

経路ポリシーを変更するときは、設定行だけでなく、RIB、route-map の一致、再配送状態、隣接ルーターの学習結果まで確認します。

関連する記事
VyOS route-map 設定 – prefix-list と再配送で経路を選別する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る