# IP / 経路制御（フィルタリング）

経路情報のフィルタリング機能について説明します。
ここでのフィルタリングとは、あらかじめ指定した条件にしたがって経路情報を分類・識別し、特定の経路を許可・破棄したり、経路情報の属性を変更したりすることを指します。
本製品には、ダイナミックルーティングプロトコル使用時に経路情報をフィルタリングする方法として、それぞれ次の機能が用意されています。

表 1：RIP用の経路フィルタリング機能
名称 | 対象 | 機能 | 分類・識別方法
ディストリビュートリスト | RIP経路の送受信時 | RIPパケットの受信時に特定の経路を受け入れないよう設定したり、RIPパケットの送信時に特定の経路を通知しないよう設定したりする | 標準IPアクセスリストかIPプレフィックスリスト
オフセットリスト | RIP経路の送受信時 | RIPパケットの受信時に特定の経路のメトリック値を大きくしたり、RIPパケットの送信時に特定の経路のメトリック値を大きくしたりする | 標準IPアクセスリスト
再通知用ルートマップ | 非RIP経路のインポート時 | 再通知のため非RIP経路をインポートするときに、特定の経路を除外したり、特定の経路の属性を変更した上でインポートしたりする | ルートマップ

経路情報をフィルタリングするためには、何らかの条件にしたがって経路情報を分類・識別したり、分類した経路情報に対する処理を指定したりする必要がありますが、そのための機能としては、次のものがあります。

- 標準IPアクセスリスト（次の2種類がある）
  - 番号付き標準IPアクセスリスト（access-list(standard)コマンド）
  - 名前付き標準IPアクセスリスト（access-list standardコマンド）
- IPプレフィックスリスト（ip prefix-listコマンド）
- ルートマップ（route-mapコマンドほか。ルートマップ中で標準IPアクセスリスト、IPプレフィックスリストを使うこともある）

以下では、まずこれら分類・識別のための機能について説明し、次に各ルーティングプロトコルにおける経路フィルタリングの設定について具体例を挙げながら説明します。
ダイナミックルーティングなどの関連機能については以下のセクションをご覧ください。

- RIP

## 経路の分類・識別

ここでは、経路情報を分類・識別するための各機能について解説します。

### 標準IPアクセスリスト

標準IPアクセスリストは、IPアドレスを1つだけ指定できるアクセスリストです。始点IPアドレスに基づくアクセス制御が本来の用途ですが、宛先ネットワークアドレス（プレフィックス）に基づく経路エントリーの分類・識別にも使用できます。
標準IPアクセスリストは複数のエントリーから構成されるリストで、検索はエントリーの追加順に行われます。検索時には、最初にマッチしたエントリーで処理（permitかdeny）が行われるか結果（permitかdeny）が返され、マッチした時点で検索は終了します。どのエントリーにもマッチしなかった場合はdenyとなります。
標準IPアクセスリストには、各リストを番号で識別するタイプと名前で識別するタイプがあり、それぞれ以下のコマンドで設定を行います。

- 番号で識別するタイプ：access-list(standard)コマンド
- 名前で識別するタイプ：access-list standardコマンド

両者は分類条件の指定方法が若干異なるだけで、経路フィルタリングの各機能においてはどちらも同じように使用できます。
以下では、標準IPアクセスリストを用いて経路エントリーを分類・識別する方法について解説します。
標準IPアクセスリストを使ってトラフィック（パケット）の分類・識別や制御を行う方法については、「トラフィック制御」の「アクセスリスト」をご覧ください。

#### 番号付き標準IPアクセスリスト

番号で識別するタイプの標準IPアクセスリストを作成するには、access-list(standard)コマンドを使います。
番号付き標準IPアクセスリストでは、宛先プレフィックスのアドレス部分に対してのみマッチングを行います。このとき、ワイルドカードマスク（リバースマスクまたはORマスクともいう）を使うことで、柔軟なアドレス指定が可能です。次にいくつか例を示します。
Note

番号付き標準IPアクセスリストの末尾には「deny any」、すなわち、すべてをdenyする暗黙のエントリーが存在していることにご注意ください。

- 宛先プレフィックス（アドレス部分）の先頭オクテットが「10」の経路エントリー（アドレス部分が10.0.0.0～10.255.255.255の範囲内）を破棄し、その他は許可する。

      awplus(config)# access-list 1 deny 10.0.0.0 0.255.255.255
      awplus(config)# access-list 1 permit any

