Contents
概要
PBR(Policy Based Routing)の設定例です。
PBRの簡単な説明
PBRはある条件によって使用するルーティングテーブルを選択できる機能です。主に使う条件は送信元IPアドレスになりますが、宛先アドレス、送信元/宛先ポート等も使用できます。PBRはルーティング設計を柔軟に行えますが、やたらとPBR(特にポート番号ベース)が使われるネットワークはトラブルシューティングが非常に煩雑になります。基本的には通常のネットワーク設計をし、どうしてもPBRが必要なところに絞って使用するべきです。
前提条件
OS
VyOS 1.4を使用します。
設定
firewall
PBRで使用するオブジェクトを作成しているだけです。
set firewall group network-group nwgrp-dmz network '192.168.188.0/24' set firewall group network-group nwgrp-rfc1918 network '10.0.0.0/8' set firewall group network-group nwgrp-rfc1918 network '172.16.0.0/12' set firewall group network-group nwgrp-rfc1918 network '192.168.0.0/16'
policy
これがPBRの主要な設定となります。本稿ではnwgrp-rfc1918をPBRから除外(main:デフォルトのルーティングテーブルを参照)し、nwgrp-dmzは100のルーティングテーブルを参照しています。除外は必須ではありませんが、デフォルトルートをポリシーで分ける場合はおそらく必要になると思います(設計によりますね)。
set policy route pbr rule 4000 destination group network-group 'nwgrp-rfc1918' set policy route pbr rule 4000 set table 'main' set policy route pbr rule 4010 set table '100' set policy route pbr rule 4010 source group network-group 'nwgrp-dmz'
protocols
前述の100のルーティングテーブルを設定しています。mainのルーティングテーブルのデフォルトルートはpppoe0が設定されていますが、100のルーティングテーブルのデフォルトルートのネクストホップは192.168.177.2です。
set protocols static route 0.0.0.0/0 interface pppoe0 set protocols static table 100 route 0.0.0.0/0 next-hop 192.168.177.2
interfaces
最後に作成したポリシーをインターフェイスに適用すると有効になります。ポリシーは対象インターフェイスのインプットでのみが対象となります。また、ポリシーはインターフェイスに対して1つですので、名前の付け方は考えましょう。本稿では名前をpbrとしていますが、policyの機能はPBRだけではないので、使用する機能によっては矛盾が発生するからです。
set interfaces ethernet eth1 address '192.168.188.1/24' set interfaces ethernet eth1 policy route 'pbr'
確認
ポリシーの状態確認
PBRの条件にヒットしているかは下記のコマンドで確認しましょう。
$ show policy route
------------------------
Firewall Global Settings
------------------------
Firewall state-policy for all IPv4 and Ipv6 traffic
state action log
----- ------ ---
invalid drop enabled
established accept disabled
related accept disabled
-----------------------------
Rulesets Information
-----------------------------
--------------------------------------------------------------------------------
IPv4 Policy Route "pbr":
Active on (eth4,ROUTE)
rule action proto packets bytes
---- ------ ----- ------- -----
4000 set all 241684434 26303684314
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 /* pbr-4000 */
4010 set all 23677399 5703867985
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 /* pbr-4010 */
10000 drop all 4092488 329486705
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0