はじめに
Proxy ARPとは
Proxy ARPとは他のデバイス宛てのARP要求に対して、本来の問い合わせ先に代わってARP応答する機能です。
上記を聞いて理解できましたでしょうか?
最初私はちんぷんかんぷんでした。
ARPはIPアドレスからMACアドレスを求める機能ですが、「本来の問い合わせ先とはなに?」「代わってARP応答するのは誰?」となりました。
今回検証環境でProxy ARPに遭遇する場面がございましたので、これを機に理解を深めていきたいと思います。
1.構成図
以下今回の構成図です。
※Claudeで作成したため多少雑な部分があります。

省略している部分がいくつかありますが、CoreSWが中央にあり、ダウンリンク側とアップリンク側でLS2SW(C2960)があります。
ダウンリンク側のL2SWにPCを接続し、VLAN72でアクセスポートとして接続します。
PC情報は以下です。
IP:172.18.72.101
サブネットマスク:255.255.255.0
デフォルトゲートウェイ:172.18.72.1(CSWのVLAN72のIP)
PCからアップリンク側C2960のVLAN55にpingを打ちます。
※記載忘れていますがアップリンク側C2960のVLAN55のIPは172.18.55.200です。
2.PCからアップリンク側C2960にpingを打ってみる
大前提C2960には下記のコマンドは入れていません。
ip default-gateway
L2SWはルーティングを行いませんのでデフォルトゲートウェイを設定しない限り、異なるセグメントとは通信できません。
今回の構成だとPCからアップリンク側のC2960には行きの通信はCSWがいるためルーティングされて到達可能ですが、帰りの通信は戻ってこれない想定になります。
しかし、PCからのping結果は以下のようになりました。
ping 172.18.55.200
172.18.55.200 に ping を送信しています 32 バイトのデータ:
172.18.55.200 からの応答: バイト数 =32 時間 =11ms TTL=116
172.18.55.200 からの応答: バイト数 =32 時間 =11ms TTL=116
172.18.55.200 からの応答: バイト数 =32 時間 =24ms TTL=116
172.18.55.200 からの応答: バイト数 =32 時間 =23ms TTL=116
172.18.55.200 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 11ms、最大 = 24ms、平均 = 17ms
なんとpingが成功しました。
まさにProxy ARPが機能している状態になります。
3.原因:Coreスイッチによる「Proxy ARP」
この原因がCSWによる「Proxy ARP」です。
仕組み
1:L2SWはVLAN72宛に返したいが、DGWがないため、とりあえずCSWとの接続しているVLAN55内に「172.18.72.101のMACアドレスを教えて」とARPリクエストを投げる。
2:ARPリクエストを受け取ったCore SWは、自分がVLAN72へのルートを知っているため、「自分のMACアドレス」を載せて代理応答する。
3:L2SWは、Core SWをVLAN72だと思い込んでパケットを転送し、通信が成立する。
上記の流れで通信が成立します。
Proxy ARPはCiscoにおいてデフォルトで有効になっています。
なお、C9300-Tにおいてはshow running-configではProxy ARPの設定は表示されないため下記コマンドで確認する必要があります。
show run all | include interface ○○
下記の設定が確認できました。
interface VLAN55
ip proxy-arp
4.検証:no ip proxy-arp を設定するとどうなるか
かといってProxy ARPが原因であることが真の原因か分かりませんので、CSWのVLAN55で以下のコマンドを投入し、Proxy ARPを無効化するとこの代理応答が止まるのか検証しました。
no ip proxy-arp
PCからのping結果は以下のようになりました。
ping 172.18.55.200
172.18.55.200 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
172.18.55.200 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
pingが飛ばないことが確認できたので今回の事象が発生した原因はProxy ARPであることが分かりました。
5.今回のまとめ
今回のように「設定していないのに動いている」状態は、多くの場合 Proxy ARP のようなデフォルト機能によって助けられているだけだということが危惧されました。
設計の重要性: Proxy ARPに頼った構成はトラブルの元になります。L2スイッチには明示的に ip default-gateway を設定するべきです。