- 宛先プレフィックス（アドレス部分）の先頭2オクテットが「172.16」の経路エントリー（アドレス部分が172.16.0.0～172.16.255.255の範囲内）を破棄し、その他は許可する。

      awplus(config)# access-list 2 deny 172.16.0.0 0.0.255.255
      awplus(config)# access-list 2 permit any

- 宛先プレフィックス（アドレス部分）の先頭3オクテットが「192.168.10」の経路エントリー（アドレス部分が192.168.10.0～192.168.10.255の範囲内）を破棄し、その他は許可する。

      awplus(config)# access-list 3 deny 192.168.10.0 0.0.0.255
      awplus(config)# access-list 3 permit any

- 宛先プレフィックス（アドレス部分）の先頭25ビットが「192.168.10.128」の経路エントリー（アドレス部分が192.168.10.128～192.168.10.255の範囲内）を破棄し、その他は許可する。

      awplus(config)# access-list 4 deny 192.168.10.128 0.0.0.127
      awplus(config)# access-list 4 permit any

- 宛先プレフィックス（アドレス部分）が「192.168.10.128」と完全一致する経路エントリーを破棄し、その他は許可する。このケースでは、ワイルドカードマスク「0.0.0.0」は省略可能。

      awplus(config)# access-list 5 deny 192.168.10.128 0.0.0.0
      awplus(config)# access-list 5 permit any

#### 名前付き標準IPアクセスリスト

名前で識別するタイプの標準IPアクセスリストを作成するには、access-list standardコマンドを使います。
名前付き標準IPアクセスリストでは、つねに「アドレス/プレフィックス長（サブネットマスクの長さ）」の組に対してマッチングを行います。次にいくつか例を示します。
Note

名前付き標準IPアクセスリストの末尾には「deny any」、すなわち、すべてをdenyする暗黙のエントリーが存在していることにご注意ください。

- 宛先プレフィックス（アドレス部分）の先頭オクテットが「10」で、プレフィックス長が8～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# access-list standard n1 deny 10.0.0.0/8
      awplus(config)# access-list standard n1 permit any

- 宛先プレフィックス（アドレス部分）の先頭2オクテットが「172.16」で、プレフィックス長が16～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# access-list standard n2 deny 172.16.0.0/16
      awplus(config)# access-list standard n2 permit any

- 宛先プレフィックス（アドレス部分）の先頭3オクテットが「192.168.10」で、プレフィックス長が24～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# access-list standard n3 deny 192.168.10.0/24
      awplus(config)# access-list standard n3 permit any

- 宛先プレフィックス（アドレス部分）の先頭25ビットが「192.168.10.128」で、プレフィックス長が25～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# access-list standard n4 deny 192.168.10.128/25
      awplus(config)# access-list standard n4 permit any

- 宛先プレフィックス（アドレス部分）の先頭25ビットが「192.168.10.128」で、プレフィックス長が25ビットの経路エントリーを破棄し、その他は許可する。具体的には「192.168.10.128/25」と完全一致する経路エントリーだけを破棄する。

      awplus(config)# access-list standard n5 deny 192.168.10.128/25 exact-match
      awplus(config)# access-list standard n5 permit any

  本例は前の例とよく似ていますが、前の例が「192.168.10.128/25」、「192.168.10.192/28」、「192.168.10.248/29」など複数の経路エントリーとマッチするのに対し、本例は経路エントリー「192.168.10.128/25」とだけマッチします。
  Note

  名前付き標準IPアクセスリスト（access-list standardコマンド）の指定値M（マスク長）は、アドレス部分の先頭何ビットを比較対象とするかを指定すると同時に、プレフィックス長も指定します。exact-matchオプションを指定した場合は、経路エントリーのプレフィックス長がMと一致するときだけマッチします。exact-matchオプションを指定しなかった場合は、経路エントリーのプレフィックス長がM以上（M～32）のときにマッチします。

### IPプレフィックスリスト

IPプレフィックスリストは、標準IPアクセスリストとは異なり、経路エントリーの分類・識別に特化した仕組みです。
IPプレフィックスリストではつねに「アドレス/プレフィックス長（サブネットマスクの長さ）」の組に対してマッチングを行います。
IPプレフィックスリストは複数のエントリーから構成されるリストで、検索はエントリー番号の若い順に行われます。検索時には、最初にマッチしたエントリーで処理（permitかdeny）が行われるか結果（permitかdeny）が返され、マッチした時点で検索は終了します。どのエントリーにもマッチしなかった場合はdenyとなります。
IPプレフィックスリストを作成するには、ip prefix-listコマンドを使います。
次にいくつか例を示します。
Note

