Cisco NCS 5000 シリーズ ルータ IP アドレスおよびサービス コンフィギュレーション ガイド、IOS XR リリース 6.0.x
アクセス リストおよびプレフィックス リストの実装
アクセス リストおよびプレフィックス リストの実装

アクセス リストおよびプレフィックス リストの実装

アクセス リストおよびプレフィックス リストの実装

アクセス コントロール リスト(ACL)は、ネットワーク トラフィック プロファイルをまとめて定義する 1 つ以上のアクセス コントロール エントリ(ACE)です。このプロファイルは、トラフィック フィルタリング、ルート フィルタリング、QoS 分類、アクセス コントロールなど、Cisco IOS XR ソフトウェアの機能で参照できます。次の 2 種類の ACL があります。

  • 標準 ACL:パケットの送信元アドレスのみが検証されます。標準 ACL は、IP パケットの送信元アドレスと ACL に設定されているアドレスを比較して、トラフィックを制御します。

  • 拡張ACL:パケットの送信元アドレスと宛先アドレス、特定の UDP/TCP/IP プロトコル、および宛先ポートが検証されます。

Cisco IOS XR ソフトウェアでは、標準アクセス リストと拡張アクセス リストは区別されません。標準アクセス リストをサポートしているのは、下位互換性を確保するためです。

[Restrictions(機能制限)]

  • IPv4 ACL は、ループバック インターフェイスおよびインターフレックス インターフェイスではサポートされません。
  • TCAM の使用率が高いときに、ACL が大量に変更されると、エラーが発生する可能性があります。そのような場合は、当該の ACL をインターフェイスから削除し、再設定します。後で、インターフェイスに ACL を再適用してください。
  • インターフェイスの ACL による MPLS パケットのフィルタリングはサポートされていません。
  • 出力 ACL はサポートされていません。

アクセス リストおよびプレフィックス リスト機能のハイライト

ここでは、アクセス リストとプレフィックス リストの機能のハイライトを示します。

  • 特定のシーケンス番号を使用して、アクセス リストまたはプレフィックス リストのカウンタをクリアできます。
  • 既存のアクセス リストまたはプレフィックス リストの内容を別のアクセス リストまたはプレフィックス リストにコピーできます。
  • permit または deny ステートメントにシーケンス番号を適用すると、名前付きアクセス リストまたはプレフィックス リストでそれらのステートメントの並べ替え、追加、削除を行うことができます。

アクセス リストとプレフィックス リストの詳細については、次を参照してください。 アクセス リストおよびプレフィックス リストについて

アクセス リストの実装

ACL の実装には以下の手順が必要です。

  1. 標準または拡張 ACL を作成する

    アクション要素(許可または拒否)と、基準に基づくフィルタ要素(送信元アドレス、宛先アドレス、プロトコル、プロトコル固有のパラメータなど)が含まれている ACL を作成します。

  2. 特定のインターフェイスに ACL を適用する

    アクセス リストを設定したら、機能させるためにそのアクセス リストを参照する必要があります。アクセス リストは着信インターフェイスに適用できます。パケットを受信すると、Cisco IOS XR ソフトウェアはアクセス リストと照合してパケットの送信元アドレスをチェックします。アクセス リストがアドレスを許可している場合は、パケットの処理を継続します。アクセス リストでアドレスが拒否された場合は、パケットを破棄し、ICMP ホスト到達不能メッセージを返します ICMP メッセージは設定可能です

    まだ定義されていないアクセス リストをインターフェイスに適用すると、アクセス リストがまだインターフェイスに適用されていないものと解釈し、すべてのパケットを容認します。ネットワークで未定義のアクセス リストをセキュリティの手段として使用する場合は、この動作に留意してください。

ACL で実行できるその他のアクションは次のとおりです。
  • アクセス リストのコピー

    copy access-list ipv4 コマンドを使用して、既存のアクセス リストのコピーを作成できます。

  • アクセスリスト エントリの優先順位付け

    アクセス リストのエントリにシーケンス番号を割り当てることができます。IP アクセス リストのエントリにシーケンス番号を適用すると、アクセス リストの変更が簡単になります。また、先頭のシーケンス番号とシーケンス番号の増分を使用して、特定のアクセス リストを並べ替えることができます。

  • アクセスリスト エントリの追加または削除


(注)  


パケットが許可または拒否のいずれにも該当しない場合、デフォルトのアクションはパケットの破棄です。


拡張アクセス リストの設定

設定例

IPv4 名前付きアクセス リスト「acl_1」を作成します。このアクセス リストは、送信元または宛先として IPv4 アドレスを持つ ICMP プロトコル パケットを許可し、送信元または宛先として IPv4 アドレスを持ち、ポートが 5000 よりも大きい TCP プロトコル パケットを拒否します。

