ディストリビュートリストによるルートフィルタの設定手順

ディストリビュートリストでルート情報をフィルタするための設定手順は次の2つです。

  1. 標準ACLでpermitまたはdenyするルート情報を指定する
  2. ディストリビュートリスト(標準ACL)を適用する

以降で、この2つの手順について詳しく解説します。

標準ACLでpermitまたはdenyするルート情報を指定する

標準ACLでpermitまたはdenyするルート情報を指定します。ルートフィルタに利用するACLがディストリビュートリストです。ただ、ルート情報のネットワークアドレスだけしか指定できないことに気をつけてください。標準ACLでネットワークアドレスを指定するには、次のように設定します。

ディストリビュートリスト(標準ACL)

(config)#access-list <ACL-num> {permit|deny} <network-address> <wildcard>

<ACL-num> : ACL番号1~99
<network-address> : ネットワークアドレスのビットパターン
<wildcard> : ネットワークアドレスをチェックするためのワイルドカードマスク

ACLをパケットフィルタで利用するときには、標準ACLでpermitまたはdenyするIPパケットの送信元IPアドレスを指定します。ディストリビュートで標準ACLを利用するときには、意味がまったく違います。ネットワークアドレスのビットパターンを表していることに注意してください。

たとえば、ディストリビュートでルートフィルタするために標準ACLを以下のように設定します。

(config)#access-list 1 permit 192.168.1.0 0.0.0.255

この設定は「送信元IPアドレスが192.168.1.x(x:任意)のIPパケットをpermitする」という意味ではありません。ルート情報のネットワークアドレスを表しているので、「ネットワークアドレス192.168.1.x(x:任意)のネットワークアドレスのルート情報をpermitする」という意味です。

また、勘違いしやすいのですがワイルドカードマスクはサブネットマスクを意味しているわけではありません。直前のネットワークアドレスのどのビット部分をチェックするかを意味しています。つまり、この設定は「ネットワークアドレス192.168.1.0/24のルート情報をpermitする」という意味ではありません。この設定でpermitされるルート情報は192.168.1.0/24だけでなく、192.168.1.128/25、192.168.1.224/27など「192.168.1」ではじまるネットワークアドレスのルート情報です。

標準ACLでルートの指定の例
図 標準ACLでルートの指定の例

サブネットマスクまで見てpermit/denyするルート情報を決めたいのなら、プレフィクスリストを使います。

192.168.1.0/24とそのサブネッティングされたルート情報が一緒にアドバタイズされることは通常はありえませんが、わかりやすい例として挙げています。

暗黙のdenyと条件の順序に注意

ACLの最後に暗黙のdenyがあることを忘れないでください。denyの条件しか設定しなければ、最終的に暗黙のdenyですべてのルート情報がdenyされてしまいます。少なくとも1つはpermitの条件がなければいけません。

また、ACLの条件を上から順にチェックします。条件を設定する順序をきちんと考えておかないと、意図したルート情報がpermitまたはdenyされなくなります。

ディストリビュートリスト(標準ACL)を適用する

ディストリビュートリスト(標準ACL)でpermitまたはdenyするルート情報を決めたら、それを適用します。適用するタイミングとして、2つあります。

  • インタフェースでルート情報を送受信するとき
  • ルーティングプロセス間で再配送するとき
  • BGPネイバー間でルート情報を送受信するとき

インタフェースにディストリビュートリストを適用

ルーティングプロセスはインタフェースと関連付けられます。ルーティングプロセスに関連付けられたインタフェースでルート情報を送受信するタイミングでディストリビュートリストのフィルタをかけることができます。

設定するには、ルーティングプロセスのコンフィグレーションモードでdistribute-listコマンドを利用します。

インタフェースにディストリビュートリストを適用

(config-router)#distribute-list <ACL-num> {in|out} [<interface-name>]

<ACL-num> : 適用するディストリビュートリストのACL番号
<interface-name> : インタフェース名

<interface-name>を省略すると、ルーティングプロセスに関連付けられているすべてのインタフェースが対象です。

インタフェースにディストリビュートリストを適用
図 インタフェースにディストリビュートリストを適用

なお、OSPFではインタフェースから送信するルート情報のフィルタは機能しません。

再配送時にディストリビュートリストを適用

1台のルータで複数のルーティングプロトコル(ルーティングプロセス)を有効にしていて、ルーティングプロセス間で再配送するときにディストリビュートリストを適用できます。これにより、特定のルート情報のみ再配送するといった再配送するルート情報を細かく制御できます。再配送時のディストリビュートリストの適用は、再配送先のルーティングプロセスのコンフィグレーションモードで設定します。

再配送時にディストリビュートリストを適用

(config)#router <protocol1>
(config-router)#redistribute <protocol2> …
(config-router)#distribute-list <ACL-num> out <protocol2>

<protocol1> : 再配送先のルーティングプロセス
<protocol2> : 再配送元のルーティングプロセス
<ACL-num> : 適用するディストリビュートリストのACL番号

再配送時にディストリビュートリストを適用
図 再配送時にディストリビュートリストを適用

BGPネイバー間でルート情報を送受信するとき

BGPネイバー間でルート情報を送受信するときに、ディストリビュートリストを適用できます。

ディストリビュートリストによるルートフィルタの確認

ディストリビュートリストによるルートフィルタの確認を行うには、以下のようなshowコマンドを利用します。最終的には、ルーティングテーブルに意図したようにルート情報が登録されればよいのですが、各ルーティングプロセスのデータベースの内容も確認したほうがよいです。

確認コマンド概要

#show ip protocols

ディストリビュートリストが適用されているインタフェースを確認します。

#show ip eigrp topology

EIGRPトポロジテーブルに意図したようにルート情報が登録されていることを確認します。

#show ip rip database

RIPデータベースに意図したようにルート情報が登録されていることを確認します。

#show ip ospf database

OSPFへ再配送時にディストリビュートリストを適用している場合、OSPF LSDBに意図したようにルート情報(LSAタイプ5)が登録されていることを確認します。

#show ip access-list

permit/denyするルート情報を指定するためのディストリビュートリスト(標準ACL)の内容を確認します。

#show ip route

ルーティングテーブルに意図したようにルート情報が登録されていることを確認します。

表 ディストリビュートリストによるルートフィルタの確認コマンド

IPルーティング応用