IPプレフィックスリストの末尾には「deny any」、すなわち、すべてをdenyする暗黙のエントリーが存在していることにご注意ください。

- 宛先プレフィックス（アドレス部分）の先頭オクテットが「10」で、プレフィックス長が8～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# ip prefix-list p1 deny 10.0.0.0/8 le 32
      awplus(config)# ip prefix-list p1 permit any

- 宛先プレフィックス（アドレス部分）の先頭2オクテットが「172.16」で、プレフィックス長が16～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# ip prefix-list p2 deny 172.16.0.0/16 le 32
      awplus(config)# ip prefix-list p2 permit any

- 宛先プレフィックス（アドレス部分）の先頭3オクテットが「192.168.10」で、プレフィックス長が24～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# ip prefix-list p3 deny 192.168.10.0/24 le 32
      awplus(config)# ip prefix-list p3 permit any

- 宛先プレフィックス（アドレス部分）の先頭25ビットが「192.168.10.128」で、プレフィックス長が25～32ビットの経路エントリーを破棄し、その他は許可する。

      awplus(config)# ip prefix-list p4 deny 192.168.10.128/25 le 32
      awplus(config)# ip prefix-list p4 permit any

- 宛先プレフィックス（アドレス部分）の先頭25ビットが「192.168.10.128」で、プレフィックス長が25ビットの経路エントリーを破棄し、その他は許可する。具体的には「192.168.10.128/25」と完全一致する経路エントリーだけを破棄する。

      awplus(config)# ip prefix-list p5 deny 192.168.10.128/25
      awplus(config)# ip prefix-list p5 permit any

- 宛先プレフィックス（アドレス部分）の先頭3オクテットが「192.168.10」で、プレフィックス長が25～28ビットの経路エントリーを破棄し、その他は許可する。具体的には「192.168.10.0/25」や「192.168.10.128/28」などの経路エントリーにマッチします。

      awplus(config)# ip prefix-list p6 deny 192.168.10.0/24 ge 25 le 28
      awplus(config)# ip prefix-list p6 permit any

### ルートマップ

ルートマップは、宛先プレフィックスだけでなく、ネクストホップやメトリックなどのさまざまな基準に基づいて経路エントリーを分類・識別し、分類した経路を破棄したり、経路属性を書き換えたりするための機能です。
ルートマップは複数のエントリーで構成されるリストで、検索はエントリー番号の若い順に行われます。検索時には、最初にマッチしたエントリーで以下に示す処理が行われ、マッチした時点で検索は終了します。どのエントリーにもマッチしなかった場合はdenyとなります。

- マッチしたエントリーのアクションがpermitなら、該当経路は許可され、set節があればそれも実行される
- マッチしたエントリーのアクションがdenyなら、該当経路は破棄され、set節は実行されない

ルートマップ内の各エントリーは、0～複数個のmatch節、1個のアクション（denyかpermit）、0～複数個のset節によって構成されます。match節、アクション、set節は、それぞれ次の役割を持ちます。

- match節は、経路エントリーと照合するための条件。match節のないエントリーはすべてにマッチする
- アクションは、マッチした経路を許可（permit）するか破棄（deny）するかの指定。許可された経路には引き続きset節が適用される
- set節は、許可（permit）された経路の属性を変更するための指定。1つのエントリーにおいて、複数種の属性を変更することができる

なお、match節では、以下の情報を条件として使用できます。

- 宛先プレフィックス（match ip addressコマンド）
- ネクストホップインターフェース（match interfaceコマンド）
- ネクストホップアドレス（match ip next-hopコマンド）
- メトリック（match metricコマンド）

宛先プレフィックス、ネクストホップアドレスのマッチングには、前述した標準IPアクセスリスト、IPプレフィックスリストを利用します。なお、ルートマップエントリーで標準IPアクセスリストやIPプレフィックスリストを使用する場合は、これらのリストを単独で使用する場合とdeny、permitの意味が異なるため注意してください。
また、set節では以下の情報を変更できます。

- ネクストホップアドレス（set ip next-hopコマンド）
- メトリック（set metricコマンド）

