NEC IX で PBR 備忘録です.
設定の基本的な流れ
これは以下の記事がよくまとまっています.
ただし,この記事には「なぜこのように設定するのか」の説明がなく,私には少し分かりにくかったので,以下はその補足となります.
静的ルートと route-map の優先順位
まず気をつけないといけないことは,
route-map の指定は,静的ルートの設定(デフォルトルート含む)よりも前に処理される(優先して処理される)
ことです.
例えば,
- 通常の端末の IPv4 の通信は map-e の Tunnel0.0 に向ける
- 192.168.0.10 の通信のみ PPPoE 接続している GigaEthernet0.1 に向ける
場合は,
! ip route default Tunnel0.0 ip route 172.20.31.0/24 192.168.0.254 ! ip access-list client permit ip src 192.168.0.10/32 dest any ! route-map pppoesw permit 99 match ip address access-list client set default interface GigaEthernet0.1 ! interface GigaEthernet2.0 ip address 192.168.0.1/24 ip policy route-map pppoesw !
のような設定で実現できます.
ただし,上の設定例の中の,ip route 172.20.31.0/24 192.168.0.254 という静的ルートの指定は,端末 192.168.0.10 に対しては無効となります(もちろん 192.168.0.10 以外の端末なら有効です).これは,route-map の設定が静的ルート設定よりも優先されるからです.
では,端末 192.168.0.10 に対して route-map の設定と ip route 172.20.31.0/24 192.168.0.254 のような静的ルートの指定を両立させるにはどのようにすれば良いのでしょうか?
route-map と静的ルートの両立
その答えは,
静的ルートと同じ設定を route-map でも行う
ことです.つまり,次のように設定します.
! ip route default Tunnel0.0 ip route 172.20.31.0/24 192.168.0.254 ! ip access-list client permit ip src 192.168.0.10/32 dest any ip access-list server permit ip src 192.168.0.10/32 dest 172.20.31.0/24 ! route-map pppoesw permit 98 match ip address access-list server set ip next-hop 192.168.0.254 ! route-map pppoesw permit 99 match ip address access-list client set default interface GigaEthernet0.1 ! interface GigaEthernet2.0 ip address 192.168.0.1/24 ip policy route-map pppoesw !
ただし,注意が2つあります.
注意1
まず1つ目の注意は,インターフェースを設定するとき,route-map の設定は1回しか行えないことです.つまり,
! interface GigaEthernet2.0 ip address 192.168.0.1/24 ip policy route-map pppoesw1 ip policy route-map pppoesw2 !
という設定はできません.実際に設定すると,最後に設定した route-map の設定のみが入ります(ip policy route-map pppoesw1 と設定後に,ip policy route-map pppoesw2 と設定すると,ip policy route-map ppoesw1 が上書きされてしまう).複数のポリシーのルートを同一インターフェースで設定したい場合は,同一ポリシー名で,ポリシールートをひとつひとつ優先度を考慮に入れながら設定していかなければなりません.
注意2
2つ目の注意は,静的ルートの設定は削除しない方が良いときもある,ということです.
上の設定例だと,ip route 172.20.31.0/24 192.168.0.254 は削除しても,route-map pppoesw permit 98 の設定があるので,
- 192.168.0.10/24 から172.20.32.0/24 宛の通信は 192.168.0.254 に向ける
- 192.168.0.10 のデフォルトルートは GigaEthernet0.1 とする
- 192.168.0.10 のデフォルトルートは Tunnel0.0 とする
で,一見,目的は達成できているように見えます.しかし,実際には,172.20.32.0/24 (このネットワークは 192.168.0.254 経由で 192.168.0.0/24 と接続されていることに注意)から 192.168.0.1 への通信はうまく行きません.
これは,route-map が外からルーターのインターフェースに着信する通信にのみ適用されるからです.これを避けるには,ルーター自身が発生させるパケットに対してきちんとルートが設定されていなければならない訳ですから,
ip route 172.20.31.0/24 192.168.0.254 の設定を削除せずそのままにしておく
と良いということになります.
なお,ルーター自身が発生させるパケットに対して route-map を有効化するために,専用の設定,
! ip local policy route-map pppoesw !
があります.つまり,ip route 172.20.31.0/24 192.168.0.254 を削除しても,この設定があれば問題は生じません.
以上!