手当たり次第に書くんだ

飽きっぽいのは本能

VyOS static route / prefix-list 設定 – 経路と選別条件を分ける

VyOS で経路制御を確認するときは、到達性を作る static route と、経路を選別する prefix-list を分けて考えます。static route は RIB へ経路を追加する設定ですが、prefix-list は route-map やルーティングプロトコルから参照される一致条件であり、それ自体は経路を作りません。

この記事では VyOS 1.5 を前提に、IPv4 / IPv6 static route、next-hop の到達性、distance による浮動経路、blackhole / reject、RIB / FIB、prefix-list の役割を確認します。アドレスは公開用の例です。

この記事の結論

  • static route は宛先プレフィックスと next-hop または出口を定義する
  • next-hop へ到達できなければ、設定があっても経路が FIB へ入らないことがある
  • distance が小さい経路が優先され、高い distance はバックアップ経路に使える
  • blackhole は黙って破棄し、reject は到達不能を返す
  • prefix-list は経路を作らず、route-map などが参照する選別条件を作る
  • 設定、RIB、FIB、実際の転送結果を分けて確認する

static route と prefix-list の責務

名前が似ていても、static route と prefix-list は別の層を扱います。

設定役割単独で起きること
static route宛先への経路を作る条件を満たせば RIB / FIB へ入る
prefix-listプレフィックスを permit / deny する参照されるまで転送や広報は変わらない
route-map一致条件と属性変更を組み合わせる適用先から参照されるまで動作しない
policy route / PBRパケットごとに経路表を選ぶ通常の経路情報とは別の転送判断を行う

IPv4 static route を設定する

次の例では、10.10.0.0/24 宛ての通信を next-hop 192.0.2.1 へ送ります。next-hop へ到達するための connected route または別の有効な経路が必要です。

configure
set protocols static route 10.10.0.0/24 next-hop '192.0.2.1'
commit
save

設定が存在しても、next-hop が解決できなければ選択経路や FIB へ入らないことがあります。設定行、RIB、next-hop への到達性を分けて確認します。

distance でバックアップ経路を作る

同じ宛先に複数の next-hop を設定し、distance で優先順位を付けられます。値が小さい経路が優先され、primary が利用できなくなったときに高い distance の経路が候補になります。

configure
set protocols static route 10.20.0.0/24 next-hop '192.0.2.1' distance '10'
set protocols static route 10.20.0.0/24 next-hop '198.51.100.1' distance '200'
commit
save

next-hop が IP として応答しないだけでは経路が自動的に消えない構成もあります。障害検知まで必要な場合は、インターフェイス状態、BFD、上位の failover 設計を合わせて検討します。

IPv6 static route を設定する

IPv6 は route6 配下へ設定します。IPv4 と IPv6 の経路は別々に存在するため、デュアルスタックでは片方だけ設定して終わらせません。

configure
set protocols static route6 2001:db8:20::/64 next-hop '2001:db8:1::1'
commit
save

blackhole と reject を使い分ける

blackhole は一致したパケットを黙って破棄します。reject は送信元へ到達不能を返します。集約経路の漏出防止や、より具体的な経路が消えたときのフォールバックとして使えます。

configure
set protocols static route 10.30.0.0/16 blackhole distance '254'
set protocols static route 10.40.0.0/16 reject distance '254'
commit
save

blackhole や reject も static route です。OSPF や BGP へ static route を再配送する場合、意図せず広報対象へ入らないよう、route-map と prefix-list で選別します。

prefix-list で完全一致を定義する

次は、再配送を許可する IPv4 と IPv6 のプレフィックスを定義する例です。prefix-list を作成しても RIB や FIB へ経路は追加されません。

configure
set policy prefix-list PUBLISH-STATIC-V4 rule 10 action 'permit'
set policy prefix-list PUBLISH-STATIC-V4 rule 10 prefix '10.10.0.0/24'
set policy prefix-list6 PUBLISH-STATIC-V6 rule 10 action 'permit'
set policy prefix-list6 PUBLISH-STATIC-V6 rule 10 prefix '2001:db8:20::/64'
commit
save

prefix-list が定義され、どの rule にも一致しない場合は deny として扱われます。配下のより具体的な経路まで含める場合は、gele でプレフィックス長の範囲を明示します。

RIB と FIB を確認する

RIB は設定や動的ルーティングから学習した経路候補を保持し、選択された経路が転送に使われます。経路表示の > は選択経路、* は FIB へ入った経路を示します。

show ip route static
show ip route 10.10.0.0/24
show ipv6 route static
show ipv6 route 2001:db8:20::/64
show configuration commands | match 'protocols static'
show configuration commands | match 'prefix-list'

経路が使われない場合の切り分け

症状確認する場所判断
設定はあるが RIB にないnext-hop 到達性、interface 状態next-hop を解決できるか確認する
RIB に複数経路があるdistance と選択記号最小 distance が選ばれているか確認する
RIB にあるが転送されないFIB 記号、Firewall、neighbor経路選択後の転送要素を確認する
バックアップへ切り替わらないprimary route の生存判定リンク状態や BFD の条件を確認する
blackhole へ吸い込まれるより具体的な経路longest prefix match と経路消失を確認する
prefix-list が効かないroute-map などの適用先prefix-list が参照されているか確認する

まとめ

VyOS の static route は到達性を作り、prefix-list は経路を選ぶ条件を作ります。next-hop、distance、blackhole / reject、IPv4 / IPv6 を目的に応じて設定し、RIB と FIB で実際に選ばれた経路を確認します。

prefix-list は単独では転送を変えません。OSPF 再配送や BGP 制御へ使う場合は、route-map と適用先まで含めて確認します。

関連する記事
VyOS static route / prefix-list 設定 – 経路と選別条件を分ける

コメントを残す

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

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

トップへ戻る