ルートマップの設定は次の流れで行います。

1. 必要に応じて、宛先プレフィックスやネクストホップアドレスのマッチングを行うための標準IPアクセスリスト、IPプレフィックスリストを作成します。
   このとき、リスト中のdeny、permitは経路エントリーを破棄するかどうかの指定でなく、該当経路エントリーをルートマップエントリーにマッチさせるかどうかの指定である点に注意してください。経路エントリーを破棄するかどうかは、リストのアクションではなく、ルートマップエントリーのアクションで指定します。
2. route-mapコマンドでルートマップエントリーを作成し、アクションを指定します。同コマンドを実行すると、ルートマップエントリーの内容を編集するためのルートマップモードに移行します。
3. ルートマップエントリーにmatch節を追加して分類条件を指定します。このとき、必要に応じて標準IPアクセスリストやIPプレフィックスリストなどを指定します。なお、match節のないルートマップエントリーは、すべての経路エントリーにマッチします。
4. 手順2で指定したルートマップエントリーのアクションがpermitの場合は、必要に応じてset節を追加し、経路属性を変更するための設定を追加します。属性変更をしない場合、set節は不要です。

以下、ルートマップの作成例をいくつか示します。
Note

ルートマップの末尾には、すべてをdenyする暗黙のエントリーが存在していることにご注意ください。

Note

前にも述べたとおり、ルートマップのmatch節で使用する標準IPアクセスリスト、IPプレフィックスリストは、deny、permitの意味が通常とは逆転しているので注意してください。

- 192.168.0.0/24と完全一致する宛先プレフィックスを持つ経路エントリーを破棄し、その他は許可する。

      awplus(config)# ip prefix-list p0 permit 192.168.0.0/24
      awplus(config)# route-map r1 deny 10
      awplus(config-route-map)# match ip address prefix-list p0
      awplus(config-route-map)# exit
      awplus(config)# route-map r1 permit 20
      awplus(config-route-map)# exit

- ネクストホップアドレスが172.16.10.3の経路エントリーを破棄し、その他は許可する。

      awplus(config)# access-list 10 permit 172.16.10.3 0.0.0.0
      awplus(config)# route-map r2 deny 10
      awplus(config-route-map)# match ip next-hop 10
      awplus(config-route-map)# exit
      awplus(config)# route-map r2 permit 20
      awplus(config-route-map)# exit

- 宛先プレフィックス（アドレス部分）の先頭2オクテットが「172.31」の経路エントリーに対し、OSPF外部経路タグ値「31」をセットする。その他の経路エントリーは変更しない。

      awplus(config)# access-list 20 permit 172.31.0.0 0.0.255.255
      awplus(config)# route-map r3 permit 10
      awplus(config-route-map)# match ip address 20
      awplus(config-route-map)# set tag 31
      awplus(config-route-map)# exit
      awplus(config)# route-map r3 permit 20
      awplus(config-route-map)# exit

## RIPにおける経路フィルタリング

ここでは、RIPを使用してダイナミックルーティングを行う場合の経路フィルタリングの方法について解説します。

### ディストリビュートリスト（RIP）

ディストリビュートリストは、RIPパケットの受信時に特定の経路を受け入れないよう設定したり、RIPパケットの送信時に特定の経路を通知しないよう設定したりするための機能です。
ディストリビュートリストは、RIPモードのdistribute-listコマンドで設定します。経路エントリーの分類条件は、標準IPアクセスリストかIPプレフィックスリストで定義します。
RIPパケットの受信時に特定の経路を受け入れないようにするには、distribute-listコマンドを「in」方向で設定します。
たとえば、RIPインターフェースvlan20において、10.0.0.0/8に包含される経路エントリーを受け入れないようにするには、次のようにします。

1. 宛先プレフィックスの先頭オクテットが「10」の経路エントリーを破棄し、その他は許可する標準IPアクセスリスト1を作成します。

       awplus(config)# access-list 1 deny 10.0.0.0 0.255.255.255
       awplus(config)# access-list 1 permit any

2. RIPモードに移行して、受信用のディストリビュートリストをvlan20に設定します。このとき、分類条件として標準アクセスリスト1を指定します。

       awplus(config)# router rip
       awplus(config-router)# distribute-list 1 in vlan20

RIPパケットの送信時に特定の経路を通知しないようにするには、distribute-listコマンドを「out」方向で設定します。
たとえば、RIPインターフェースvlan10において、192.168.0.0/16に包含される経路エントリーを通知しないようにするには、次のようにします。