Router#configure
Router(config)#ipv4 access-list acl_1

Router(config-ipv4-acl)#20 permit icmp any any
Router(config-ipv4-acl)#30 deny tcp any any gt 5000
Router(config-ipv4-acl)#commit

実行コンフィギュレーション

Router#  show running-config ipv4 access-list acl_1
ipv4 access-list acl_1
 20 permit icmp any any
 30 deny tcp any any gt 5000
!

確認

許可と拒否の設定が設定されているコンフィギュレーションに合致していることを確認します。

Router# show access-lists acl_1
ipv4 access-list acl_1
 20 permit icmp any any
 30 deny tcp any any gt 5000
Router#

関連コマンド

次の作業

アクセス リストを作成したら、それを回線またはインターフェイスに適用する必要があります。一意のアクセス リスト エントリ(ACE)の追加または削除中に、ACL コミットが失敗します。これは、割り当てられたマネージャ プロセスが存在しないために発生します。config-ipv4-acl モードを終了してコンフィギュレーション モードに戻り、再び config-ipv4-acl モードを開始してから、最初の ACE を追加してください。

標準アクセス リストの設定

設定例

「Do not allow user1 to telnet out」というコメントが付いた、IPv4 名前付きアクセス リスト「acl_1」を作成します。このアクセス リストは、ワイルドカード マスク「0.0.255.255」が付いた送信元アドレス「172.16.0.0」からのパケットを許可します。

Router# configure
Router(config)# ipv4 access-list acl_1

Router(config-ipv4-acl)# 10 remark Do not allow user1 to telnet out 
Router(config-ipv4-acl)# 20 permit 172.16.0.0 0.0.255.255
*/Repeat the above step as necessary, adding statements by sequence number where you planned. 
Use the no sequence-number command to delete an entry*/
Router(config-ipv4-acl)# commit

実行コンフィギュレーション

Router# show running-config ipv4 access-list acl_1 
ipv4 access-list acl_1
 10 remark Do not allow user1 to telnet out
 20 permit ipv4 172.16.0.0 0.0.255.255 any
!

確認

許可とコメントの設定が設定されているコンフィギュレーションに合致していることを確認します。

Router# show access-lists ipv4 acl_1
ipv4 access-list acl_1
 10 remark Do not allow user1 to telnet out
 20 permit ipv4 172.16.0.0 0.0.255.255 any

関連コマンド

次の作業

アクセス リストを作成したら、それを回線またはインターフェイスに適用する必要があります。一意のアクセス リスト エントリ(ACE)の追加または削除中に、ACL コミットが失敗します。これは、割り当てられたマネージャ プロセスが存在しないために発生します。config-ipv4-acl モードを終了してコンフィギュレーション モードに戻り、再び config-ipv4-acl モードを開始してから、最初の ACE を追加してください。

アクセス リストの適用

設定例

TenGigE インターフェイス 0/0/0/2 から着信したパケットのフィルタとして機能するインターフェイスにアクセス リストを適用します。

Router# configure
Router(config)# interface TenGigE 0/0/0/2
Router(config-if)# ipv4 access-group acl_1 ingress 
Router(config-ipv4-acl)# commit

確認

インターフェイスに適用した ACL(acl_1)が表示されることを確認します。

Router #show access-lists interface TenGigE 0/0/0/2
Input ACL 
(common): N/A     (interface): acl_1
Output ACL: N/A
Router#

アクセス リスト エントリの順序付けとアクセス リストの変更

設定例

アクセス リストのエントリにシーケンス番号を割り当て、アクセス リストに対してエントリを追加または削除する方法を示します。この設定では、ユーザがアクセス リストの変更を望んでいると想定しています。

アクセス リスト「acl_1」のエントリを並べ替えます。並べ替えた後のアクセス リストの開始値は 20、増分値は 15 です。


(注)  


ACL をインターフェイスで設定し、並べ替えてロールバックすると、インターフェイスで短時間だけトラフィックの損失が発生します。
Router#configure
Router(config)#ipv4 access-list acl_1 

Router(config-ipv4-acl)#10 permit 10.1.1.1
*/Repeat the above step as necessary adding statements by sequence number where you planned*/
Router(config-ipv4-acl)#20 permit 10.2.0.0 0.0.255.25
Router(config-ipv4-acl)#no 25
*/Use the no sequence-number command to delete an entry with that specific sequence number*/
Router(config-ipv4-acl)#30 permit tcp host 10.2.2.2 255.255.0.0 any eq telnet
Router(config-ipv4-acl)#commit
end
Router#resequence access-list ipv4 acl_1 20 15

