目次
プレフィクスリストによるルートフィルタの設定手順
プレフィクスリストでルート情報をフィルタするための設定手順は次の2つです。
- プレフィクスリストでpermitまたはdenyするルート情報を指定する
- プレフィクスリストを適用する
ディストリビュートリストでのルート情報のフィルタを設定する手順とよく似ています。以降で2つの手順について詳しく解説します。
プレフィクスリストでpermitまたはdenyするルート情報を指定する
プレフィクスリストとは、ネットワークアドレスのビットパターンおよびサブネットマスクの範囲によってルートを特定し、特定したルートに対するpermitまたはdenyの動作をまとめたリストです。
プレフィクスリストを設定するには、グローバルコンフィグレーションモードで以下のコマンドを利用します。
プレフィクスリストの設定
(config)#ip prefix-list <list-name> [<seq num>] {permit | deny} <address/length> [ge <ge-length>] [le <le-length>]
<list-name> : プレフィクスリスト名
<seq-num> : シーケンス番号。デフォルトで5単位
<address/length> : ネットワークアドレスのビットパターン
<ge-length> : サブネットマスクの長さ
<le-length> : サブネットマスクの長さ
プレフィクスリストを設定するときには、任意の<list-name>を決めます。内容を反映した名前を決めてください。あまり長くなりすぎないようにしたほうがよいです。
<seq num>で条件の順序を表します。省略すると自動的に5単位で<seq-num>が振られます。<seq-num>を明示的に設定すると、あとから条件を挿入することができます。
特定したルートに対する動作としてpermitまたはdenyのいずれかを決めます。permitはルート情報を許可します。denyはルート情報を拒否します。許可や拒否の動作はプレフィクスリストの適用によって少し意味が異なります。インタフェースに適用した場合は、permitでルートを送受信します。denyならルートを送受信しません。再配送時に適用した場合は、permitでルートを再配送します。denyならルートを再配送しません。
<address/length>でネットワークアドレスがどのようなビットパターンになっているかを決めます。そして、[ge <ge-length>] [le <le-length>]でサブネットマスクの範囲を表しています。これらで対象となるルート情報を特定します。
geはgreater than equalでleはless than equalです。サブネットマスクの長さがどんな範囲になるかを決めます。[ge <ge-length>] [le <le-length>]を省略している場合は、<address/length>でネットワークアドレス/サブネットマスクそのものを表します。
プレフィクスリストの条件と動作の組み合わせを必要な数だけ設定します。複数行のプレフィクスリストは、<seq-num>の順に処理が行われます。
暗黙のdenyに注意
プレフィクスリストでもACLと同様に暗黙のdenyがあります。denyの条件だけしか設定していないと、最終的に暗黙のdenyですべてのルート情報がdenyされてしまいます。プレフィクスリストには、少なくとも1つのpermitの条件が必要です。
プレフィクスリストの例
次の「test」という名前のプレフィクスリストの例を考えます。
(config)#ip prefix-list test seq 5 permit 192.168.1.0/24
(config)#ip prefix-list test seq 10 permit 172.16.0.0/16 ge 25 le 30
seq 5の条件は、geとleが省略されています。すると、「192.168.1.0/24」の部分はネットワークアドレス/サブネットマスクそのもので、192.168.1.0/24のルート情報をpermitするという意味です。
seq 10の条件には、geとleがあります。すると、「172.16.0.0/16」の部分はネットワークアドレスのビットパターンです。「ネットワークアドレスの先頭16ビットが172.16」という意味です。そして、「ge 25 le 30」より、サブネットマスクの範囲が/25~/30です。seq 10の条件でpermitされるルート情報は「172.16.1.128/25」、「172.16.10.32/27」、「172.16.255.192/26」、「172.16.0.0/30」などさまざまあります。
ルート情報の例と「test」のプレフィクスリストによるpermitまたはdenyの動作を以下の表にまとめています。
ルート情報 | 動作 | seq |
---|---|---|
192.168.1.0/24 | permit | 5 |
192.168.1.128/25 | deny | 暗黙 |
172.16.1.128/25 | permit | 10 |
172.16.10.32/27 | permit | 10 |
172.17.0.192/26 | deny | 暗黙 |
プレフィクスリストのpermit any
プレフィクスリストですべてのルート情報をpermitするpermit anyの条件にも注意が必要です。プレフィクスリストのpermit anyの条件は次のように設定します。
(config)#ip prefix-list <list-name> [<seq num>] permit 0.0.0.0/0 le 32
「0.0.0.0/0」はネットワークアドレスの0ビット分を見て「0.0.0.0」ということはすべてのネットワークアドレスを意味します。そして、「le 32」はサブネットマスクが/32以下なので、すべてのサブネットマスクを意味します。注意が必要なのは、以下のように最後の「le 32」を忘れてしまうと、まったく意味が異なってしまうことです。
(config)#ip prefix-list <list-name> [<seq num>] permit 0.0.0.0/0
最後の「le 32」を忘れてしまうと、「デフォルトルート0.0.0.0/0のみpermit」という意味になってしまいます。permit anyの設定について、「192.168.1.0/24だけdenyする」というプレフィクスリストを考えます。正しいプレフィクスリストの設定は次のようになります。
(config)#ip prefix-list test seq 5 deny 192.168.1.0/24
(config)#ip prefix-list test seq 10 permit 0.0.0.0/0 le 32
seq 5で「192.168.1.0/24のルート情報をdeny」にしています。そして、seq 10でpermit anyすなわち「残りのすべてのルート情報をpermit」です。ところが、seq 10のle 32を忘れてしまうと、すべてのルート情報がdenyされるようになってしまう間違ったプレフィクスリストの設定です。
(config)#ip prefix-list test seq 5 deny 192.168.1.0/24
(config)#ip prefix-list test seq 10 permit 0.0.0.0/0
seq 10の「le 32」を忘れると、この条件は「0.0.0.0/0のルート情報をpermit」という意味です。デフォルトルートだけがpermitされ、デフォルトルート以外のルート情報は暗黙のdenyによって最終的にdenyされてしまうことになります。結局、この間違った設定では、すべてのルート情報がdenyです。プレフィクスリストのpermit anyの条件を設定するときには、「le 32」を忘れないように気をつけてください。
プレフィクスリストを適用する
プレフィクスリストの適用は、ディストリビュートと同じように考えればいいだけです。適用するタイミングとして、以下があります。
- インタフェースでルート情報を送受信するとき
- ルーティングプロセス間で再配送するとき
- BGPネイバーとの間でルート情報を送受信するとき
インタフェースにプレフィクスリストを適用
ルーティングプロセスはインタフェースと関連付けられます。ルーティングプロセスに関連付けられたインタフェースでルート情報を送受信するタイミングでプレフィクスリストのフィルタをかけることができます。設定するには、ルーティングプロセスのコンフィグレーションモードでdistribute-list prefixコマンドを利用します。
プレフィクスリストの適用 インタフェース
(config-router)#distribute-list prefix <prefix-list-name> {in|out} [<interface-name>]
<prefix-list-name> : 適用するプレフィクスリストの名前
<interface-name> : インタフェース名
<interface-name>を省略すると、ルーティングプロセスに関連付けられているすべてのインタフェースが対象です。
なお、OSPFではインタフェースから送信するルート情報のフィルタは機能しません。
関連記事
再配送時にプレフィクスリストを適用
1台のルータで複数のルーティングプロトコル(ルーティングプロセス)を有効にしていて、ルーティングプロセス間で再配送するときにプレフィクスリストを適用できます。これにより、特定のルート情報のみ再配送するといった再配送するルート情報を細かく制御できます。再配送時のプレフィクスリストの適用は、再配送先のルーティングプロセスのコンフィグレーションモードで設定します。
プレフィクスリストの適用 再配送
(config)#router <protocol1>
(config-router)#redistribute <protocol2> …
(config-router)#distribute-list prefix <prefix-list-name> out <protocol2>
<protocol1> : 再配送先のルーティングプロセス
<protocol2> : 再配送元のルーティングプロセス
<prefix-list-name> : 適用するプレフィクスリストの名前
BGPネイバーにプレフィクスリストを適用
特定のBGPネイバーと送受信するBGPルートをフィルタするためにプレフィクスリストを適用できます。次のコマンドで、BGPネイバーに対してプレフィクスリストを適用します。
プレフィクスリストの適用 BGPネイバー
(config)#router bgp <AS>
(config-router)#neighbor <ip-address> prefix-list <prefix-list-name> {in|out}
<AS> : AS番号
<ip-address> : ネイバーのIPアドレス
関連記事
プレフィクスリストによるルートフィルタの確認
プレフィクスリストによるルートフィルタの確認を行うには、以下のようなshowコマンドを利用します。最終的には、ルーティングテーブルに意図したようにルート情報が登録されればよいのですが、各ルーティングプロセスのデータベースの内容も確認したほうがよいです。
確認コマンド | 概要 |
---|---|
#show ip prtocols |
プレフィクスリストが適用されているインタフェースを確認します。 |
#show ip eigrp topology |
EIGRPトポロジテーブルに意図したようにルート情報が登録されていることを確認します。 |
#show ip rip database |
RIPデータベースに意図したようにルート情報が登録されていることを確認します。 |
#show ip ospf database | OSPFへ再配送時にプレフィクスリストを適用している場合、OSPF LSDBに意図したようにルート情報(LSAタイプ5)が登録されていることを確認します。 |
#show ip bgp | BGPテーブルに意図したようにルート情報が登録されていることを確認します。BGPテーブルには数多くのルート情報が存在することが多いので、適切な表示のフィルタをかけてください。 |
#show ip prefix-list |
permit/denyするルート情報を指定するためのプレフィクスリストの内容を確認します。 |
#show ip route |
ルーティングテーブルに意図したようにルート情報が登録されていることを確認します。 |
関連記事
プレフィクスリストによるルートフィルタの詳細な設定例は以下の記事をご覧ください。
プレフィクスリストによるBGPルートのフィルタについて、以下の記事で詳しく解説しています。
IPルーティング応用
- DNSラウンドロビン方式の負荷分散
- 負荷分散装置(ロードバランサ)の仕組み
- ルーティングプロセス ~実行中のルーティングプロトコル用のプログラム~
- 複数のルーティングプロトコルの利用
- 再配送(再配布) ~ルーティングドメイン境界で必須の設定~
- Cisco再配送(再配布)の設定 ~redistributeコマンド~
- Cisco 再配送の設定例 ~OSPFとRIPの双方向再配送~
- 再配送 設定ミスの切り分けと修正 Part1
- 再配送 設定ミスの切り分けと修正 Part2
- 再配送 設定ミスの切り分けと修正 Part3
- 再配送 設定ミスの切り分けと修正 Part4
- 再配送 設定ミスの切り分けと修正 Part5
- 再配送 設定ミスの切り分けと修正 Part6
- オフセットリスト(offset-list) ~ルート情報のメトリックを加算~
- オフセットリストの設定例 RIP
- オフセットリストの設定例 EIGRP
- ルートフィルタの概要
- ルートフィルタのポイント
- ディストリビュートリストによるルートフィルタの設定
- Ciscoディストリビュートリストによるルートフィルタの設定例
- プレフィクスリスト(prefix-list)によるルートフィルタの設定
- Ciscoプレフィクスリストによるルートフィルタの設定例
- Ciscoルートマップ(route-map)の概要 ~何をどう処理するか~
- Ciscoルートマップの設定
- Ciscoルートマップ(route-map)設定のポイント
- Ciscoルートマップによる再配送時のルート制御の設定例
- ポリシーベースルーティングの設定例
- GREトンネルインタフェース ~仮想的なポイントツーポイント接続~
- GREトンネルインタフェースの設定例
- GREトンネルの注意点 ~フラッピングしないように~
- オーバーレイネットワークとアンダーレイネットワーク
- ルート制御 ケーススタディ Part1
- ルート制御 ケーススタディ Part2
- ルート制御 ケーススタディ Part3
- VRF/VRF-Liteの概要 ~仮想的にルータを分割する~
- VRFの設定と確認コマンド [Cisco]
- VRF-Liteによるレイヤ3VPNの設定例 [Cisco]
- VRFルートリーク(スタティックルート)
- VRFルートリーク(スタティックルート)の設定例
- VRFルートリーク(MP-BGP)
- VRFルートリーク(MP-BGP)の設定例
- [FVRFの仕組み] FVRF(Front door VRF)とは
- [FVRFの仕組み] ポイントツーポイントGREトンネル:FVRFなし
- [FVRFの仕組み] ポイントツーポイントGREトンネル : FVRFあり(tunnel vrfコマンド)
- [FVRFの仕組み] IPSec VTI : FRVRFあり
- [FVRFの仕組み] IPSec VTI : FVRFあり 設定例
- [FVRFの仕組み] DMVPN : FVRFあり
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part1
- [FVRFの仕組み] DMVPN : FVRFあり 設定例 Part2
- tunnel vrfコマンド
- tunnel vrfコマンドの設定例
- [演習] ルーティングループの防止
- [演習] 企業ネットワーク構築演習 Part1:拠点1の構築
- [演習] 企業ネットワーク構築演習 Part2:拠点2/拠点3の構築
- [演習] 企業ネットワーク構築演習 Part3:広域イーサネットの接続
- [演習] 企業ネットワーク構築演習 Part4:インターネット(AS1/AS2)の構築
- [演習] 企業ネットワーク構築演習 Part5:インターネットへの接続
- [演習] 企業ネットワーク構築演習 Part6:インターネットVPNの構築