IPv6 ACL の設定
この章では、シスコの産業用イーサネットスイッチ(以降、スイッチと呼びます)での IPv6 アクセス制御リスト(ACL)の設定の詳細について説明します。
スイッチ上で IP サービスイメージが稼働している場合は、次のことができます。
■IPv6 ACL を作成して、インターフェイスに適用することによって、IPv6 トラフィックをフィルタ処理できます
■レイヤ 3 管理トラフィックをフィルタ処理するために、入力ルータ ACL を作成し、適用することができます
この章は、次の項で構成されています。
■IPv6 ACL の概要
■前提条件
■注意事項と制約事項
■デフォルト設定
■IPv6 ACL の設定
■IPv6 ACL の確認
■設定例
IPv6 ACL の概要
IP サービスイメージを実行しているスイッチは、次の 2 種類の IPv6 ACL をサポートしています。
■ルーテッドポート、スイッチ仮想インターフェイス(SVI)、またはレイヤ 3 EtherChannel に設定できるレイヤ 3 インターフェイスの送信トラフィックまたは着信トラフィックでは、IPv6 ルータ ACL。
IPv6 ルータ ACL は、ルーテッド IPv6 パケットにだけ適用されます。
■レイヤ 2 インターフェイスの着信トラフィックでのみ、IPv6 ポート ACL。スイッチは、IPv6 ポート ACL をインターフェイスに着信するすべての IPv6 パケットに対して適用します。
1 つのインターフェイスに、IPv4 ACL および IPv6 ACL の両方を適用できます。
IPv4 ACL の場合と同様に、IPv6 ポート ACL はルータ ACL よりも優先されます。
■SVI に入力ルータ ACL および入力ポート ACL が設定されている場合に、ポート ACL が適用されているポートに着信したパケットはポート ACL によってフィルタリングされます。その他のポートに着信したルーテッド IP パケットは、ルータ ACL によってフィルタリングされます。他のパケットはフィルタリングされません。
■SVI に出力ルータ ACL および入力ポート ACL が設定されている場合に、ポート ACL が適用されているポートに着信したパケットはポート ACL によってフィルタリングされます。発信ルーテッド IPv6 パケットは、ルータ ACL によってフィルタリングされます。他のパケットはフィルタリングされません。
注: いずれかのポート ACL(IPv4、IPv6、または MAC)をインターフェイスに適用した場合、そのポート ACL がパケットをフィルタ処理し、ポート VLAN の SVI に適用されたルータ ACL は無視されます。
サポートされる ACL 機能
スイッチの IPv6 ACL には、次の特性があります。
■分割フレーム(IPv4 では fragments キーワード)がサポートされます。
■IPv6 ACL では、IPv4 と同じ統計情報がサポートされます。
■スイッチのハードウェアスペースが不足している場合、ACL に対応付けられたパケットは CPU に転送され、ソフトウェアが ACL を適用します。
■ホップバイホップ オプションがあるルーテッド パケットまたはブリッジド パケットには、ソフトウェアで適用される IPv6 ACL が設定されます。
■ロギングは、ルータ ACL ではサポートされますが、ポート ACL ではサポートされません。
■スイッチは、プレフィックス長の最大範囲の IPv6 アドレス一致をサポートしません。
注: IPv6 ACL でサポートされない項目については、注意事項と制約事項を参照してください。
前提条件
機能を設定する前に、注意事項と制約事項と、設定の各項内の「はじめる前に」の項を確認してください。
注意事項と制約事項
IPv6 トラフィックの ACL は未サポート
■スイッチは、IPv6 トラフィックの Virtual LAN(VLAN)ACL(VLAN マップ)をサポートしません。
■スイッチは IPv6 フレームに MAC ベース ACL を適用しません。
■レイヤ 2 EtherChannel に IPv6 ポート ACL を適用できません。
■スイッチは出力ポート ACL をサポートしません。
Cisco IOS IPv6 ACL 機能は未サポート
■スイッチは、 flowlabel 、 routing header 、および undetermined-transport というキーワードの照合をサポートしません。
■スイッチは再起 ACL( reflect キーワード)をサポートしません。
アクセス制御エントリ(ACE)と ACL
■ACL をインターフェイスに適用し、サポートされていないキーワードを持つアクセス制御エントリ(ACE)を追加しようとする場合、スイッチは適用されている ACL に ACE が追加されるのを許可しません。
名前付き ACL の有無
■IPv6 がサポートするのは名前付き ACL だけです。
他のスイッチまたは機能との IPv6 ACL の相互作用
■パケットを拒否するように IPv6 ルータ ACL を設定すると、ソフトウェアはパケットをルーティングしません。代わりに、ソフトウェアがパケットのコピーを Internet Control Message Protocol(ICMP)キューに転送し、フレームに ICMP 到達不能メッセージが生成されます。
■ブリッジド フレームがポート ACL によってドロップされる場合、このフレームはブリッジングされません。
■IPv4 ACL および IPv6 ACL の両方を 1 つのスイッチに作成したり、同一インターフェイスに適用したりできます。
–各 ACL には一意の名前が必要です。スイッチにすでに存在する名前を使用しようとすると、エラーメッセージが表示されます。
–IPv4 ACL と IPv6 ACL の作成、および同一のレイヤ 2 インターフェイスまたはレイヤ 3 インターフェイスへの IPv4 ACL または IPv6 ACL の適用には、異なるコマンドを使用します。
ACL を付加するのに誤ったコマンドを使用すると(例えば、IPv6 ACL の付加に IPv4 コマンドを使用するなど)、エラー メッセージが表示されます。
■MAC ACL を使用して、IPv6 フレームをフィルタリングできません。MAC ACL は非 IP フレームだけをフィルタリングできます。
■ハードウェアメモリが満杯の場合、設定済みの ACL を追加すると、スイッチがパケットを CPU に転送し、ソフトウェアが ACL を適用します。
デフォルト設定
|
|
IPv6 ACL |
スイッチで設定または適用されているデフォルトの IPv6 ACL はありません。 |
IPv6 ACL の設定
このセクションは、次のトピックで構成されています。
■IPv6 ACL の作成
■インターフェイスへの IPv6 ACL の適用
はじめる前に
この機能については、注意事項と制約事項を確認してください。
いずれかのデュアル IPv4/IPv6 SDM テンプレートを選択します。
IPv6 ACL の作成
注: サポートされない IPv6 ACL を設定した場合、エラーメッセージが表示され、その設定は有効になりません。
次のコマンドの指定のアクセスリストから拒否または許可条件を削除するには、キーワードを指定して no { deny | permit } IPv6 アクセス リスト コンフィギュレーション コマンドを使用します。
手順の詳細
|
|
|
1. |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
2. |
ipv6 access-list access-list-name |
名前を使用して IPv6 アクセス リストを定義し、IPv6 アクセス リスト コンフィギュレーション モードを開始します。 |
3. a |
{ deny | permit } protocol { source-ipv6-prefix / prefix-length | any | host source-ipv6-address } [ operator [ port-number ]] { destination-ipv6-prefix/ prefix-length | any | host destination-ipv6-address } [ operator [ port-number ]] [ dscp value ] [ fragments ] [ log ] [ log-input ] [ routing ] [ sequence value ] [ time-range name ] |
指定された条件が一致した場合に、パケットを拒否または許可します。次に、条件について説明します。 ■ protocol :インターネットプロトコルの名前または番号。 ahp 、 esp 、 icmp 、 ipv6 、 pcp 、 stcp 、 tcp 、 udp 、または IPv6 プロトコル番号を表す 0 ~ 255 の整数を使用できます。ICMP、TCP、および UDP の具体的なパラメータについては、ステップ 3b ~ 3d を参照してください。 ■ source-ipv6-prefix / prefix-length または destination-ipv6-prefix / prefix-length :拒否条件または許可条件を設定する送信元または宛先 IPv6 ネットワークあるいはネットワーククラスで、コロン区切りの 16 ビット値を使用した 16 進形式で指定します。 ■IPv6 プレフィックス ::/0 の短縮形として、 any を入力します。 ■ host source-ipv6-address または destination-ipv6-address :拒否条件または許可条件を設定する送信元または宛先 IPv6 ホストアドレスを定義します。アドレスはコロン区切りの 16 ビット値を使用した 16 進形式で指定します。 ■(任意) operator :指定されたプロトコルの送信元ポートまたは宛先ポートを比較するオペランドで、 lt (より小さい)、 gt (より大きい)、 eq (等しい)、 neq (等しくない)、 range (包含範囲)などがあります。 source-ipv6-prefix / prefix-length 引数のあとの operator は、送信元ポートに一致する必要があります。 destination-ipv6- prefix/prefix-length 引数のあとの operator は、宛先ポートに一致する必要があります。 |
|
|
■(任意) port-number :0 ~ 65535 の値、または TCP または UDP ポート名。TCP ポート名は、TCP のフィルタリング時にのみ使用します。UDP ポート名は、UDP のフィルタリング時にのみ使用します。 ■(任意) dscp value :各 IPv6 パケットヘッダーの Traffic Class フィールド内のトラフィッククラス値と DiffServ コードポイント値を照合します。指定できる範囲は 0 ~ 63 です。 ■(任意) fragments :先頭ではないフラグメントを確認します。キーワードが表示されるのは、プロトコルが ipv6 の場合だけです。 ■(任意、ルータ ACL のみ) log :エントリと一致するパケットに関するロギングメッセージをコンソールに送信します log-input を指定すると、ログ エントリに入力インターフェイスが追加されます。 ■(任意) routing :IPv6 パケットのルーティングを指定します。 ■(任意) sequence value :アクセス リスト ステートメントのシーケンス番号を指定します。値の範囲は 1 ~ 4294967295 です。 ■(任意) time-range name :拒否または許可ステートメントに適用される時間の範囲を指定します。 |
ステップ 3b |
{ deny | permit } tcp { source-ipv6-prefix / prefix-length | any | host source-ipv6-address } [ operator [ port-number ]] { destination-ipv6- prefix/prefix-length | any | host destination-ipv6-address } [ operator [ port-number ]] [ ack ] [ dscp value ] [ established ] [ fin ] [ log ] [ log-input ] [ neq { port | protocol }] [ psh ] [ range { port | protocol }] [ rst ] [ routing ] [ sequence value ] [ syn ] [ time-range name ] [ urg ] |
(任意)TCP アクセス リストおよびアクセス条件を定義します。 TCP の場合は tcp を入力します。パラメータはステップ 3a で説明されているパラメータと同じですが、次に示すオプションのパラメータが追加されています。 ■ ack :確認応答(ACK)ビット セット ■ established : 確立された接続。TCP データグラムに ACK または RST ビットが設定されている場合、照合が行われます。 ■ fin : 終了ビット セット。送信元からのデータはそれ以上ありません。 ■ neq { port | protocol } :所定のポート番号上にないパケットだけを照合します。 ■ psh : プッシュ機能ビット セット ■ range { port | protocol } :ポート番号の範囲内のパケットだけを照合します。 ■ rst : リセット ビット セット ■ syn : 同期ビット セット ■ urg : 緊急ポインタ ビット セット |
ステップ 3c |
{ deny | permit } udp { source-ipv6-prefix / prefix-length | any | host source-ipv6-address } [ operator [ port-number ]] { destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address } [ operator [ port-number ]] [ dscp value ] [log ] [log-input] [ neq { port | protocol }] [ range { port | protocol }] [ routing ] [ sequence value ] [ time-range name ] |
(任意)UDP アクセス リストおよびアクセス条件を定義します。 ユーザ データグラム プロトコルの場合は、 udp を入力します。UDP パラメータは TCP に関して説明されているパラメータと同じです。ただし、[ operator [ port ]] のポート番号またはポート名は、UDP ポートの番号または名前でなければなりません。UDP の場合、 established パラメータは無効です。 |
ステップ 3d |
{ deny | permit } icmp { source-ipv6-prefix / prefix-length | any | host source-ipv6-address } [ operator [ port-number ]] { destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address } [ operator [ port-number ]] [ icmp-type [ icmp-code ] | icmp-message ] [ dscp value ] [ log ] [ log-input ] [ routing ] [ sequence value ] [ time-range name ] |
(任意)ICMP アクセス リストおよびアクセス条件を定義します。 インターネット制御メッセージ プロトコルの場合は、 icmp を入力します。ICMP パラメータはステップ 3a の IP プロトコルの説明にあるパラメータとほとんど同じですが、ICMP メッセージ タイプおよびコード パラメータが追加されています。オプションのキーワードの意味は次のとおりです。 ■ icmp-type :ICMP メッセージ タイプでフィルタリングする場合に入力します。指定できる値の範囲は、0 ~ 255 です。 ■ icmp-code :ICMP パケットを ICMP メッセージ コード タイプでフィルタリングする場合に入力します。指定できる値の範囲は、0 ~ 255 です。 ■ icmp-message :ICMP パケットを ICMP メッセージ タイプ名または ICMP メッセージ タイプとコード名でフィルタリングする場合に入力します。ICMP メッセージのタイプ名およびコード名のリストについては、? キーを使用してください。 |
4. |
end |
特権 EXEC モードに戻ります。 |
5. |
show ipv6 access-list |
アクセス リストの設定を確認します。 |
6. |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
例
次に例を示します。
■CISCO という名前の IPv6 ACL を作成します。
■宛先 TCP ポート番号が 5000 より大きいすべてのパケットを拒否する 1 つ目の拒否エントリと、送信元 UDP ポート番号が 5000 未満のパケットを拒否する 2 つ目の拒否エントリを定義します。2 番目の拒否エントリは、コンソールにもすべての一致を記録します。
■すべての ICMP パケットを許可する許可エントリと、他のすべてのトラフィックを許可する別の許可エントリを定義します。すべてのパケットを拒否する暗黙の条件が各 IPv6 アクセス リストの末尾にあるため、この 2 番めの許可エントリが必要となります。
Switch(config)# ipv6 access-list CISCO
Switch(config-ipv6-acl)# deny tcp any any gt 5000
Switch config-ipv6-acl)# deny ::/0 lt 5000 ::/0 log
Switch(config-ipv6-acl)# permit icmp any any
Switch(config-ipv6-acl)# permit any any
手順の詳細
|
|
|
1. |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
2. |
interface interface-id |
アクセス リストを適用するレイヤ 2 インターフェイス(ポート ACL 用)またはレイヤ 3 インターフェイス(ルータ ACL 用)を特定して、インターフェイス コンフィギュレーション モードを開始します。 |
3. |
no switchport |
ルータ ACL を適用する場合は、インターフェイスをレイヤ 2 モード(デフォルト)からレイヤ 3 モードに変更します。 |
4. |
ipv6 address ipv6-address |
レイヤ 3 インターフェイス(ルータ ACL 用)で IPv6 アドレスを設定します。 注: このコマンドは、レイヤ 2 インターフェイスでは、またはインターフェイスに明示的な IPv6 アドレスが設定されている場合には、必要ありません。 インターフェイスからアクセス リストを削除するには、 no ipv6 traffic-filter access-list-name インターフェイス コンフィギュレーション コマンドを使用します。 |
5. |
ipv6 traffic-filter access-list-name { in | out } |
インターフェイスの着信トラフィックまたは発信トラフィックにアクセス リストを適用します。 注: out キーワードはレイヤ 2 インターフェイス(ポート ACL)ではサポートされません。 |
6. |
end |
特権 EXEC モードに戻ります。 |
7. |
show running-config |
アクセス リストの設定を確認します。 |
8. |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
例
次に、レイヤ 3 インターフェイスの発信トラフィックに対して、アクセスリスト CISCO を適用する例を示します。
Switch(config)# interface gigabitethernet 0/3
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001::/64 eui-64
Switch(config-if)# ipv6 traffic-filter CISCO out
IPv6 ACL の確認
1 つまたは複数の次の特権 EXEC コマンドを使用して、設定済みのすべてのアクセスリスト、すべての IPv6 アクセスリスト、または特定のアクセスリストに関する情報を表示できます。
|
|
show access-lists |
スイッチに設定されたすべてのアクセス リストを表示します。 |
show ipv6 access-list [ access-list-name ] |
設定済みのすべての IPv6 アクセス リストまたは名前付けされたアクセス リストを表示します。 |
設定例
次に例を示します。
■CISCO という名前の IPv6 ACL を作成します。
■宛先 TCP ポート番号が 5000 より大きいすべてのパケットを拒否する 1 つ目の拒否エントリと、送信元 UDP ポート番号が 5000 未満のパケットを拒否する 2 つ目の拒否エントリを定義します。2 番目の拒否エントリは、コンソールにもすべての一致を記録します。
■すべての ICMP パケットを許可する許可エントリと、他のすべてのトラフィックを許可する別の許可エントリを定義します。すべてのパケットを拒否する暗黙の条件が各 IPv6 アクセス リストの末尾にあるため、この 2 番めの許可エントリが必要となります。
■レイヤ 3 インターフェイスの発信トラフィックに対して、アクセスリスト CISCO を適用します。
Switch(config)# ipv6 access-list CISCO
Switch(config-ipv6-acl)# deny tcp any any gt 5000
Switch config-ipv6-acl)# deny ::/0 lt 5000 ::/0 log
Switch(config-ipv6-acl)# permit icmp any any
Switch(config-ipv6-acl)# permit any any
Switch(config-ipv6-acl)# exit
Switch(config)# interface gigabitethernet 0/3
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001::/64 eui-64
Switch(config-if)# ipv6 traffic-filter CISCO out