実行コンフィギュレーション

Before resequencing:
Router#show running-config ipv4 access-list acl_1 
ipv4 access-list acl_1
 10 remark Do not allow user1 to telnet out
 20 permit ipv4 172.16.0.0 0.0.255.255 any
!
*/After resequencing using the resequence access-list ipv4 acl_1 20 15 command*/:

Router# show running-config ipv4 access-list acl_1
ipv4 access-list acl_1
 20 permit ipv4 host 10.1.1.1 any
 35 permit ipv4 10.2.0.0 0.0.255.25 any
 50 permit ipv4 10.1.1.1/24 any
 65 permit tcp host 10.2.2.2 any eq telnet
!

確認

設定されていたすべての許可オプションと拒否オプションが、(並べ替えの後に)アクセス リスト(acl_1)に含まれていることを確認します。

Router#show access-lists ipv4 acl_1
ipv4 access-list acl_1
20 permit ipv4 host 10.1.1.1 any
35 permit ipv4 10.2.0.0 0.0.255.25 any
50 permit ipv4 10.1.1.1/24 any
65 permit tcp host 10.2.2.2 any eq telnet

Use case

この使用例では、新しいエントリの作成、並べ替え、追加、エントリの削除、および ACL の検証について方法を説明します。

*/ Create an Access List*/
Router(config)#ipv4 access-list acl_1

*/Add entries (ACEs) to the ACL*/
Router(config-ipv4-acl)#10 permit ip host 10.3.3.3 host 172.16.5.34
Router(config-ipv4-acl)#20 permit icmp any any
Router(config-ipv4-acl)#30 permit tcp any host 10.3.3.3
Router(config-ipv4-acl)#end

*/Verify the entries of the ACL*/:
Router#show access-lists ipv4 acl_1
ipv4 access-list acl_1
10 permit ip host 10.3.3.3 host 172.16.5.34
20 permit icmp any any
30 permit tcp any host 10.3.3.3

*/Resequence the ACL*/:
Router(config)#resequence ipv4 access-list acl_1 10 20
*/10 indicates the starting value in the resequenced ACL and the subsequent entries in the original ACL are incremented by 20*/

*/Verify the entries of the ACL*/:
Router#show access-lists ipv4 acl_1
10 permit ip host 10.3.3.3 host 172.16.5.34
30 permit icmp any any
50 permit tcp any host 10.3.3.3

*/Add new entries, one with a sequence number "15" and another without a sequence number to the ACL. Delete an entry with the sequence number "30":*/
Router(config)#ipv4 access-list acl_1
Router(config-ipv4-acl)# 15 permit 10.5.5.5 0.0.0.255
Router(config-ipv4-acl)# no 30
Router(config-ipv4-acl)# permit 10 .4.4.4 0.0.0.255

*/When an entry is added without a sequence number, it is automatically given a sequence number
that puts it at the end of the access list. Because the default increment is 10, the entry will have a sequence
number 10 higher than the last entry in the existing access list*/

*/Verify the entries of the ACL:*/
Router(config)#show access-lists ipv4 acl_1
10 permit ip host 10.3.3.3 host 172.16.5.34
15 permit 10.5.5.5 0.0.0.255---*/newly added ACE (with the sequence number)*/
50 permit tcp any host 10.3.3.3
60 permit 10 .4.4.4 0.0.0.255---*/newly added ACE (without the sequence number)*/
*/The entry with the sequence number 30, that is, "30 permit icmp any any" is deleted from the ACL*/

プレフィックス リストの実装

プレフィックス リストはルート マップおよびルート フィルタリング操作に使用されるほか、ボーダー ゲートウェイ プロトコル(BGP)の多くのルート フィルタリング コマンドではアクセス リストの代わりに使用できます。プレフィックスは IP アドレスの一部であり、左端のオクテットの左端のビットから始まります。アドレスの何ビットがプレフィックスに属するかを正確に指定すると、プレフィックスを使用してアドレスを集約し、そのアドレスに対して再配布(フィルタ ルーティング アップデート)などの機能を実行できるようになります。

プレフィックス リストを使用した BGP フィルタリング

プレフィックス リストは、BGP ルート フィルタリング コマンドの多くでアクセス リストの代わりに使用できます。これは BGP プロトコルのグローバル コンフィギュレーションで設定されます。プレフィックス リストを使用した場合の利点は次のとおりです。
  • サイズの大きなリストをロードしてルート ルックアップを実施する場合のパフォーマンスが大幅に向上します。

  • 差分更新がサポートされます。

  • CLI の使い勝手が向上します。アクセス リストを使用して BGP 更新をフィルタリングするための CLI は、パケット フィルタリング形式を使用しているため、わかりにくく使い勝手もよくありません。

  • 柔軟性が高まります。

