VyOSでのPBR
VyOSでポリシベースルーティング(以降PBRと表記)を設定する際には、Ciscoとは大きく異なる方法を使用します。
Ciscoでは、ルートマップを作成し、そのルートマップ内で条件やネクストホップを指定していました。
それに対してVyOSでは、ポリシルートコマンドで条件となるルールを作成し、ネクストホップをルーティングテーブル内の経路として指定します。
詳しく解説します。
また、当ブログでは最も基本となり、汎用性の高いPBRの設定を紹介します。
VyOSはかなり細かくPBRが設定できるようになっていますので、こちらを応用してより高度なPBRを作成することもできます。
まず、VyOSでPBRを設定する際には、次のコマンドを使用します。
| 説明 | コマンド |
| ポリシーを作成する | set policy route <ポリシ名> |
| ルールを作成し、マッチングルールを指定する | set policy route <ポリシ名> rule <ルール番号> <マッチングルール> |
| マッチングしたトラフィックに対する処理を指定する | set policy route <ポリシ名> rule <ルール番号> set <処理> |
| インタフェースにポリシーを適用する | set policy route <ポリシ名> interface <インタフェース> |
まず、ポリシの作成では、Ciscoのルートマップに近い動作となります。
続いて、ルール番号を指定し、条件を指定します。
主な条件は次の通りです。
| 条件 | 説明 |
| destination address | 特定の宛先IPアドレスを指定する |
| source address | 特定の送信元IPアドレスを指定する。 |
| destination port | 特定の宛先ポート番号を指定する |
| source port | 特定の送信元ポートを指定する。 |
それぞれサブネットマスクの使用や、ハイフンによる区切りなどで複数の値を条件の対象とすることができます。
そして、VyOSの最大のクセが、PBRの処理の指定です。
コマンドとしては、ルールとしてsetを使用して処理を指定します。
ここで、VyOSで最も基礎となる処理を紹介します。
| set policy route <ポリシ名> rule <ルール番号> set table <テーブル番号> |
こちらのテーブルとは、ルーティングテーブルを意味します。
VyOSではルータにスタティックルートを登録する際に、テーブル番号を指定することができます。
そして、特定のルーティングテーブルに登録されている経路を使用して、通常とは異なるルーティングを行う。といった動作となっています。
また、任意のテーブル番号を指定してスタティックルートを登録する際には、次のコマンドを使用します。
| set protocols static table <テーブル番号> route <ネットワーク/プレフィックス> next-hop <ネクストホップ> |
通常のルート登録の際に、staticとrouteの間にtable <テーブル番号> を挿入して任意のテーブルへルートを登録します。
また、PBRで使用する経路である場合、ネクストホップのIPアドレスを指定する必要があり、自身のインタフェースを指定する形でのスタティックルート登録を行っていはいけない点に注意が必要です。
今回紹介する、最も基礎となるPBRに使用するコマンドをここでもう一度まとめます。
| 説明 | コマンド |
| PBRの対象となるトラフィックに使用させたい経路情報を設定する | sset protocols static table <テーブル番号> route <ネットワーク/プレフィックス> next-hop <ネクストホップ> |
| ルールを作成し、PBR対象とする通信の宛先を指定する | set policy route <ポリシ名> rule <ルール番号> <条件> |
| マッチングしたトラフィックが最初に登録した経路情報で転送されるようにする | set policy route <ポリシ名> rule <ルール番号> set table <テーブル番号> |
| インタフェースにポリシーを適用する | set policy route <ポリシ名> interface <インタフェース> |
では、具体的な設定例を紹介します。
例題

では、まず全ルータで必要となるOSPFの設定を紹介し、その後にルータ1で必要となるPBRの設定を紹介します。
OSPFの設定
ルータ1
set interfaces ethernet eth1 address 100.0.0.1/24 set interfaces ethernet eth2 address 200.0.0.1/24 set interfaces ethernet eth3 address 192.168.10.254/24 set protocols ospf interface eth1 area 0 set protocols ospf interface eth2 area 0 set protocols ospf interface eth2 cost 60000 set protocols ospf interface eth3 area 0
ルータ2
set interfaces ethernet eth1 address 100.0.0.2/24 set interfaces ethernet eth2 address 100.0.1.2/24 set protocols ospf interface eth1 area 0 set protocols ospf interface eth2 area 0
ルータ3や4は同様の設定となりますので、省略します。
ルータ1では、優先して使用する経路を指定するために、コストの変更を行っています。
続いて、PBRの設定を行います。
ルータ1(先程の設定への追加)
set protocols static table 10 route 0.0.0.0/0 next-hop 200.0.0.2 set policy route TEST rule 10 destination address 172.16.10.25/32 set policy route TEST rule 10 set table 10 set policy route TEST interface eth3
解説
1つ目のコマンドでPBR時に使用するルートを登録しています。今回はテーブル10を指定しましたが、その他の値でも問題ありません。
2つ目のコマンドでPC2のIPアドレスを指定し、PC2への通信のみがPBRの対象となるように設定しています。
3つ目のコマンドでPBRの処理を指定しています。
先程作成したテーブル10を使用させます。
4つ目のコマンドでインタフェースへの適用を行っています。
Ciscoではインタフェースコンフィギュレーションモードから設定を行ったため、VyOSでもset interface で設定するのかという考えになりますが、正しくはset policyのポリシからの設定をおこなう必要がある点に注意が必要です。
以上となっています。
Cisco以上にVyOSでのPBRは強力なものとなっており、なお設定項目を減らせる点が優れている。
僕はそのように強く感じます。
お疲れ様でした








