トラフィック制御 / ハードウェアパケットフィルター
ハードウェアパケットフィルターは、本製品のスイッチングチップ(ASIC)でパケットフィルタリングを行う機能です。ハードウェアパケットフィルターの処理は、スイッチングチップのL2入力部で行われます。そのため、ルーティングされないトラフィック(同一VLAN内のトラフィック)に対してもフィルタリングが可能です。
パケットのフィルタリング条件には、以下の各項目を使用できます。
- Ethernetヘッダー
- 送信元MACアドレス
- 宛先MACアドレス
- 送信元MACアドレス
- IPヘッダー
- 始点IPアドレス
- 終点IPアドレス
- 上位プロトコル(IPすべて、TCP、UDP、ICMP、任意のプロトコルタイプ)
- 始点IPアドレス
- IPv6ヘッダー
- 始点IPv6アドレス
- 終点IPv6アドレス
- 上位プロトコル(IPv6すべて、TCP、UDP、ICMPv6、任意のプロトコルタイプ)
- 始点IPv6アドレス
- TCP/UDPヘッダー
- 始点ポート番号
- 終点ポート番号
- 始点ポート番号
- ICMP/ICMPv6ヘッダー
- メッセージタイプ
- メッセージタイプ
- 入力VLAN
条件に一致したパケットに対しては、以下の処理(アクション)が可能です。アクションは最初に一致したフィルターエントリー(ハードウェアアクセスリスト)で適用されます。どのエントリーにも一致しなかったパケットは通常どおり転送処理されます。
- 通常転送(permit)
- 破棄(deny)
- 通常転送 + CPUにコピー(copy-to-cpu)
- 破棄 + CPUにコピー(send-to-cpu)
- 通常転送 + ミラーポートにコピー(copy-to-mirror)
- 指定したポート(および所属VLAN)に転送(send-to-vlan-port)
フィルタリング条件と処理内容は、ハードウェアアクセスリストによって定義します。ハードウェアアクセスリストの概要と作成方法については「トラフィック制御」の「アクセスリスト」をご覧ください。
基本動作
ハードウェアパケットフィルターの基本動作について説明します。フィルターの構成
ハードウェアパケットフィルターは、複数のフィルターエントリーで構成されるリストです。個々のフィルターエントリーは、ハードウェアIPアクセスリストかハードウェアMACアクセスリスト、あるいは、ハードウェアアクセスリスト(シーケンス番号対応)、ハードウェアIPv6アクセスリスト(シーケンス番号対応)内の各エントリーです。フィルター処理の流れ
ハードウェアパケットフィルターの処理は、おおむね次の手順にしたがって行われます。- 受信スイッチポートにハードウェアパケットフィルター(インターフェース・ハードウェアパケットフィルター)が適用されている場合、受信パケットとアクセスリストの条件を、スイッチポートにアクセスリストを関連付けた順序で照合します。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します(手順2には進まない)。
- 受信スイッチポート上に一致するアクセスリストがなかった場合は手順2に進みます。また、受信スイッチポートにハードウェアパケットフィルターが適用されていない場合も同様です。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します(手順2には進まない)。
- 指定したVLANにハードウェアパケットフィルターが適用されている場合、受信パケットとアクセスリストの条件を、指定したVLANにアクセスリストを関連付けた順序で照合します。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します。
- 指定したVLANに一致するアクセスリストがなかった場合は手順3に進みます。また、指定したVLANにハードウェアパケットフィルターが適用されていない場合も同様です。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します。
- スイッチ全体にハードウェアパケットフィルター(グローバル・ハードウェアパケットフィルター)が適用されている場合、受信パケットとアクセスリストの条件を、スイッチ全体にアクセスリストを関連付けた順序で照合します。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します。
- スイッチ全体に一致するアクセスリストがなかった場合はハードウェアパケットフィルターの処理を完了し、通常どおりパケットの転送処理を実行します。また、スイッチ全体にハードウェアパケットフィルターが適用されていない場合も同様です。
- いずれかのアクセスリストにおいて条件が一致した場合は、その場でアクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了します。
次に、インターフェース・ハードウェアパケットフィルター、VLANハードウェアパケットフィルター、グローバル・ハードウェアパケットフィルターと、ポリシーマップによるQoS機能の処理順序を示します。