コマンドでプレフィックス リストを使用するには、あらかじめプレフィックス リストをセットアップしておく必要があります。プレフィックス リストのエントリには、シーケンス番号を割り当ててください。

プレフィックス リストでトラフィックをフィルタリングする仕組み

プレフィックス リストによるフィルタリングでは、ルートのプレフィックスが、プレフィックス リストに記載されているプレフィックスと照合されます。一致すると、一致したルートが使用されます。具体的には、プレフィックスを許可するか、拒否するかは次のルールに基づきます。
  • 空のプレフィックス リストはすべてのプレフィックスを許可します。

  • 特定のプレフィックスがプレフィックス リストのどのエントリとも一致しなかった場合、暗黙の deny が適用されます。

  • プレフィックス リストの複数のエントリが特定のプレフィックスと一致したときは、最も長く、最も具体的な一致が選択されます。

シーケンス番号は自動的に生成されます。ただし、この自動生成をディセーブルにしている場合を除きます。シーケンス番号の自動生成をディセーブルにしている場合は、IPv4 のプレフィックス リスト コンフィギュレーション コマンドで、permitdeny コマンドの sequence-number 引数を使用して、各エントリのシーケンス番号を指定する必要があります。プレフィックス リストのエントリを削除するには、permit または deny コマンドの no 形式を使用して、sequence-number 引数を指定します。

show コマンドの出力には、シーケンス番号が含まれます。

プレフィックス リストの設定

設定例

「Deny all routes with a prefix of 10/8」というコメントが付いたプレフィックス リスト「pfx_2」を作成します。このプレフィックス リストは、128.0.0.0/8 の /24 に一致するプレフィックスをすべて拒否します。

Router#configure
Router(config)#ipv4 prefix-list pfx_2

Router(config-ipv4_pfx)#10 remark Deny all routes with a prefix of 10/8
Router(config-ipv4_pfx)#20 deny 128.0.0.0/8 eq 24
*Repeat the above step necessary. Use the no sequence-number command to delete an entry.
Router(config-ipv4_pfx)#commit

実行コンフィギュレーション

Router#show running-config ipv4 prefix-list pfx_2  
ipv4 prefix-list pfx_2
 10 remark Deny all routes with a prefix of 10/8
 20 deny 128.0.0.0/8 eq 24
!

確認

許可とコメントの設定が設定されているコンフィギュレーションに合致していることを確認します。

Router# show prefix-list pfx_2
ipv4 prefix-list pfx_2
 10 remark Deny all routes with a prefix of 10/8
 20 deny 128.0.0.0/8 eq 24
RP/0/RP0/CPU0:ios#

関連コマンド

  • ipv4 access-list

  • show prefix-list ipv4

プレフィックス リスト エントリの順序付けとプレフィックス リストの変更

設定例

名前付きプレフィックス リストのエントリにシーケンス番号を割り当て、プレフィックス リストに対してエントリを追加または削除する方法を示します。プレフィックス リストを変更することを前提に説明します。プレフィックス リストの並べ替えは任意です。

Router#config
Router(config)#ipv4 prefix-list cl_1 

Router(config)#10 permit 172.16.0.0 0.0.255.255
*/Repeat the above step as necessary adding statements by sequence number where you planned; use the no sequence-number command to delete an entry*/
Router(config)#commit
end
Router#resequence prefix-list ipv4 cl_1 20 15

実行コンフィギュレーション

