ルートフィルタ設定(フィルタの作成)
ルートフィルタ設定の流れ
ルートフィルタを設定するには、いくつかのアプローチがあります。
ルートフィルタを設定するには、以下の2つの手順を踏んで設定していくようになります。
1.フィルタするルートの作成する
フィルタを作成する方法は、以下の3つあります。
・標準アクセスリスト(ディストリビュートリスト)
・プレフィックスリスト
・ルートマップ
どの方法でフィルタを作成するのかは、フィルタしたいルートの指定の仕方や、フィルタを動作させるタイミングによって変わってきます。
ルートの指定
| フィルタルートの指定 | ルートの指定に使用するもの | 
| ネットワークアドレスのみ | 標準アクセスリスト、ルートマップ | 
| ネットワークアドレスとサブネットマスク | プレフィックスリスト、ルートマップ | 
2.フィルタを適用するタイミングを指定する
- インターフェイスの送受信時
- ルート再配送時
※BGPルーティングにおいてネイバーへの送受信時に行います。
ここでは、「インターフェイスの送受信時」「ルート再配送時」を中心に話を進めていきます。
ルートフィルタの設定は、まず、どのルートを流すのか止めるのか、フィルタを作成します。そして、作成したフィルタを適用させる流れになります。ルートフィルタの作成方法は、アクセスリストを作って適用させるのに似ています。
フィルタするルートの作成
フィルタするルートを作成するには、以下の3つの方法があります。
- 標準アクセスリスト
- プレフィックスリスト
- ルートマップ
標準アクセスリスト
標準アクセスリストでフィルタを作成する場合は、注意が必要です。標準アクセスリストでは、本来、送信元アドレスを指定することになりますが、パケットフィルタ時に関しては、意味が変わってきます。
標準アクセスリストの構文は、以下のようになります。
Router(config)#access-list [ACL-number] {permit | deny} [source-address] [wildcard]
ルートフィルタとして利用する場合、「source-address 」は、送信元アドレスという意味ではなく、宛先ネットワークとしての意味に変わります。
例えば、ルートフィルタとして以下のように定義した場合
Router(config)#access-list 1 permit 1 172.16.0.0 0.0.255.255
「172.16.0.0 0/16」のルートを許可するという意味になります。
ここでも、注意が必要です。
一見、この定義は「172.16.0.0/16」のルートだけを許可しているように見えますが、「172.16.1.0/24」、「172.16.2.0/24」、「172.16.3.0/24」・・・も許可するのです。
つまり、「172.16.*.*」先頭から16ビットが一致する全てのルートを許可する意味になるのです。
フィルタを詳細に作成したい場合は、サブネットマスクを指定できるプレフィックスリストを使用する必要があります。
プレフィックスリスト
プレフィックスリストは、ネットワークアドレスと、サブネットマスク指定して、細かなフィルタ設定を行うことができます。
プレフィクスリストの構文は以下のようになります。
Router(config)#ip prefix-list [list-name] [seq num] {permit | deny} [address/length] [ge ge-length] [le le-length]
seq num : 順番示すシーケンス番号
address / length : ネットワークアドレスをlengthで指定する長さまで一致しているかどうかをチェックします。
[ge ge-length] [le le-length] : サブネットマスクの範囲を指定する。
 ge ・・・ 以上
 le ・・・ 以下
※ge、leが省略されている時は、「ネットワークアドレス/サブネットマスク」の意味で解釈されます。
アクセスリストと同様に、プレフィクスリストの最後にも暗黙のdenyが存在するので注意が必要です。
例えば、以下のプレフィックスリストの意味は
Router(config)#ip prefix-list FILTER permit 192.168.1.0/26
ge、leを省略しているので、「192.168.1.0/26」のルート情報のみを許可する意味になります。ge、leを指定して、マスクの範囲を指定することもできます。
ルートマップ
ルートマップは、異なるルーティングプロトコル間でルートごとにシードメトリック値を指定して、ルーティングを制御したい場合に使用しまが、ルートをフィルターする際にも利用できます。
ルートマップは、ルートごとにフィルタだけでなく、追加の設定も行いたい場合に利用します。
ルートマップ(route map)の構文
Router(config)#route-map [map-tag] {permit | deny} [sequence-number]
Router(config-route-map)#match [condition]
Router(config-route-map)#set [action]map-tag ルートマップの名前 {permit | deny} 許可|拒否の指定します。省略した場合は、デフォルトで「permit」が指定されます。 sequence-number ルートマップ名が同じ場合に使用するシーケンス番号。コマンドを省略するとデフォルトで、「10」になる。シーケンス番号は、小さい数から順番に処理される。 condition  条件を指定。全ての条件を満さないとアクションを起こしません。 action 条件が合致した場合のアクションの指定します。 
matchの条件(condition)には、標準アクセスリスト、拡張アクセスリスト、プレフィクスリストを関連付けることができます。条件を省略すると「全て」と解釈されます。
標準アクセスリスト、拡張アクセスリストを関連付けるには
Router(config-route-map)#match ip address [ACL]
で設定を行います。
プレフィックスリストを関連付けるには
Router(config-route-map)#match ip address prefix [prefix-list-name]
で設定を行います。
ルートマップの作成方法を図で表すと以下のようになります。

ルートマップの最後には、アクセスリストと同様に暗黙の「deny」があるので注意して下さい。どれにも一致しない場合は、再配送されなくなります。
ルートマップは複雑な設定が必要な場合に使用します。単純なルートフィルタリングを行う場合は、標準アクセスリストやプリフィクスリストで十分です。
2番目のフェーズの
- フィルタするルートの作成する
- フィルタを適用するタイミングを指定する
「2.フィルタを適用するタイミングを指定する」は、次の「ルートフィルタ設定(フィルタの適用)」で紹介します。