1. 宛先プレフィックスの先頭2オクテットが「192.168」の経路エントリーを破棄し、その他は許可する標準IPアクセスリスト2を作成します。

       awplus(config)# access-list 2 deny 192.168.0.0 0.0.255.255
       awplus(config)# access-list 2 permit any

2. RIPモードに移行して、送信用のディストリビュートリストをvlan10に設定します。このとき、分類条件として標準アクセスリスト2を指定します。

       awplus(config)# router rip
       awplus(config-router)# distribute-list 2 out vlan10

### オフセットリスト（RIP）

オフセットリストは、RIPパケットの受信時に特定の経路のメトリック値を大きくしたり、RIPパケットの送信時に特定の経路のメトリック値を大きくしたりするための機能です。
オフセットリストは、RIPモードのoffset-listコマンドで設定します。経路エントリーの分類条件は、標準IPアクセスリストで定義します。
RIPパケットの受信時に特定の経路のメトリックを大きくするには、offset-listコマンドを「in」方向で設定します。
たとえば、RIPインターフェースvlan20で経路情報を受信するとき、経路エントリー172.16.20.0/24の場合だけメトリックを4加算した上でRIP経路表に取り込むよう設定するには、次のようにします。

1. 宛先プレフィックスが「172.16.20.0/24」に完全一致する経路エントリーをpermitし、その他はdenyする名前付き標準IPアクセスリスト「add4」を作成します。オフセットリストで使用するアクセスリストでは、メトリックを変更したい経路をpermit、変更したくない経路をdenyするよう設定します。

       awplus(config)# access-list standard add4 permit 172.16.20.0/24 exact-match

2. RIPモードに移行して、受信用のオフセットリストをvlan20に設定します。このとき、分類条件として名前付き標準アクセスリスト「add4」を指定します。メトリック加算値は「4」とします。

       awplus(config)# router rip
       awplus(config-router)# offset-list add4 in 4 vlan20

RIPパケットの送信時に特定の経路のメトリックを大きくするには、offset-listコマンドを「out」方向で設定します。
たとえば、RIPインターフェースvlan10から経路情報を送信するとき、経路エントリー192.168.10.0/24の場合だけメトリックを5加算した上で通知するよう設定するには、次のようにします。

1. 宛先プレフィックスが「192.168.10.0/24」に完全一致する経路エントリーをpermitし、その他はdenyする名前付き標準IPアクセスリスト「add5」を作成します。オフセットリストで使用するアクセスリストでは、メトリックを変更したい経路をpermit、変更したくない経路をdenyするよう設定します。

       awplus(config)# access-list standard add5 permit 192.168.10.0/24 exact-match

2. RIPモードに移行して、送信用のオフセットリストをvlan10に設定します。このとき、分類条件として名前付き標準アクセスリスト「add5」を指定します。メトリック加算値は「5」とします。

       awplus(config)# router rip
       awplus(config-router)# offset-list add5 out 5 vlan10

### 再通知用ルートマップ（RIP）

再通知用ルートマップは、再通知のため非RIP経路をインポートするときに、特定の経路を除外したり特定の経路の属性を変更した上でインポートしたりするための機能です。
再通知用ルートマップは、RIPモードのredistributeコマンドで再通知の設定を行うときに、route-mapパラメーターで指定します。
非RIP経路のインポート時に、特定の経路をインポートしないよう設定したり、特定の経路の属性を変更した上でインポートするよう設定したりするには、redistributeコマンドのroute-mapパラメーターでルートマップを指定します。
たとえば、OSPF経路をRIPにインポートするとき、経路エントリー172.24.0.0/16をインポート対象から除外するには、次のようにします。

1. 経路エントリー172.24.0.0/16を破棄し、その他を許可するルートマップr24を作成します。

       awplus(config)# ip prefix-list p24 permit 172.24.0.0/16
       awplus(config)# route-map r24 deny 10
       awplus(config-route-map)# match ip address prefix-list p24
       awplus(config-route-map)# exit
       awplus(config)# route-map r24 permit 20
       awplus(config-route-map)# exit

2. RIPモードのredistributeコマンドでOSPF経路再通知の設定をするときに、route-mapパラメーターでルートマップ名を指定します。

       awplus(config)# router rip
       awplus(config-router)# redistribute ospf route-map r24