ARPの機能説明
ARPは、IPアドレスによってネットワーク上のホストのMACアドレスを得るためのアドレス解決プロトコルです。ARPによって解決したMACアドレスはIPアドレスに関連付けられ、ダイナミックエントリーとしてARPテーブルにキャッシュされます。また、手動でMACアドレスとIPアドレスを関連付け、スタティックエントリーとしてARPテーブルに登録することもできます。
MACアドレスが不明なネットワーク上のホストに対してMACアドレスを問い合わせ、得られたMACアドレスとIPアドレスを関連付けた情報がダイナミックエントリーです。
ARPの送信元は、MACアドレスを問い合わせるホストのIPアドレスをARPリクエストに指定し、ネットワークにブロードキャストします。ARPリクエストに指定されたIPアドレスが設定されたホストは、MACアドレスを通知するARPリプライをユニキャストで送信元に応答します。これにより、通知されたMACアドレスとIPアドレスが関連付けられ、ダイナミックエントリーとしてARPテーブルにキャッシュされます。
ダイナミックエントリーによるMACアドレスとIPアドレスの関連付け
登録済みのARPキャッシュエントリーでリンクダウンを伴わないポート間移動が発生した場合、MACアドレスを再学習してから数秒後にARPキャッシュエントリーの送信先インターフェースの更新が行われます。なお、MACアドレスやARPキャッシュエントリーの登録数が多い環境では、この更新時間がより長くなることがあります。
IPアドレスとMACアドレスの関連付けを手動でARPテーブルに追加した情報が、スタティックエントリーです。arpコマンドでIPアドレスとMACアドレスを指定し、ARPテーブルに登録します。
arpコマンドで指定したIPアドレスがARPテーブルに存在する場合、その情報がダイナミックエントリーとスタティックエントリーのどちらであっても、新たにarpコマンドで追加したスタティックエントリーで上書きされます。
スタティックARPエントリーを設定する場合は、mac-address-table staticコマンドで対応するスタティックMACアドレスエントリーも設定してください。
NP7000(1.10.01より前のバージョン)、NP5000(1.09.01より前のバージョン)、およびNP4000で、スタティックARPエントリーは最大512個設定できますが、ユニキャストMACアドレスのスタティックMACアドレスエントリーが最大256個のため、スタティックARPエントリーも最大256個以内で使用してください。
NP7000(1.10.01以降)、NP5000(1.09.01以降)、およびNP3000では、スタティックARPエントリーは最大512個まで設定できます。
NP2100、NP2000、およびNP2500では、スタティックARPエントリーは最大128個まで設定できます。
ARPエージングタイムの変更
ARPエージングタイム(ARPテーブルにキャッシュされたダイナミックエントリーを更新するまでの時間)を変更できます。ARPエージングタイムのデフォルト設定は「240分」です。ARPエージングタイムを変更するには、arp timeoutコマンドを使用します。
ルートのネクストホップのARPエントリーは、タイムアウトしても消去されません。ルートのネクストホップのARPエントリーを消去するには、clear arp-cacheコマンドを使用します。
ARPテーブルのダイナミックエントリーの消去
ARPテーブルにキャッシュされたダイナミックエントリーを手動で消去できます。ダイナミックエントリーを消去するには、clear arp-cacheコマンドを使用します。allパラメーターを指定してclear arp-cacheコマンドを使用すると、すべてのダイナミックエントリーを消去します。
プロキシARP
プロキシARPは、ARPリクエストを受信したIPインターフェースでARPリプライを代理応答する機能です。プロキシARPを有効にしたIPインターフェースで以下に一致するARPリクエストを受信した場合に、自身のMACアドレスを使用して代理でARPリプライを応答します。
- 自装置に直接接続されている、プロキシARPを有効にしたIPインターフェース以外のネットワーク宛てのARPリクエスト
- ルーティングテーブルに経路情報が登録されているネットワーク宛てのARPリクエスト
プロキシARPの動作例
この例では、ホストAのIPアドレス/サブネットマスクが172.16.10.100/16に設定されているため、ホストAは172.16.20.200や172.16.30.200を同一サブネット内のホストと判断し、直接172.16.20.200や172.16.30.200宛てにARPリクエストを送信します。L3スイッチのVLAN 10インターフェースではプロキシARPを有効にしているため、172.16.20.200(自装置に直接接続されているネットワーク)宛てのARPリクエストや、172.16.30.200(ルーティングテーブルに経路情報が登録されているネットワーク)宛てのARPリクエストを受信すると、VLAN 10インターフェースのMACアドレスを使用してARPリプライを代理応答します。
プロキシARPは、デフォルト設定で無効です。プロキシARPを有効にする場合、ip proxy-arpコマンドを使用します。
ローカルプロキシARP
ローカルプロキシARPは、通常のプロキシARPでは代理応答しないケースでARPリプライを代理応答する機能です。ローカルプロキシARPを有効にしたIPインターフェース自身のネットワーク宛てのARPリクエストを受信した場合に、自身のMACアドレスを使用して代理でARPリプライを応答します。同一サブネットのホスト同士が直接通信できない特殊なネットワークにおいて、L3スイッチを経由してそれらのホスト同士の通信を可能にする場合に使用します。
ローカルプロキシARPの動作例
この例では、ホストA(172.16.10.100/24)とホストB(172.16.10.200/24)は同一セグメントに所属していますが、直接通信できない特殊なネットワークになっています。この環境でホストAがホストB(172.16.10.200)宛てのARPリクエストを送信すると、L3スイッチのVLAN 10インターフェースではローカルプロキシARPを有効にしているため、自身のネットワーク(172.16.10.0/24)宛てのARPリクエストを受信するとVLAN 10インターフェースのMACアドレスを使用してARPリプライを代理応答します。これにより、同一サブネット内のホストAとホストBがL3スイッチを経由して通信できるようになります。
ローカルプロキシARPは、デフォルト設定で無効です。ローカルプロキシARPを有効にする場合は、ip local-proxy-arpコマンドを使用します。なお、ローカルプロキシARPを有効にする場合は、ip proxy-arpコマンドでプロキシARPも有効にする必要があります。
Gratuitous ARPリクエスト
Gratuitous ARPリクエスト(以後、GARPリクエスト)は、装置自身のIPアドレスで自分のMACアドレスを得るためのARPリクエストです。GARPリクエストには、2つの役割があります。
1つは、ネットワーク内で装置自身のIPアドレスが重複していないかどうかを検出する役割です。GARPリクエストを送信し、ネットワーク内から返信があった場合、IPアドレスが重複していることが検知されます。
GARPリクエストによるIPアドレス重複の検知
もう1つは、ネットワーク内のホストのARPテーブルのキャッシュを更新する役割です。ネットワーク内のホストは、GARPリクエストを受信することでARPテーブルのキャッシュを更新し、装置のIPアドレスとMACアドレスの情報を最新の状態にアップデートします。
GARPリクエストの送信を有効にするには、ip gratuitous-arpsコマンドを使用します。GARPリクエストを定期的に送信するには、arp gratuitous-sendコマンドを使用します。
また、デフォルト設定では、ARPテーブルはGARPパケットを学習します。GARPパケットの学習を無効にするには、no ip arp gratuitousコマンドを使用します。