設定手順
ハードウェアパケットフィルターの設定は、次の流れで行います。- ハードウェアアクセスリストを作成。これには下記のコマンドを使います。
- IP: access-list(hardware ip)コマンド
- MAC: access-list(hardware mac)コマンド
- IP/MAC: access-list hardware(list)/access-list hardware(seq entry)コマンド
- IPv6: ipv6 access-list(list)/ipv6 access-list(seq entry)コマンド
- IP: access-list(hardware ip)コマンド
- 受信スイッチポート、スイッチ全体、指定VLANのいずれかにアクセスリストを追加
特定のスイッチポートにアクセスリスト(IP、MAC、IP/MAC)を追加するときは、インターフェースモードのaccess-groupコマンドを、スイッチ全体に追加するときはグローバルコンフィグモードのaccess-groupコマンドを使います。
特定のスイッチポートにアクセスリスト(IPv6)を追加するときは、インターフェースモードのipv6 traffic-filterコマンドを、スイッチ全体に追加するときはグローバルコンフィグモードのipv6 traffic-filterコマンドを使います。
指定したVLANにアクセスリストを追加するときは、VLANアクセスマップモードのmatch access-groupコマンドを使います。
以下、各手順について詳しく解説します。
ここでは例として、スイッチポート1.0.12において、ホスト192.168.100.38からサーバー192.168.10.5と192.168.10.11宛てのIPパケットと、ネットワーク2001:db8:10:20::/64からのIPv6パケットを遮断するよう設定します。
そして、スイッチ全体(すべてのポート)において、ネットワーク10.255.255.0/24宛てのIPパケットとネットワーク2001:db8:10:ffff::/64からのIPv6パケットを遮断するよう設定します。
また、VLAN200のタグポートで受信したパケットのうち、サーバー192.168.10.5宛てのIPパケットを遮断するよう設定します。
- ハードウェアIPアクセスリストを作成し、IPパケットの条件とマッチしたときの処理を指定します。これにはaccess-list(hardware ip)コマンドを使います。
awplus(config)# access-list 3000 deny ip 192.168.100.38/32 192.168.10.5/32 awplus(config)# access-list 3001 deny ip 192.168.100.38/32 192.168.10.11/32 awplus(config)# access-list 3002 deny ip any 192.168.10.5/32 awplus(config)# access-list 3101 deny ip any 10.255.255.0/24
- ハードウェアIPv6アクセスリストを作成し、IPv6パケットの条件とマッチしたときの処理を指定します。これにはipv6 access-list(list)コマンドとipv6 access-list(seq entry)コマンドを使います。
awplus(config)# ipv6 access-list v6acl1 awplus(config-ipv6-hw-acl)# deny ipv6 2001:db8:10:20::/64 any awplus(config-ipv6-hw-acl)# exit awplus(config)# ipv6 access-list v6acl2 awplus(config-ipv6-hw-acl)# deny ipv6 2001:db8:10:ffff::/64 any awplus(config-ipv6-hw-acl)# exit
- 受信スイッチポートにハードウェアアクセスリストを追加します。interfaceコマンドで対象スイッチポートを指定してインターフェースモードに入り、access-groupコマンドで関連付けるハードウェアIPアクセスリストを指定します。
また、ipv6 traffic-filterコマンドでハードウェアIPv6アクセスリストを指定します。
awplus(config)# interface port1.0.12 awplus(config-if)# access-group 3000 awplus(config-if)# access-group 3001 awplus(config-if)# ipv6 traffic-filter v6acl1 awplus(config-if)# exit
- スイッチ全体にハードウェアアクセスリストを追加します。これには、グローバルコンフィグモードのaccess-groupコマンドとipv6 traffic-filterコマンドを使います。
awplus(config)# access-group 3101 awplus(config)# ipv6 traffic-filter v6acl2
- VLANインターフェースにハードウェアアクセスリストを追加します。これには、vlan access-mapコマンドでVLANアクセスマップモードに入り、ハードウェアアクセスリストを指定します。そしてvlan filterコマンドによりVLANアクセスマップを適用します。
awplus(config)# vlan access-map test awplus(config-vmap)# match access-group 3002 awplus(config-vmap)# exit awplus(config)# vlan filter test vlan-list 200 input
基本設定は以上です。
トランクグループにハードウェアパケットフィルターを適用するときは、次の点にご注意ください。
- スタティックチャンネルグループ(手動設定のトランクグループ)の場合は、インターフェース名「saX」(Xはスタティックチャンネルグループ番号)に対してアクセスリストを設定します。たとえば、スタティックチャンネルグループ「1」にハードウェアIPアクセスリスト3010を適用するには、次のようにします。
awplus(config)# interface sa1 awplus(config-if)# access-group 3010
スタティックチャンネルグループのメンバーポートに対してアクセスリストを適用することはできないので注意してください。
awplus(config)# interface port1.0.12 awplus(config-if)# access-group 3010 % ACL cannot be attached to an interface that is a member of a static-channel-group. Try attaching the ACL to "sa" interface.
- LACPチャンネルグループ(自動設定のトランクグループ)の場合は、該当グループに所属しているすべてのスイッチポートに対してアクセスリストを設定します。たとえば、スイッチポート1.0.1~1.0.10からなるLACPチャンネルグループ「1」にハードウェアIPアクセスリスト3020を適用するには、次のようにしてください。
awplus(config)# interface port1.0.1-1.0.10 awplus(config-if)# access-group 3020
インターフェース名「poX」(XはLACPチャンネルグループ番号)に対してアクセスリストを適用することはできないので注意してください。
awplus(config)# interface po1 awplus(config-if)# access-group 3020 % ACL cannot be attached to a dynamic aggregator interface.
コマンド例
次に具体的なコマンド例を示します。ポート1.0.1において、192.168.10.100から192.168.20.0/24へのIPパケットを破棄。
awplus(config)# access-list 3010 deny ip 192.168.10.100/32 192.168.20.0/24 awplus(config)# interface port1.0.1 awplus(config-if)# access-group 3010
ポート1.0.2~1.0.4において、10.0.0.0/8からのICMPパケットを破棄。
awplus(config)# access-list 3020 deny icmp 10.0.0.0/8 any awplus(config)# interface port1.0.2-1.0.4 awplus(config-if)# access-group 3020
ポート1.0.5において、MACアドレス00-0a-79-34-0b-00~00-0a-79-34-0b-ffからのパケットだけを許可。
awplus(config)# access-list 4010 permit 000a.7934.0b00 0000.0000.00ff any awplus(config)# access-list 4011 deny any any awplus(config)# interface port1.0.5 awplus(config-if)# access-group 4010 awplus(config-if)# access-group 4011
ポート1.0.8において、192.168.30.100へのtelnetパケットを破棄。
awplus(config)# access-list 3030 deny tcp any 192.168.30.100/32 eq 23 awplus(config)# interface port1.0.8 awplus(config-if)# access-group 3030
スイッチ全体(すべてのポート)において、終点ポート番号が60000以上のTCPパケットとUDPパケットを破棄。
awplus(config)# access-list 3035 deny tcp any any gt 59999 awplus(config)# access-list 3036 deny udp any any gt 59999 awplus(config)# access-group 3035 awplus(config)# access-group 3036
ハードウェアパケットフィルターは、同一サブネット内のトラフィックに対しても有効です。そのため、「192.168.10.0/24の存在するポート1.0.1~1.0.12において、192.168.10.0/24から他のサブネットへのIP通信を拒否」するつもりで次のような設定を行うと、192.168.10.0/24内でもIP通信ができなくなってしまいます。
awplus(config)# access-list 3041 deny ip 192.168.10.0/24 any awplus(config)# interface port1.0.1-1.0.12 awplus(config-if)# access-group 3041
このような場合は、次の例のように「始点IPアドレスと終点IPアドレスが同一サブネットなら許可」というアクセスリストを拒否のアクセスリストの前に追加してください。
awplus(config)# access-list 3040 permit ip 192.168.10.0/24 192.168.10.0/24 awplus(config)# access-list 3041 deny ip 192.168.10.0/24 any awplus(config)# interface port1.0.1-1.0.12 awplus(config-if)# access-group 3040 awplus(config-if)# access-group 3041
どのスイッチポートにハードウェアパケットフィルターが適用されているかを調べるには、show interface access-groupコマンドを使います。
awplus> show interface port1.0.1-1.0.12 access-group
Interface port1.0.12
access-group 3000
access-group 3001
アクセスリストの情報を表示するには、show access-listコマンドを使います。
awplus# show access-list
スイッチポートからハードウェアパケットフィルターを削除するには、該当ポートを対象にしたインターフェースモードにおいて、access-groupコマンド、ipv6 traffic-filterコマンドをno形式で実行します。
awplus(config)# interface port1.0.1-1.0.12 awplus(config-if)# no access-group 3041 awplus(config-if)# no access-group 3040 awplus(config-if)# no ipv6 traffic-filter v6acl1
スイッチ全体からハードウェアパケットフィルターを削除するには、グローバルコンフィグモードにおいて、access-groupコマンド、ipv6 traffic-filterコマンドをno形式で実行します。
awplus(config)# no access-group 3035 awplus(config)# no access-group 3036 awplus(config)# no ipv6 traffic-filter v6acl2
シーケンス番号を利用した設定例
シーケンス番号での設定は、既存のフィルターに新たなエントリーを追加したいとき、頻繁にフィルターを変更する必要がある環境において有効な設定方法です。シーケンス番号を使用していないハードウェアパケットフィルターは、新規ルールを追加するときに、追加したエントリーの順序まで設定されていたエントリーを削除する必要がありましたが、シーケンス番号を使用することで、エントリーを削除することなく、必要とする順序に新たなエントリーが追加できます。
シーケンス番号でのハードウェアパケットフィルターの処理は、次の手順に従って行われます。
- シーケンス番号で作成したアクセスリストにおいて、条件が一致した場合、アクセスリストのアクション(転送、破棄など)を実行し、ハードウェアパケットフィルターの処理を完了する
- フィルターのマッチは、シーケンス番号の若い順で行う
- シーケンス番号で作成したアクセスリストを、アクセスグループとして複数を設定した場合、最初に設定したアクセスグループのシーケンス番号のフィルターがマッチされ、マッチするものが無ければ、次にアクセスグループのシーケンス番号の若い順という順序で行う
- それ以外は、基本動作の処理と変わらない
以下にシーケンス番号を利用した具体的な設定例を示します。
シーケンス番号での設定は、access-list hardware(list)コマンド、access-list hardware(seq entry)コマンドを使用します。
ここでは例として、以下の条件で設定例を示します。
- スイッチポート1.0.1において、192.168.100.0/24に所属するホストからネットワーク192.168.10.0/24、192.168.20.0/24と192.168.30.0/24へのIPパケットを遮断するよう設定する
- スイッチポート1.0.1において、192.168100.0/24に所属するホストから192.168.20.10のみTCP 80(HTTP)を許可するよう設定する
- スイッチポート1.0.1において、192.168.100.0/24に所属するホストからネットワーク192.168.30.0/24のIPパケットを遮断するエントリーを削除する
- スイッチポート1.0.1において、エントリーの順序を変更する
- 装置を再起動する
ポート1.0.1において、192.168.100.0/24に所属するホストから192.168.10.0/24、192.168.20.0/24と192.168.30.0/24へのIPパケットを破棄するよう設定します。
awplus(config)# access-list hardware mylist awplus(config-ip-hw-acl)# deny ip 192.168.100.0/24 192.168.10.0/24 awplus(config-ip-hw-acl)# deny ip 192.168.100.0/24 192.168.20.0/24 awplus(config-ip-hw-acl)# deny ip 192.168.100.0/24 192.168.30.0/24 awplus(config-ip-hw-acl)# exit awplus(config)# interface port1.0.1 awplus(config-if)# access-group mylist
ポート1.0.1において、192.168.100.0/24から192.168.20.10/32へのTCP 80(HTTP)のアクセスのみを許可するエントリーを追加します。このエントリーは、192.168.100.0/24に所属するホストから192.168.20.0/24へのIPパケットは破棄と設定しているため、それより前にエントリーを設定する必要があります。そのためには、まず、現在設定されているシーケンス番号を確認します。シーケンス番号を確認するには、show access-listコマンドを使います。
awplus# show access-list mylist Hardware IP access list mylist 4 deny ip 192.168.100.0/24 192.168.10.0/24 8 deny ip 192.168.100.0/24 192.168.20.0/24 12 deny ip 192.168.100.0/24 192.168.30.0/24 awplus#
TCP 80へのアクセス許可は、8より前のシーケンス番号のエントリーを入れる必要があります。例として、シーケンス番号6で登録します。
awplus(config)# access-list hardware mylist % This access-list is attached to an interface. The modified configuration will be applied to the interface automatically after exiting this configration mode by entering "exit" or "end" command. awplus(config-ip-hw-acl)# 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 awplus(config-ip-hw-acl)# exit awplus(config)#
show access-listコマンドで設定が反映されていることを確認します。
awplus# show access-list mylist Hardware IP access list mylist 4 deny ip 192.168.100.0/24 192.168.10.0/24 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 8 deny ip 192.168.100.0/24 192.168.20.0/24 12 deny ip 192.168.100.0/24 192.168.30.0/24 awplus#
ポート1.0.1において、192.168.100.0/24に所属するホストから192.168.30.0/24へのIPパケットを破棄するフィルターを削除します。
エントリーの削除は、access-list hardware(seq entry)コマンドのno形式でシーケンス番号のみを指定することで削除できます。
awplus(config)# access-list hardware mylist % This access-list is attached to an interface. The modified configuration will be applied to the interface automatically after exiting this configration mode by entering "exit" or "end" command. awplus(config-ip-hw-acl)# no 12 awplus(config-ip-hw-acl)# exit awplus(config)#
また、シーケンス番号を指定せず、フィルターをそのまま指定しても、エントリーを削除できます。
awplus(config)# access-list hardware mylist % This access-list is attached to an interface. The modified configuration will be applied to the interface automatically after exiting this configration mode by entering "exit" or "end" command. awplus(config-ip-hw-acl)# no deny ip 192.168.100.0/24 192.168.30.0/24 awplus(config-ip-hw-acl)# exit awplus(config)#
show access-listコマンドで設定が反映されていることを確認します。
awplus# show access-list mylist Hardware IP access list mylist 4 deny ip 192.168.100.0/24 192.168.10.0/24 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 8 deny ip 192.168.100.0/24 192.168.20.0/24 awplus#
ポート1.0.1において、192.168.100.0/24に所属するホストから192.168.10.0/24へのIPパケットを破棄するエントリーの場所を移動します。
show access-listコマンドで設定内容を確認します。
awplus# show access-list mylist Hardware IP access list mylist 4 deny ip 192.168.100.0/24 192.168.10.0/24 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 8 deny ip 192.168.100.0/24 192.168.20.0/24 awplus#
シーケンス番号4であることを確認し、192.168.100.0/24に所属するホストから192.168.20.0/24へのIPパケットを破棄するエントリーの前にエントリーを移動します。
awplus(config)# access-list hardware mylist % This access-list is attached to an interface. The modified configuration will be applied to the interface automatically after exiting this configration mode by entering "exit" or "end" command. awplus(config-ip-hw-acl)# 7 deny ip 192.168.100.0/24 192.168.10.0/24 awplus(config-ip-hw-acl)# exit awplus(config)#
show access-listコマンドで設定が反映されていることを確認します。
awplus# show access-list mylist Hardware IP access list mylist 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 7 deny ip 192.168.100.0/24 192.168.10.0/24 8 deny ip 192.168.100.0/24 192.168.20.0/24 awplus#
設定を保存後に機器を再起動します。
機器を再起動したとき、設定したシーケンス番号は4ステップに変換されます。(フィルター順序は変わりません)
設定後
awplus# show access-list mylist Hardware IP access list mylist 6 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 7 deny ip 192.168.100.0/24 192.168.10.0/24 8 deny ip 192.168.100.0/24 192.168.20.0/24 awplus#
再起動後
awplus# show access-list mylist Hardware IP access list mylist 4 permit tcp 192.168.100.0/24 192.168.20.10/32 eq 80 8 deny ip 192.168.100.0/24 192.168.10.0/24 12 deny ip 192.168.100.0/24 192.168.20.0/24 awplus#