概要

ルートマップ(route-map)の設定はなれないと難しく感じます。ルートマップを設定する際のポイントについて詳しく解説します。

関連記事

ルートマップ(route-map)の設定時のポイント

ルートマップを設定するときには、以下の2点について注意してください。

  • <map-tag>のあとの{permit|deny}で処理対象の許可または拒否を決める
  • 暗黙のdeny anyが存在する

ルートマップは、IPパケットやBGPルートなどルーティングプロトコルのルート情報といった処理対象を特定します。そして、特定した対象についてpermitまたはdenyの動作を行います。permitのときに、さらに追加の処理を行うことができます。permitおよびdenyの具体的な内容は、ルートマップの用途によって違ってきます。

以降で、ルートマップの設定をより深く理解するために、ルートマップを利用してBGPルートをフィルタするときに、上記2点のポイントを具体的に解説します。

ルートマップによるBGPルートのフィルタの例

次のネットワーク構成を例に取ります。

図 ルートマップによるBGPルートフィルタの例
図 ルートマップによるBGPルートフィルタの例

R1からR2にアドバタイズするBGPルートのうち192.168.1.0/24のみを拒否する設定を考えます。

ルートマップをBGPルートのフィルタのために利用します。そのため、ルートマップのmatch条件はフィルタするBGPルートを特定するための条件を指定します。そして、<map-tag>のあとのpermit | denyは、特定したルート情報をどのように扱うかを決めます。

permitであれば、BGPルートを許可します。すなわち、outで適用していれば該当のBGPルートをアドバタイズします。inで適用していると該当のBGPルートを受信します。

denyならBGPルートを拒否します。つまり、outで適用していれば該当のBGPルートをアドバタイズしません。inで適用していれば該当のBGPルートを受信しません。

以降の例では、R1でルートマップをネイバーのoutで適用するものとします。また、BGPルートを特定するために、シンプルな標準ACLを利用します。

設定例1

R1からR2にアドバタイズするBGPルートのうち192.168.1.0/24のみを拒否する設定として、以下の設定例1が考えられます。

R1 BGPルートフィルタ 設定例1

route-map FILTER1 deny 10
 match ip address 1
route-map FILTER1 permit 1000
!
access-list 1 permit 192.168.1.0
!
router bgp 1
 neighbor 10.0.0.2 route-map FILTER1 out

シーケンス10の設定

シーケンス10でmatch ip address 1によって標準ACL1を参照しています。標準ACL1でネットワークアドレス「192.168.1.0」がpermitなので、BGPルート「192.168.1.0/24」を特定しています。

そして、特定したBGPルート「192.168.1.0/24」をdenyです。ルートマップ「FILTER2」をR2に対してoutで適用するので、R2にはBGPルート「192.168.1.0/24」をアドバタイズしません。

ルートマップの<map-tag>のあとのdenyが該当のBGPルートをどのように扱うかを決めているというポイントを思い出しましょう。

シーケンス1000の設定

そして、暗黙のdeny anyが最後に追加されることを忘れてはいけません。シーケンス10だけだと、R1からR2へBGPルートはいっさいアドバタイズされなくなってしまいます。暗黙のdeny anyで「192.168.1.0/24」以外のBGPルートもdenyになるからです。

そこで、暗黙のdeny anyを回避するためにシーケンス1000の設定も行います。match条件を省略しているので、すべてのBGPルートが対象です。シーケンス10の「192.168.1.0/24」以外のすべてのBGPルートをpermitします。

図 BGPルートフィルタ 設定例1
図 BGPルートフィルタ 設定例1

設定例2

同じBGPルートのフィルタを以下のように設定することもできます。

R1 BGPルートフィルタ 設定例2

route-map FILTER2 permit 10
 match ip address 2
!
access-list 2 deny 192.168.1.0
access-list 2 permit any
!
router bgp 1
 neighbor 10.0.0.2 route-map FILTER2 out

シーケンス10の設定

シーケンス10でmatch ip address 2によって標準ACL2を参照しています。標準ACL2では、ネットワークアドレス「192.168.1.0」のルートをdenyして、それ以外のネットワークアドレスのルートをpermitします。つまり、シーケンス10では対象となるBGPルートは「192.168.1.0/24」以外です。そして、対象となるBGPルートをpermitします。つまり、R1からR2へ「192.168.1.0/24」以外のBGPルートをアドバタイズします。

暗黙のdeny any

シーケンス10で対象外となった「192.168.1.0/24」のBGPルートは暗黙のdeny anyによってdenyされます。つまり、R1からR2へは「192.168.1.0/24」のBGPルートをアドバタイズしません。

図 BGPルートフィルタ 設定例2
図 BGPルートフィルタ 設定例2

普通は設定例1

さて、R1からR2にアドバタイズするBGPルートのうち192.168.1.0/24のみを拒否する設定として、設定例1と設定例2を考えました。どちらでも結果は同じになりますが、普通は設定例1の設定を行います。ルートをアドバタイズしたくないなら、暗黙のdenyではなく明示的にdenyのシーケンスにしたほうがよいです。

ぜひ、実際に設定を試してみてください。そうすると、ルートマップの設定についてより理解を深められることでしょう。

まとめ

ポイント

  • ルートマップを設定するときには、以下の2点について注意してください。
    • <map-tag>のあとの{permit | deny}で処理対象の許可または拒否を決める
    • 暗黙のdeny anyが存在する

IPルーティング応用