/*Before resequencing/*
Router#show running-config ipv4 prefix-list cl_1
ipv4 prefix-list cl_1
 10 permit 172.16.0.0/16
!
/*After resequencing using the resequence prefix-list ipv4 cl_1 20 15 command:/*
Router#show running-config ipv4 prefix-list cl_1 
ipv4 prefix-list cl_1
 35 permit 172.16.0.0/16
!

確認

プレフィックス リストが並べ替えられたことを確認します。

Router#show prefix-list cl_1  
ipv4 prefix-list cl_1
 35 permit 172.16.0.0/16

アクセス リストおよびプレフィックス リストについて

IP アクセス リストの目的

アクセス リストは、パケット フィルタリングを実行して、ネットワークを介して移動するパケットとその場所を制御します。この処理は、ネットワーク トラフィックを制限したり、ユーザやデバイスによるネットワークへのアクセスを制限したりするのに役立ちます。アクセス リストの用途は多様なので、多くのコマンドの構文でアクセス リストが参照されます。アクセス リストを使用して、次のようなことを実行できます。

  • インターフェイスでの着信パケットのフィルタリング

  • インターフェイスでの発信パケットのフィルタリング

  • ルーティング アップデートの内容の制限

  • アドレスまたはプロトコルに基づくデバッグ出力の制限

  • vty へのアクセスの制御

  • 輻輳回避、輻輳管理、プライオリティ キューイング、カスタム キューイングなどの高度な機能に使用されるトラフィックの特定または分類

IP アクセス リストの機能

アクセス リストは、permit ステートメントと deny ステートメントで構成される順次リストです。これらのステートメントは、IP アドレス、場合によっては上位層 IP プロトコルに適用されます。アクセス リストには、参照に使用される名前があります。多くのソフトウェア コマンドは、構文の一部としてアクセス リストを受け取ります。

アクセス リストを設定して名前を付けることは可能ですが、アクセス リストを受け取るコマンドによってアクセス リストが参照されるまで、有効にはなりません。複数のコマンドから同じアクセス リストを参照できます。アクセス リストで、ルータに到達するトラフィック、またはルータ経由で送信されるトラフィックは制御できますが、ルータが送信元のトラフィックは制御できません。

IP アクセス リストのプロセスとルール

IP アクセス リストを設定するときは、次のプロセスとルールを使用してください。
  • アクセス リストの条件に対してフィルタリングされる各パケットの送信元アドレスや宛先アドレス、またはプロトコルがテストされます。一度に 1 つの条件(permit ステートメントまたは deny ステートメント)がテストされます。

  • パケットがアクセス リストのステートメントに一致しないと、そのパケットはリスト内の次のステートメントに対してテストされます。

  • パケットとアクセス リストのステートメントが一致すると、リスト内の残りのステートメントはスキップされ、パケットは一致したステートメントに指定されたとおりに許可または拒否されます。パケットが許可されるか拒否されるかは、パケットが一致する最初のエントリによって決まります。つまり、一致すると、それ以降のエントリは考慮されません。

  • アクセス リストでアドレスまたはプロトコルが拒否されると、パケットは廃棄され、インターネット制御メッセージ プロトコル(ICMP)ホスト到達不能メッセージが返されます。ICMP は Cisco IOS XR ソフトウェア で設定できます。

  • 各アクセス リストの最後には暗黙の deny ステートメントがあるため、一致する条件がない場合は、パケットはドロップされます。つまり、各ステートメントに対してテストするときまでにパケットを許可または拒否しないと、パケットは拒否されます。

  • アクセス リストには permit ステートメントを 1 つ以上含める必要があります。そうしないと、パケットはすべて拒否されます。

  • 最初に一致が見つかった後は条件のテストが終了するため、条件の順序は重要です。同じ permit ステートメントまたは deny ステートメントでも、順序が異なる場合、ある状況では通過し、別の状況では拒否されるパケットが生じる可能性があります。

  • 1 つのインターフェイス、1 つのプロトコル、1 つの方向につき、許可されるアクセス リストは 1 つだけです。

  • インバウンド アクセス リストは、ルータに到達するパケットを処理します。着信パケットの処理後に、アウトバウンド インターフェイスへのルーティングが行われます。インバウンド アクセス リストが効率的なのは、フィルタリング テストで拒否されたことでパケットが廃棄される場合、ルーティング検索のオーバーヘッドが抑えられるためです。パケットがテストで許可されると、そのパケットに対してルーティングの処理が実施されます。インバウンド リストの場合、許可とは、インバウンド インターフェイスで受信したパケットを引き続き処理することを意味します。拒否とは、パケットを破棄することです。

  • アウトバウンド アクセス リストの場合、パケットの処理後にルータから送信されます。着信パケットはアウトバウンド インターフェイスにルーティングされてから、アウトバウンド アクセス リストで処理されます。アウトバウンド リストの場合、許可とは、出力バッファに対して送信されることを示し、拒否とは、パケットが廃棄されることを示します。

  • アクセス リストは、使用中のアクセス グループによって適用されている場合には削除できません。アクセス リストを削除するには、まずアクセス リストを参照しているアクセス グループを削除してから、アクセス リストを削除します。

  • ipv4 access group コマンドを使用するには、アクセス リストが存在している必要があります。

IP アクセス リストを作成する際に役立つヒント

IP アクセス リストを作成する場合は、次の事項を考慮してください。

  • アクセス リストは、インターフェイスに適用する前に作成します。

  • ネットワークまたはサブネットのより具体的な参照が、より全般的な参照よりも前に出現するように、アクセス リストを構成します。

  • 個々のステートメントの用途をひと目で確認および理解しやすくするために、ステートメントの前または後に役立つ注記を書き込みます。

送信元アドレスと宛先アドレス

送信元アドレスと宛先アドレスは、IP パケットの最も一般的な 2 つのフィールドで、アクセス リストの基礎となります。送信元アドレスを指定して、特定のネットワーキング デバイスまたはホストからのパケットを制御します。宛先アドレスを指定して、特定のネットワーキング デバイスまたはホストに送信されるパケットを制御します。

ワイルドカード マスクと暗黙のワイルドカード マスク

アドレス フィルタリングでは、アクセス リスト エントリ内のアドレス ビットとアクセス リストに送信されるパケットを比較するときに、ワイルドカード マスクを使用して、対応する IP アドレス ビットを確認するか無視するかを指定します。管理者は、ワイルドカード マスクを慎重に設定することにより、許可または拒否のテストに 1 つまたは複数の IP アドレスを選択できます。

IP アドレス ビット用のワイルドカード マスクでは、数値 1 と数値 0 を使用して、対応する IP アドレス ビットをどのように扱うかを指定します。1 と 0 は、サブネット(ネットワーク)マスクで意味する内容が逆になるため、ワイルドカード マスクは逆マスクとも呼ばれます。

  • ワイルドカード マスク ビット 0 は、対応するビット値を確認することを示します。

  • ワイルドカード マスクのビット 1 は、対応するビット値を無視することを意味します。

アクセス リスト ステートメントでは、送信元アドレスまたは宛先アドレスにワイルドカード マスクを指定する必要はありません。host キーワードを使用すると、ワイルドカード マスクとして 0.0.0.0 を指定したものと見なされます。

サブネット マスクでは、ネットワークとサブネットを示す隣接ビットをマスクにする必要がありますが、それとは異なり、ワイルドカード マスクではマスクに非隣接ビットを使用できます。

ワイルドカード ビットの代わりに、CIDR 形式(/x)を使用することもできます。たとえば、IPv4 アドレス 1.2.3.4 0.255.255.255 は 1.2.3.4/8 に相当し、IPv6 アドレスの場合、2001:db8:abcd:0012:0000:0000:0000:0000 は 2001:db8:abcd:0012::0/64 に相当します。

トランスポート層の情報

トランスポート層の情報(パケットが TCP、UDP、ICMP、IGMP のいずれのパケットであるかなどの情報)に基づいてパケットをフィルタリングできます。

IP アクセス リスト エントリ シーケンス番号

IP アクセス リスト エントリにシーケンス番号を適用する機能によって、アクセス リストの変更が簡易になります。この機能がない頃は、アクセス リスト内のエントリの位置を指定する方法はありませんでした。以前は、既存のリストの途中にエントリ(ステートメント)を挿入する場合、目的の位置の後にあるすべてのエントリを削除してから、新しいエントリを追加し、削除したすべてのエントリを再入力する必要がありました。これは手間がかかり、エラーが起こりやすい方法です。

IP アクセス リスト エントリ シーケンス番号機能を使用すると、アクセス リスト エントリにシーケンス番号を追加し、リスト内のエントリを並べ替えることができます。新しいエントリを追加する場合、アクセス リストの目的の位置に挿入されるようにシーケンス番号を選択します。必要に応じて、アクセス リストの現在のエントリを並べ替えて、新しいエントリを挿入できる場所を作成できます。

シーケンス番号の動作

ここでは、シーケンス番号の動作を詳しく説明します。

  • シーケンス番号のないエントリを複数適用すると、最初のエントリにシーケンス番号 10 が割り当てられ、それ以降のエントリには 10 ずつ増分したシーケンス番号が割り当てられます。最大シーケンス番号は 2147483646 です。生成したシーケンス番号がこの最大値を超えると、次のメッセージが表示されます。

Exceeded maximum sequence number.
  • シーケンス番号のないエントリを 1 つ指定すると、アクセス リストの最後のシーケンス番号に 10 を加えたシーケンス番号が割り当てられ、リストの末尾に配置されます。

  • ACL エントリは、トラフィック フローにもハードウェアのパフォーマンスにも影響を及ぼすことなく追加できます。

  • グローバル コンフィギュレーション モードで新しいアクセス リストを入力すると、そのアクセス リストのシーケンス番号が自動的に生成されます。

  • この機能は、名前付きの標準および拡張 IP アクセス リストと連動します。アクセス リストの名前を番号として指定できるため、番号も使用できます。

IP アクセス リスト ログ メッセージ

Cisco IOS XR ソフトウェアでは、標準 IP アクセス リストで許可または拒否されたパケットに関するログ メッセージが表示されます。つまり、パケットがアクセス リストに一致すると、そのパケットに関するログ メッセージ情報がコンソールに送信されます。ログをコンソールに送信するメッセージのレベルは、グローバル コンフィギュレーション モードの logging console コマンドで制御します。

最初にパケットがアクセス リストをトリガーすると、すぐにログ メッセージが生成されます。その後、5 分間隔でパケットが収集されて表示または記録されます。ログ メッセージにはアクセス リスト番号、パケットの許可または拒否に関する状況、パケットの送信元 IP アドレス、および直前の 5 分間に許可または拒否された送信元からのパケット数が示されます。

ただし、ipv4 access-list log-update threshold コマンドを使用すると、パケットがアクセス リストに一致して許可または拒否される際にログ メッセージの生成を引き起こす、パケットの数を設定できます。この手順は、5 分間隔よりも短い頻度でログ メッセージを受信する場合に実行することを推奨します。


注意    


number-of-matches 引数を 1 に設定すると、ログ メッセージはキャッシュされずにただちに送信されます。この場合、アクセス リストに一致するすべてのパケットについてログ メッセージが生成されます。大量のログ メッセージでシステムが過負荷になる可能性があるため、1 に設定することは推奨されません。


ipv4 access-list log-update threshold コマンドを使用する場合でも、5 分タイマーは有効なままなので、各キャッシュ内のメッセージ数に関係なく、5 分が経過すると各キャッシュは空になります。ログ メッセージを送信するタイミングに関係なく、しきい値が指定されていない場合と同様に、ログ メッセージのキャッシュは消去され、カウントは 0 にリセットされます。


(注)  


ログ メッセージが多すぎて処理できない場合や、1 秒以内に 2 つ以上のログ メッセージを処理した場合には、ログ メッセージ パケットの一部がドロップされることがあります。この動作により、ログを生成するパケットの数が多くなっても、ルータが CPU サイクルを過度に使用することはありません。したがって、ロギング機能は課金ツールや、アクセス リストとの一致数を正確に把握するための情報源として使用しないでください。


フラグメント制御付き拡張アクセス リスト

非フラグメント パケットとパケットの先頭フラグメントは、IP 拡張アクセス リストで処理されていましたが(このアクセス リストを適用した場合)、先頭以外のフラグメントはデフォルトで許可されていました。しかし、現在では、フラグメント制御機能付きの IP 拡張アクセス リストによって、パケットの先頭以外のフラグメントもさらにきめ細かく制御できるようになりました。この機能を使用すると、IP 拡張アクセス リストを適用するときに、パケットの先頭以外の IP フラグメントを調べるかどうかを指定できます。

先頭以外のフラグメントにはレイヤ 3 情報だけしか含まれていないので、レイヤ 3 情報のみを含んでいるアクセスリスト エントリを先頭以外のフラグメントに適用できるようになりました。フラグメントにはフィルタリングに必要な情報がすべて含まれているため、アクセスリスト エントリをパケットのフラグメントに適用できるのです。

この機能により、オプションの fragments キーワードが、IP アクセス リスト コマンドの denypermit に追加されます。アクセスリスト エントリに fragments キーワードを指定することにより、その特定のアクセスリスト エントリは、パケットの先頭以外のフラグメントにのみ適用されます。フラグメントは指定に応じて許可または拒否されます。

fragments キーワードの有無に応じたアクセスリスト エントリの動作の概要は、以下のとおりです。

アクセス リスト エントリの状態

結果

fragments キーワードがなく、すべてのアクセスリスト エントリ情報が一致する

アクセス リスト エントリにレイヤ 3 情報のみが含まれている場合:

  • エントリは、非フラグメント パケット、先頭フラグメント、先頭以外のフラグメントに適用されます。

アクセス リスト エントリにレイヤ 3 情報とレイヤ 4 情報が含まれている場合:

  • エントリは、非フラグメント パケットと先頭フラグメントに適用されます。
    • エントリが一致し、かつ permit ステートメントである場合、パケットまたはフラグメントは許可されます。

    • エントリが一致し、かつ deny ステートメントである場合、パケットまたはフラグメントは拒否されます。

  • エントリは、次の方法で先頭以外のフラグメントにも適用されます。先頭以外のフラグメントにはレイヤ 3 情報のみが含まれているため、アクセスリスト エントリのレイヤ 3 部分のみが適用されます。アクセス リスト エントリのレイヤ 3 の部分が一致し、
    • エントリが permit ステートメントである場合は、先頭以外のフラグメントが許可されます。

    • エントリが deny ステートメントの場合は、次のアクセス リスト エントリが処理されます。

    (注)     

    先頭以外のフラグメントと、非フラグメントまたは先頭フラグメントとでは、deny ステートメントの処理方法が異なります。

fragments キーワードがあり、すべてのアクセスリスト エントリ情報が一致する

アクセスリスト エントリは、先頭以外のフラグメントにのみ適用されます。

(注)     

レイヤ 4 情報を含むアクセスリスト エントリに fragments キーワードは設定できません。

すべてのアクセスリスト エントリに fragments キーワードを追加しないでください。IP パケットの先頭フラグメントは非フラグメントと見なされ、それ以降のフラグメントとは独立して扱われるためです。先頭フラグメントは、fragments キーワードが含まれているアクセス リストの permit または deny エントリとは一致しないため、パケットは次のアクセスリスト エントリと比較されます。この比較は、fragments キーワードが含まれていないアクセスリスト エントリによってパケットが許可または拒否されるまで続きます。したがって、deny エントリごとに、2 つのアクセス リスト エントリが必要になる場合があります。ペアの最初の deny エントリは fragments キーワードを含んでおらず、先頭フラグメントに適用されます。ペアの 2 番目の deny エントリは fragments キーワードを含んでおり、以降のフラグメントに適用されます。同じホストに対して複数の deny アクセスリスト エントリがあり、それぞれのレイヤ 4 ポートが異なる場合は、そのホスト用として、fragments キーワードを含む deny アクセスリスト エントリを 1 つだけ追加する必要があります。このように、パケットのすべてのフラグメントは、アクセス リストによって同様に扱われます。

IP データグラムのパケット フラグメントは個々のパケットと見なされ、各フラグメントはアクセス リスト アカウンティングとアクセス リスト違反カウントの 1 つのパケットとして個別にカウントされます。


(注)  


アクセス リストおよび IP フラグメントに関するあらゆるケースを fragments キーワードで解決できるわけではありません。



(注)  


ACL 処理の範囲内で、レイヤ 3 情報は IPv4 ヘッダー内のフィールド(送信元、宛先、プロトコルなど)を参照します。レイヤ 4 情報は、TCP または UDP の送信元ポートと宛先ポート、TCP のフラグ、ICMP のタイプとコードなど、IPv4 ヘッダーの後ろに含まれるその他のデータを参照します。


アクセス リストのエントリに関するコメント

remark アクセス リスト コンフィギュレーション コマンドを使用すると、名前付き IP アクセス リストにエントリに関するコメント(注釈)を含めることができます。コメントを含めると、ネットワーク管理者がアクセス リストを理解し、精査しやすくなります。1 つのコメント行の最大長は 255 文字です。

コメントは、permit ステートメントまたは deny ステートメントの前後どちらにでも配置できます。コメントがどの permit ステートメントまたは deny ステートメントの説明であるのかが明確になるように、コメントの位置に関して一貫性を保つようにしてください。たとえば、一部のコメントが permit または deny ステートメントの前にあり、他のコメントがステートメントの後ろにあると、混乱を招きます。コメントに順番を付けることができます。

アクセス リストの作成後、アクセス リストをインターフェイスまたは端末回線に適用することを忘れないでください。

アクセス コントロール リスト カウンタ

Cisco IOS XR ソフトウェアでは、ACL のカウンタはハードウェアとソフトウェアの両方で維持されます。ハードウェア カウンタは、アクセス グループをインターフェイスに適用するなど、パケット フィルタリングの用途に使用します。ソフトウェア カウンタは、主にソフトウェア パケット処理に関するあらゆる用途に使用できます。

パケット フィルタリングでは、ACE ごとに 32 ビットのハードウェア カウンタが使用されます。

特定のアクセス グループのハードウェア カウンタを表示するには、EXEC モードで show access-lists ipv4 [access-list-namehardware {ingress} [interfacetypeinterface-path-id] {locationnode-id}] コマンドを使用します。

ハードウェア カウンタをクリアするには、EXEC モードで clear access-list ipv4access-list-name [hardware {ingress } [interfacetype interface-path-id] {locationnode-id}] コマンドを使用します。

ソフトウェア カウンタは、ソフトウェアがパケットを処理すると更新されます。たとえば、例外パケットを LC CPU にパントして処理した場合や、ルーティング プロトコルが ACL を使用した場合などです。維持されるソフトウェア カウンタというのは、その ACL を使用するすべてのソフトウェア アプリケーションの集合体です。ソフトウェア専用の ACL カウンタを表示するには、EXEC モードで show access-lists ipv4access-list-name [sequencenumber] コマンドを使用します。