ダイナミック ARP インスペクションの概要
ARP は、IP アドレスを MAC アドレスにマッピングすることにより、レイヤ 2 ブロードキャスト ドメイン内での IP 通信を可能にします。たとえば、ホスト B はホスト A に情報を送信する必要がありますが、ARP キャッシュにホスト A の MAC アドレスを持っていないとします。ホスト B は、ホスト A の IP アドレスと関連付けられた MAC アドレスを取得するために、このブロードキャスト ドメインにあるホストすべてに対してブロードキャスト メッセージを生成します。このブロードキャスト ドメイン内のホストはすべて ARP 要求を受信し、ホスト A は MAC アドレスで応答します。しかし、ARP は、ARP 要求が受信されなった場合でも、ホストからの余分な応答を許可するため、ARP スプーフィング攻撃や ARP キャッシュのポイズニングが発生することがあります。攻撃後、攻撃を受けたデバイスからのトラフィックはすべて、攻撃者のコンピュータを経由して、ルータ、スイッチ、またはホストにフローします。
悪意のあるユーザは、サブネットに接続されているシステムの ARP キャッシュをポイズニングし、このサブネット上の他のホストを目的とするトラフィックを代行受信することにより、レイヤ 2 ネットワークに接続されているホスト、スイッチ、およびルータを攻撃することができます。図 22-1 に、ARP キャッシュ ポイズニングの例を示します。
図 22-1 ARP キャッシュ ポイズニング
ホスト A、B、および C は、インターフェイス A、B、および C 上にあるスイッチに接続されています。これらはすべて同一のサブネット上にあります。カッコ内に示されているのは、これらの IP アドレス、および MAC アドレスです。たとえば、ホスト A が使用する IP アドレスは IA、MAC アドレスは MA です。ホスト A が IP レイヤにあるホスト B と通信する必要がある場合、ホスト A は IP アドレス IB と関連付けられている MAC アドレスに ARP 要求をブロードキャストします。スイッチとホスト B は、この ARP 要求を受信すると、IP アドレスが IA で、MAC アドレスが MA のホストに対する ARP バインディングを ARP キャッシュに読み込みます。たとえば、IP アドレス IA は、MAC アドレス MA にバインドされています。ホスト B が応答すると、スイッチ、およびホスト A は、IP アドレスが IB で、MAC アドレスが MB のホストに対するバインディングを ARP に読み込みます。
ホスト C は、IP アドレスが IA(または IB)で、MAC アドレスが MC のホストに対するバインディングを持つ偽造 ARP 応答をブロードキャストすることにより、スイッチ、ホスト A、およびホスト B の ARP キャッシュをポイズニングすることができます。ポイズニングされた ARP キャッシュを持つホストは、IA または IB を対象としたトラフィックに対する宛先 MAC アドレスとして、MAC アドレス MC を使用します。つまり、このトラフィックは、ホスト C により代行受信されます。ホスト C は IA および IB に関連付けられた正しい MAC アドレスを知っているため、正しい MAC アドレスを宛先として使用して、代行受信したトラフィックをこれらのホストに転送することができます。ホスト C は自身をホスト A からホスト B へのトラフィック ストリームに挿入します。おなじみの 中間者 攻撃です。
ダイナミック ARP インスペクションは、ネットワーク内の ARP パケットの正当性を確認するセキュリティ機能です。不正な IP/MAC アドレス バインディングを持つ ARP パケットを代行受信し、ログに記録して、廃棄します。この機能により、ネットワークをある種の中間者攻撃から保護することができます。
ダイナミック ARP インスペクションにより、有効な ARP 要求と応答だけが確実にリレーされるようになります。スイッチが実行する機能は次のとおりです。
• 信頼できないポートで ARP 要求および応答をすべて代行受信します。
• ローカル ARP キャッシュを更新する前、または適切な宛先にパケットを転送する前に、代行受信したパケットがそれぞれ、有効な IP/MAC アドレス バインディングを持つかどうかを検証します。
• 無効な ARP パケットをドロップします。
ダイナミック ARP インスペクションは、信頼できるデータベースである DHCP スヌーピング バインディング データベースに格納されている有効な IP/MAC アドレス バインディングに基づいて、ARP パケットの正当性を判断します。このデータベースは、VLAN およびスイッチ上で DHCP スヌーピングがイネーブルになっている場合に、DHCP スヌーピングにより構築されます。信頼できるインターフェイスで ARP パケットが受信されると、スイッチは何もチェックせずに、このパケットを転送します。信頼できないインターフェイスでは、スイッチはこのパケットが有効である場合だけ、このパケットを転送します。
ip arp inspection vlan vlan-range グローバル コンフィギュレーション コマンドを使用して、VLAN ごとにダイナミック ARP インスペクションをイネーブルにすることができます。設定情報については、「DHCP 環境でのダイナミック ARP インスペクションの設定」を参照してください。
非 DHCP 環境では、ダイナミック ARP インスペクションは、静的に設定された IP アドレスを持つホストに対するユーザ設定の ARP Access Control List(ACL; アクセス コントロール リスト)と照らし合わせて、ARP パケットの正当性を確認することができます。ARP ACL を定義するには、 arp access-list acl-name グローバル コンフィギュレーション コマンドを使用します。設定情報については、「非 DHCP 環境での ARP ACL の設定」を参照してください。スイッチはドロップされたパケットをログに記録します。ログ バッファの詳細については、「ドロップされたパケットのロギング」を参照してください。
パケットの IP アドレスが無効である場合、または ARP パケットの本文にある MAC アドレスが、イーサネット ヘッダーで指定されたアドレスと一致しない場合、ARP パケットをドロップするようにダイナミック ARP インスペクションを設定することができます。このためには、 ip arp inspection validate { [ src-mac ] [ dst-mac ] [ ip ]} グローバル コンフィギュレーション コマンドを使用します。詳細については、「確認検査の実行」を参照してください。
インターフェイスの信頼状態とネットワーク セキュリティ
ダイナミック ARP インスペクションは、スイッチの各インターフェイスに信頼状態を関連付けます。信頼できるインターフェイスに到着するパケットは、ダイナミック ARP インスペクションの確認検査をすべてバイパスし、信頼できないインターフェイスに到着するパケットには、ダイナミック ARP インスペクションの検証プロセスを受けます。
一般的なネットワーク構成では、ホスト ポートに接続されているスイッチ ポートすべてを信頼できないものに設定し、スイッチに接続されているスイッチ ポートすべてを信頼できるものに設定します。この構成では、指定されたスイッチからネットワークに入ってくる ARP パケットはすべて、セキュリティ チェックをバイパスします。VLAN またはネットワークの他の部分では、その他の検証を行う必要はありません。信頼設定は、 ip arp inspection trust インターフェイス コンフィギュレーション コマンドを使用して行います。
注意 信頼状態のコンフィギュレーションは慎重に使用します。インターフェイスを信頼できるものとして設定すべきときに、信頼できないものとして設定すると、接続が失われます。
図 22-2 では、スイッチ A とスイッチ B の両方が、ホスト 1 とホスト 2 を含む VLAN でダイナミック ARP インスペクションを実行しているとします。ホスト 1 とホスト 2 が、スイッチ A に接続している DHCP サーバから IP アドレスを取得している場合、スイッチ A だけが、ホスト 1 の IP/MAC アドレスをバインディングします。したがって、スイッチ A とスイッチ B の間のインターフェイスが信頼できない場合、ホスト 1 からの ARP パケットは、スイッチ B によりドロップされます。ホスト 1 とホスト 2 の間の接続は失われます。
図 22-2 ダイナミック ARP インスペクションのためにイネーブルにされた VLAN 上の ARP パケット検証
実際は信頼できないインターフェイスを信頼できるものとして設定すると、ネットワークにセキュリティ ホールが残ります。スイッチ A でダイナミック ARP インスペクションが実行されていない場合、ホスト 1 はスイッチ B の ARP キャッシュを簡単にポイズニングできます(および、これらのスイッチの間のリンクが信頼できるものとして設定されている場合はホスト 2)。この状況は、スイッチ B がダイナミック ARP インスペクションを実行している場合でも発生します。
ダイナミック ARP インスペクションは、ダイナミック ARP インスペクションを実行しているスイッチに接続された(信頼できないインターフェイス上の)ホストが、そのネットワークにあるその他のホストの ARP キャッシュをポイズニングしていないことを保証します。しかし、ダイナミック ARP インスペクションにより、ネットワークの他の部分にあるホストが、ダイナミック ARP インスペクションを実行しているスイッチに接続されているホストのキャッシュをポイズニングできないようにすることはできません。
VLAN のスイッチの一部がダイナミック ARP インスペクションを実行し、残りのスイッチは実行していない場合、このようなスイッチに接続しているインターフェイスは信頼できないものとして設定します。ただし、非ダイナミック ARP インスペクションスイッチからパケットのバインディングを検証するには、ARP ACL を使用して、ダイナミック ARP インスペクションを実行するスイッチを設定します。このようなバインディングが判断できない場合は、レイヤ 3 で、ダイナミック ARP インスペクション スイッチを実行していないスイッチから、ダイナミック ARP インスペクションを実行しているスイッチを分離します。設定情報については、「非 DHCP 環境での ARP ACL の設定」を参照してください。
(注) DHCP サーバとネットワークの設定によっては、VLAN 上のすべてのスイッチで指定された ARP パケットを検証できない可能性があります。
ARP パケットのレート制限
スイッチの CPU は、ダイナミック ARP インスペクション確認検査を実行します。したがって、DoS 攻撃を阻止するために、着信 ARP パケット数はレート制限されます。デフォルトでは、信頼できないインターフェイスの比率は 1 秒あたり 15 パケット(15 pps)です。信頼できるインターフェイスはレート制限されません。この設定は、 ip arp inspection limit インターフェイス コンフィギュレーション コマンドを使用して変更することができます。
着信 ARP パケットのレートが設定された制限を超えると、スイッチはポートを errdisable ステートにします。ユーザが介入するまで、ポートはそのステートのままです。errordisable 回復をイネーブルにして、指定されたタイムアウト時間の後にポートがこのステートから自動的に抜け出すようにするには、 errdisable recovery グローバル コンフィギュレーション コマンドを使用します。
(注) EtherChannel のレート制限は、スタックにある各スイッチに個別に適用されます。たとえば、EtherChannel で 20 pps の制限が設定されている場合、EtherChannel にあるポートの各スイッチでは、最大 20 pps まで実行できます。スイッチが制限を超過した場合、EtherChannel 全体が errdisable ステートになります。
設定情報については、「着信 ARP パケットのレート制限」を参照してください。
ARP ACL および DHCP スヌーピング エントリの相対的な優先順位
ダイナミック ARP インスペクションでは、有効な IP/MAC アドレス バインディングのリストとして、DHCP スヌーピング バインディング データベースが使用されます。
ARP ACL は、DHCP スヌーピング バインディング データベースのエントリよりも優先されます。スイッチが ACL を使用するのは、ACL が ip arp inspection filter vlan グローバル コンフィギュレーション コマンドを使用して作成されている場合だけです。スイッチは、まず、ARP パケットをユーザ設定の ARP ACL と比較します。DHCP スヌーピングによりデータが入力されたデータベースに有効なバインディングが存在していても、ARP ACL が ARP パケットを拒否する場合、スイッチもこのパケットを拒否します。
ドロップされたパケットのロギング
スイッチがパケットをドロップすると、ログ バッファにエントリが記録され、その割合に応じて、システム メッセージが生成されます。メッセージの生成後、スイッチにより、ログ バッファからこのエントリが消去されます。各ログ エントリには、受信 VLAN、ポート番号、発信元および宛先 IP アドレス、発信元および宛先 MAC アドレスなどのフロー情報が含まれます。
バッファ内のエントリ数、および指定された期間にシステム メッセージを生成するために必要なエントリ数を設定するには、 ip arp inspection log-buffer グローバル コンフィギュレーション コマンドを使用します。ログに記録されるパケットのタイプを指定するには、 ip arp inspection vlan logging グローバル コンフィギュレーション コマンドを使用します。設定情報については、「ログ バッファの設定」を参照してください。
ダイナミック ARP インスペクションの設定
• 「ダイナミック ARP インスペクションのデフォルト設定」
• 「ダイナミック ARP インスペクション設定時の注意事項」
• 「DHCP 環境でのダイナミック ARP インスペクションの設定」(DHCP 環境では必須)
• 「非 DHCP 環境での ARP ACL の設定」(非 DHCP 環境では必須)
• 「着信 ARP パケットのレート制限」(任意)
• 「確認検査の実行」(任意)
• 「ログ バッファの設定」(任意)
ダイナミック ARP インスペクションのデフォルト設定
表 22-1 に、ダイナミック ARP インスペクションのデフォルト設定を示します。
表 22-1 ダイナミック ARP インスペクションのデフォルト設定
|
|
ダイナミック ARP インスペクション |
すべての VLAN でディセーブル。 |
インターフェイス信頼状態 |
すべてのインターフェイスは信頼できません。 |
着信 ARP パケットのレート制限 |
このレートは、信頼できないインターフェイス上で 15 pps に設定されています。ただし、1 台のホストが 1 秒間に 15 台の新規ホストに接続できるスイッチド ネットワークであると仮定しています。 信頼できるすべてのインターフェイスでは、レートは無制限です。 バースト インターバルは 1 秒に設定されています。 |
非 DHCP 環境の ARP ACL |
ARP ACL は定義されていません。 |
確認検査 |
どの検証も実行されません。 |
ログ バッファ |
ダイナミック ARP インスペクションがイネーブル化されると、拒否またはドロップされた ARP パケットはすべてが記録されます。 ログのエントリ数は 32 です。 システム メッセージの数は 1 秒あたり 5 つに制限されています。 ロギングレート インターバルは、1 秒です。 |
VLAN 単位のロギング |
拒否またはドロップされた ARP パケットは、すべて記録されます。 |
ダイナミック ARP インスペクション設定時の注意事項
ダイナミック ARP インスペクション設定時の注意事項は次のとおりです。
• ダイナミック ARP インスペクションは入力セキュリティ機能です。出力チェックはまったく行いません。
• ダイナミック ARP インスペクションは、ダイナミック ARP インスペクションをサポートしていないスイッチ、またはこの機能がイネーブルにされていないスイッチに接続されるホストに対しては有効ではありません。中間者攻撃は単一のレイヤ 2 ブロードキャスト ドメインに制限されているため、チェックされないドメインと、ダイナミック ARP インスペクションによりチェックされるドメインは区別します。このアクションは、ダイナミック ARP インスペクションのためにイネーブルにされているドメインでホストの ARP キャッシュを保護します。
• 着信 ARP 要求、および ARP 応答で IP/MAC アドレス バインディングを検証するために、ダイナミック ARP インスペクション DHCP スヌーピング バインディング データベースのエントリに依存します。動的に割り当てられた IP アドレスを持つ ARP パケットを許可する DHCP スヌーピングを必ずイネーブルにしてください。設定情報については、「DHCP および IP ソース ガード機能の設定」を参照してください。
DHCP スヌーピングがディセーブルにされているか、または非 DHCP 環境にある場合は、ARP ACL を使用して、パケットを許可、または拒否してください。
• ダイナミック ARP インスペクションは、アクセス ポート、トランク ポート、EtherChannel ポート、およびプライベート VLAN ポート上でサポートされています。
(注) RSPAN VLAN では、ダイナミック ARP インスペクションをイネーブルにしないでください。RSPAN VLAN でダイナミック ARP インスペクションをイネーブルにすると、ダイナミック ARP インスペクション パケットが RSPAN 宛先ポートに届かない可能性があります。
• 物理ポートは、この物理ポートの信頼状態とチャネル ポートの信頼状態が一致する場合だけ、EtherChannel ポート チャネルに加入できます。一致しない場合、物理ポートは、ポート チャネルでサスペンドされたままになります。ポート チャネルは、信頼状態を、チャネルに加入した最初の物理ポートから継承します。したがって、最初の物理ポートの信頼状態は、チャネルの信頼状態と一致する必要はありません。
逆に、ポート チャネルで信頼状態を変更すると、スイッチは、チャネルを構成するすべての物理ポートで新しい信頼状態を設定します。
• レート制限は、スイッチ スタックにある各スイッチで個別に計算されます。クロススタック EtherChannel では、これは、実際のレート制限は、設定済みの値よりも高い場合があることを意味します。たとえば、スイッチ 1 に 1 つのポート、スイッチ 2 に 1 つのポートがある EtherChannel で、30 pps のレート制限を設定した場合、各ポートでは、EtherChannel が errdisable になることなく、29 pps でパケットを受信できます。
• ポート チャネルの動作レートは、チャネル内の物理ポートすべてにわたって累積されます。たとえば、ARP レート制限が 400 pps のポート チャネルを設定した場合、チャネル上で組み合わされているすべてのインターフェイスは、合計 400 pps を受け取ります。EtherChannel ポート上での着信 ARP パケットのレートは、すべてのチャネル メンバからの着信パケットのレートの合計と同じになります。EtherChannel ポートのレート制限は、必ずすべてのチャネルポート メンバすべての着信 ARP パケットのレートを調べてから設定してください。
物理ポートでの着信パケットのレートは、物理ポートの設定ではなく、ポートチャネルの設定に対してチェックされます。ポート チャネルのレート制限の設定は、物理ポートの設定とは関係ありません。
EtherChannel が、設定されたレートよりも多くの ARP パケットを受信している場合、チャネル(すべての物理ポートを含む)は、errdisable ステートに置かれます。
• 着信トランク ポートで、ARP パケットのレートを必ず制限してください。トランク ポートの集約を反映し、複数のダイナミック ARP インスペクションがイネーブルにされた VLAN にわたってパケットを処理するために、トランク ポートのレートをより高く設定します。また、 ip arp inspection limit none インターフェイス コンフィギュレーション コマンドを使用して、レートを無制限に設定することもできます。VLAN でレート制限を高くすると、ソフトウェアがこのポートを errdisable ステートにしたときに、他の VLAN が DoS 攻撃を受ける原因となります。
• スイッチで、ダイナミック ARP インスペクションをイネーブルにすると、ARP トラフィックをポリシングするように設定されたポリサーの有効性は失われます。この結果、すべての ARP トラフィックは CPU に送信されます。
DHCP 環境でのダイナミック ARP インスペクションの設定
この手順では、2 つのスイッチがダイナミック ARP インスペクションをサポートしているときに、この機能を設定する方法を示します。図 22-2 に示すとおり、ホスト 1 はスイッチ A に、ホスト 2 はスイッチ B に接続されています。スイッチは両方とも、ホストの配置されている VLAN 1 でダイナミック ARP インスペクションを実行しています。DHCP サーバはスイッチ A に接続されています。どちらのホストも、同一の DHCP サーバから IP アドレスを取得します。したがって、スイッチ A はホスト 1 およびホスト 2 に対するバインディングを、スイッチ B はホスト 2 に対するバインディングを持ちます。
(注) 着信 ARP 要求、および ARP 応答で IP/MAC アドレス バインディングを検証するために、ダイナミック ARP インスペクション DHCP スヌーピング バインディング データベースのエントリに依存します。動的に割り当てられた IP アドレスを持つ ARP パケットを許可する DHCP スヌーピングを必ずイネーブルにしてください。設定情報については、「DHCP および IP ソース ガード機能の設定」を参照してください。
スイッチの 1 つだけがこの機能をサポートしている場合にダイナミック ARP インスペクションを設定する方法の詳細については、「非 DHCP 環境での ARP ACL の設定」を参照してください。
ダイナミック ARP インスペクションを設定するには、特権 EXEC モードで次の手順を実行します。この処理は、両方のスイッチで行う必要があります。この手順は必須です。
|
|
|
ステップ 1 |
show cdp neighbors |
スイッチ間の接続を確認します。 |
ステップ 2 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip arp inspection vlan vlan-range |
VLAN 単位で、ダイナミック ARP インスペクションをイネーブルにします。デフォルトでは、すべての VLAN 上で ダイナミック ARP インスペクションはディセーブルになっています。 vlan-range には、VLAN ID 番号で識別された単一の VLAN、ハイフンで区切られた範囲の VLAN、またはカンマで区切られた一連の VLAN を指定できます。指定できる範囲は 1 ~ 4094 です。 両方のスイッチに同じ VLAN ID を指定します。 |
ステップ 4 |
interface interface-id |
もう 1 つのスイッチに接続するインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 5 |
ip arp inspection trust |
スイッチ間の接続を、信頼できるものに設定します。 デフォルトでは、すべてのインターフェイスは信頼できません。 スイッチは、信頼できるインターフェイスにあるもう 1 つのスイッチから受信した ARP パケットは確認しません。これらのパケットを転送するだけです。 信頼できないインターフェイスの場合、スイッチはすべての ARP 要求と ARP 応答を代行受信します。ローカル キャッシュを更新し、該当する宛先にパケットを転送する前に、代行受信したパケットが有効な IP/MAC アドレス バインディングを持つかどうかを検証します。スイッチは、無効なパケットをドロップし、 ip arp inspection vlan logging グローバル コンフィギュレーション コマンドで指定されたロギング設定に従ってログ バッファに記録します 。詳細については、「ログ バッファの設定」を参照してください。 |
ステップ 6 |
end |
特権 EXEC モードに戻ります。 |
ステップ 7 |
show ip arp inspection interfaces show ip arp inspection vlan vlan-range |
ダイナミック ARP インスペクションの設定を確認します。 |
ステップ 8 |
show ip dhcp snooping binding |
DHCP バインディングを確認します。 |
ステップ 9 |
show ip arp inspection statistics vlan vlan-range |
ダイナミック ARP インスペクション統計情報を確認します。 |
ステップ 10 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
ダイナミック ARP インスペクションをディセーブルにするには、 no ip arp inspection vlan vlan-range グローバル コンフィギュレーション コマンドを使用します。インターフェイスを untrusted ステートに戻すには、 no ip arp inspection trust インターフェイス コンフィギュレーション コマンドを使用します。
次の例では、VLAN 1 のスイッチ A でダイナミック ARP インスペクションを設定する方法を示します。スイッチ B でも同様の手順を実行します。
Switch(config)# ip arp inspection vlan 1
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# ip arp inspection trust
非 DHCP 環境での ARP ACL の設定
この手順は、図 22-2 に示すスイッチ B がダイナミック ARP インスペクション、または DHCP スヌーピングをサポートしていないときにダイナミック ARP インスペクションを設定する方法を示しています。
スイッチ A のポート 1 を信頼できるものとして設定した場合、スイッチ A とホスト 1 は両方とも、スイッチ B またはホスト 2 により攻撃される可能性があるため、セキュリティ ホールが作り出されます。これを阻止するには、スイッチ A のポート 1 を信頼できないものとして設定する必要があります。ホスト 2 から ARP パケットを許可するには、ARP ACL を設定し、これを VLAN 1 に適用する必要があります。ホスト 2 の IP アドレスがスタティックではない(スイッチ A で ACL 設定を適用することは不可能である)場合、レイヤ 3 でスイッチ A をスイッチ B から分離し、これらの間では、ルータを使用してパケットをルートする必要があります。
スイッチ A 上で ARP ACL を設定するには、特権 EXEC モードで次の手順を実行します。この手順は、非 DHCP 環境では必須です。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
arp access-list acl-name |
ARP ACL を定義し、ARP アクセス リスト コンフィギュレーション モードを開始します。デフォルトでは、ARP アクセス リストは定義されません。 (注) ARP アクセス リストの末尾に暗黙的な deny ip any mac any コマンドが指定されています。 |
ステップ 3 |
permit ip host sender-ip mac host sender-mac [ log ] |
指定されたホスト(ホスト 2)からの ARP パケットを許可します。 • sender-ip には、ホスト 2 の IP アドレスを入力します。 • sender-mac には、ホスト 2 の MAC アドレスを入力します。 • (任意)パケットが Access Control Entry(ACE; アクセス コントロール エントリ)と一致するときに、ログ バッファにこのパケットをログするには、 log を指定します。 ip arp inspection vlan logging グローバル コンフィギュレーション コマンドで matchlog キーワードも設定されている場合は、一致するパケットはログに記録されます。詳細については、「ログ バッファの設定」を参照してください。 |
ステップ 4 |
exit |
グローバル コンフィギュレーション モードに戻ります。 |
ステップ 5 |
ip arp inspection filter arp-acl-name vlan vlan-range [ static ] |
ARP ACL を VLAN に適用します。デフォルトでは、 定義済みの ARP ACL は、どのような VLAN にも適用されません。 • arp-acl-name には、ステップ 2 で作成した ACL の名前を指定します。 • vlan-range には、スイッチとホストが存在する VLAN を指定します。VLAN ID 番号で識別された 1 つの VLAN、それぞれをハイフンで区切った VLAN 範囲、またはカンマで区切った一連の VLAN を指定できます。指定できる範囲は 1 ~ 4094 です。 • (任意)ARP ACL 内の暗黙の拒否を明示的な拒否として取り扱い、ACL 内の前の句に一致しないパケットをドロップするために、 static を指定します。DHCP バインディングは使用されません。 このキーワードを指定しない場合は、パケットを拒否する明示的な拒否が ACL 内にないことを意味し、パケットが ACL 内の句に一致しないと DHCP バインディングがパケットの許可または拒否を決定します。 IP/MAC アドレス バインディングだけを含む ARP パケットが ACL と比較されます。パケットが許可されるのは、アクセス リストで許可されている場合だけです。 |
ステップ 6 |
interface interface-id |
スイッチ B に接続するスイッチ A インターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 7 |
no ip arp inspection trust |
スイッチ B に接続されたスイッチ A インターフェイスを信頼できないものとして設定します。 デフォルトでは、すべてのインターフェイスは信頼できません。 信頼できないインターフェイスの場合、スイッチはすべての ARP 要求と ARP 応答を代行受信します。ローカル キャッシュを更新し、該当する宛先にパケットを転送する前に、代行受信したパケットが有効な IP/MAC アドレス バインディングを持つかどうかを検証します。スイッチは、無効なパケットをドロップし、 ip arp inspection vlan logging グローバル コンフィギュレーション コマンドで指定されたロギング設定に従ってログ バッファに記録します 。詳細については、「ログ バッファの設定」を参照してください。 |
ステップ 8 |
end |
特権 EXEC モードに戻ります。 |
ステップ 9 |
show arp access-list [ acl-name ] show ip arp inspection vlan vlan-range show ip arp inspection interfaces |
設定を確認します。 |
ステップ 10 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
ARP ACL を削除するには、 no arp access-list グローバル コンフィギュレーション コマンドを使用します。VLAN に接続された ARP ACL を削除するには、 no ip arp inspection filter arp-acl-name vlan vlan-range グローバル コンフィギュレーション コマンドを使用します。
次に、スイッチ A で ARP ACL host2 を設定して、ホスト 2(IP アドレス 1.1.1.1、および MAC アドレス 0001.0001.0001)からの ARP パケットを許可し、この ACL を VLAN 1 に適用してから、スイッチ A のポート 1 を信頼できないものに設定する例を示します。
Switch(config)# arp access-list host2
Switch(config-arp-acl)# permit ip host 1.1.1.1 mac host 1.1.1
Switch(config-arp-acl)# exit
Switch(config)# ip arp inspection filter host2 vlan 1
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# no ip arp inspection trust
着信 ARP パケットのレート制限
スイッチの CPU は、ダイナミック ARP インスペクション確認検査を実行します。したがって、DoS 攻撃を阻止するために、着信 ARP パケット数はレート制限されます。
着信 ARP パケットのレートが設定された制限を超えると、スイッチはポートを errdisable ステートにします。errordisable 回復をイネーブルにして、指定されたタイムアウト時間の後にポートがこのステートから自動的に抜け出すようにするまで、ポートはこのステートのままです。
(注) インターフェイス上のレート制限を設定しない限り、インターフェイスの信頼状態を変更することは、レート制限をその信頼状態のデフォルト値に変更することになります。レート制限を設定すると、インターフェイスはその信頼状態が変更された場合でも設定されたレート制限を維持します。no ip arp inspection limit インターフェイス コンフィギュレーション コマンドを入力すると、インターフェイスはデフォルトのレート制限に戻ります。
トランク ポート、および EtherChannel ポートに対するレート制限設定時の注意事項については、「ダイナミック ARP インスペクション設定時の注意事項」を参照してください。
着信 ARP パケットのレートを制限するには、特権 EXEC モードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
interface interface-id |
レート制限されたインターフェイスを指定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip arp inspection limit { rate pps [ burst interval seconds ] | none } |
インターフェイスでの着信 ARP 要求および応答のレートを制限します。 デフォルトのレートは、信頼できないインターフェイスでは 15 pps、信頼できるインターフェイスでは無制限です。バースト インターバルは 1 秒に設定されています。 キーワードの意味は次のとおりです。 • rate pps には、1 秒間に処理される着信パケット数の上限を指定します。指定できる範囲は 0 ~ 2048 pps です。 • (任意) burst interval seconds は、レートの高い ARP パケットの有無についてインターフェイスがモニタリングされる間隔(秒)を指定します。指定できる範囲は 1 ~ 15 です。 • rate none では、処理できる着信 ARP パケットのレートの上限を設定しません。 |
ステップ 4 |
exit |
グローバル コンフィギュレーション モードに戻ります。 |
ステップ 5 |
errdisable recovery cause arp-inspection interval interval |
(任意)ダイナミック ARP インスペクション errdisable ステートからのエラー回復をイネーブルにします。 デフォルトでは、回復はディセーブルで、回復のインターバルは 300 秒です。 interval interval には、errdisable ステートから回復する時間を秒単位で指定します。指定できる範囲は 30 ~ 86400 です。 |
ステップ 6 |
exit |
特権 EXEC モードに戻ります。 |
ステップ 7 |
show ip arp inspection interfaces show errdisable recovery |
設定値を確認します。 |
ステップ 8 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
デフォルトのレート制限設定に戻るには、 no ip arp inspection limit インターフェイス コンフィギュレーション コマンドを使用します。ダイナミック ARP インスペクションのエラー回復をディセーブルにするには、 no errdisable recovery cause arp-inspection グローバル コンフィギュレーション コマンドを使用します。
確認検査の実行
ダイナミック ARP インスペクションは、不正な IP/MAC アドレス バインディングを持つ ARP パケットを代行受信し、ログに記録して、廃棄します。宛先 MAC アドレス、送信側および宛先の IP アドレス、および送信元 MAC アドレスで追加検証を実行するように、スイッチを設定できます。
着信 ARP パケットで特定の検証を実行するには、特権 EXEC モードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip arp inspection validate {[ src-mac ] [ dst-mac ] [ ip ]} |
着信 ARP パケットに対して特定の検証を実行します。デフォルトでは、検証は実行されません。 キーワードの意味は次のとおりです。 • src-mac では、イーサネット ヘッダーの送信元 MAC アドレスと ARP 本文の送信元 MAC アドレスが比較されます。この検証は、ARP 要求と ARP 応答に両方に対して実行されます。このチェックがイネーブルの場合、異なる MAC アドレスを持つパケットは無効として分類され、ドロップされます。 • dst-mac では、イーサネット ヘッダーの宛先 MAC アドレスと ARP 本文の宛先 MAC アドレスが比較されます。この検証は、ARP 応答に対して実行されます。このチェックがイネーブルの場合、異なる MAC アドレスを持つパケットは無効として分類され、ドロップされます。 • ip では、ARP 本文から、無効な IP アドレスや予期しない IP アドレスがないかを確認します。0.0.0.0、255.255.255.255、およびすべての IP マルチキャスト アドレスがこれに該当します。送信側 IP アドレスは、すべての ARP 要求および応答で検証され、宛先 IP アドレスは ARP 応答だけで検証されます。 少なくとも 1 つのキーワードを指定する必要があります。コマンドを実行するたびに、その前のコマンドの設定は上書きされます。つまり、コマンドが src および dst mac の検証をイネーブルにし、別のコマンドが IP 検証だけをイネーブルにすると、2 番めのコマンドによって src および dst mac の検証がディセーブルになります。 |
ステップ 3 |
exit |
特権 EXEC モードに戻ります。 |
ステップ 4 |
show ip arp inspection vlan vlan-range |
設定値を確認します。 |
ステップ 5 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
検証をディセーブルにするには、 no ip arp inspection validate [ src-mac ] [ dst-mac ] [ ip ] グローバル コンフィギュレーション コマンドを使用します。転送されたパケット、ドロップされたパケット、 MAC および IP 検証に失敗したパケットの統計を表示するには 、 show ip arp inspection statistics 特権 EXEC コマンドを使用します。
ログ バッファの設定
スイッチがパケットをドロップすると、ログ バッファにエントリが記録され、その割合に応じて、システム メッセージが生成されます。メッセージの生成後、スイッチにより、ログ バッファからこのエントリが消去されます。各ログ エントリには、受信 VLAN、ポート番号、発信元および宛先 IP アドレス、発信元および宛先 MAC アドレスなどのフロー情報が含まれます。
1 つのログ バッファ エントリは複数のパケットを表す場合があります。たとえば、インターフェイスが同じ ARP パラメータを使用して同じ VLAN 上で多数のパケットを受信した場合、スイッチはこれらのパケットを組み合わせて 1 つのエントリとしてログ バッファに格納し、エントリとして 1 つのシステム メッセージを生成します。
ログ バッファがオーバーフローする場合は、ログ イベントがログ バッファに収まらないことを意味しており、 show ip arp inspection log 特権 EXEC コマンドの出力が影響を受けます。パケット数および時間以外のすべてのデータの代わりに [--] が表示されます。このエントリに関してそれ以外の統計情報は表示されません。このエントリに関する情報が表示されるようにするには、ログ バッファ内のエントリの数を増やすか、またはロギング レートを高くします。
ログ バッファ設定が、スイッチ スタックの各スタック メンバに適用されます。各スタック メンバには、指定された logs number エントリがあり、設定済みのレートでシステム メッセージが生成されます。たとえば、インターバル(レート)が 1 秒ごとに 1 エントリの場合、5 つのメンバ スイッチ スタックで、1 秒ごとに最大 5 つまでのシステム メッセージが生成されます。
ログ バッファを設定するには、特権 EXEC モードで次の手順を実行します。この手順は任意です。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
ip arp inspection log-buffer { entries number | logs number interval seconds } |
ダイナミック ARP インスペクション ログ バッファを設定します。 デフォルトでは、 ダイナミック ARP インスペクションがイネーブル化されると、拒否またはドロップされた ARP パケットが記録されます。ログ エントリ数は、32 です。システム メッセージの数は 1 秒あたり 5 つに制限されています。ロギングレート インターバルは、1 秒です 。 キーワードの意味は次のとおりです。 • entries number は、バッファに記録されるエントリ数を表します。指定できる範囲は 0 ~ 1024 です。 • logs number interval seconds は、指定されたインターバルでシステム メッセージを生成するエントリの数を表します。 logs number に指定できる範囲は 0 ~ 1024 です。値を 0 に設定すると、エントリはログ バッファに配置されますが、システム メッセージが生成されません。 指定できる interval seconds の範囲は 0 ~ 86400 秒(1 日)です。値を 0 に設定すると、システム メッセージがただちに生成されます(ログ バッファは常に空になります)。 インターバルの設定 0 は、ログの設定 0 よりも優先されます。 logs および interval の設定は、相互に作用します。 logs number X が interval seconds Y より大きい場合は、X を Y で割って(X/Y)求められたシステム メッセージ数が 1 秒間に送信されます。それ以外の場合は、Y を X で割って(Y/X)求められた間隔(秒)で 1 つのシステム メッセージが送信されます。 |
ステップ 3 |
ip arp inspection vlan vlan-range logging { acl-match { matchlog | none } | dhcp-bindings { all | none | permit }} |
VLAN 単位で記録するパケットのタイプを制御します。デフォルトでは、拒否またはドロップされたパケットは、すべて記録されます。 ログに記録される という表現は、エントリがログ バッファに格納され、システム メッセージが生成されることを意味しています。 キーワードの意味は次のとおりです。 • vlan-range には、VLAN ID 番号で識別された単一の VLAN、ハイフンで区切られた範囲の VLAN、またはカンマで区切られた一連の VLAN を指定できます。指定できる範囲は 1 ~ 4094 です。 • acl-match matchlog は、ACE ロギング設定に基づいてパケットをログに記録します。このコマンドに matchlog キーワード、 permit または deny ARP アクセス リスト コンフィギュレーション コマンドに log キーワードを指定すると、ACL によって許可または拒否された ARP パケットが記録されます。 • acl-match none では、ACL に一致するパケットは記録されません。 • dhcp-bindings all では、DHCP バインディングに一致するパケットがすべて記録されます。 • dhcp-bindings none では、DHCP バインディングに一致するパケットは記録されません。 • dhcp-bindings permit では、DHCP バインディングが許可されたパケットが記録されます。 |
ステップ 4 |
exit |
特権 EXEC モードに戻ります。 |
ステップ 5 |
show ip arp inspection log |
設定値を確認します。 |
ステップ 6 |
copy running-config startup-config |
(任意)コンフィギュレーション ファイルに設定を保存します。 |
デフォルトのログ バッファ設定に戻るには、 no ip arp inspection log-buffer { entries | logs } グローバル コンフィギュレーション コマンドを使用します。 デフォルトの VLAN ログ設定に戻るには、 no ip arp inspection vlan vlan-range logging { acl-match | dhcp-bindings } グローバル コンフィギュレーション コマンドを使用します。ログ バッファをクリアするには、 clear ip arp inspection log 特権 EXEC コマンドを使用します。