Proxy-ARP とは
Proxy-ARP とは、自分宛ではない ARP 要求に対し、ルートを知っている IP であれば、その IP の端末の代わりに ARP 応答を返す機能です。
ARP 応答を受け取った端末は、Proxy-ARP で ARP 応答した端末にパケットを送ってきますが、その端末はルートを知っているので、ルーティングによりさらにパケットを転送します。
NATのProxy-ARPの例
例えば下記のような NAT 設定をしているルータの場合、PC B から「10.1.1.101 の MAC アドレスは何か?」という ARP 要求を、10.1.1.254 のインタフェースで受信します。10.1.1.254 のインタフェースは自身宛の ARP 要求ではありませんが、10.1.1.101 は自身で保有していると知っているので、Proxy-ARP の機能により「10.1.1.101 の MAC アドレスは [Gi 0/1 のインタフェースの MAC アドレス]ですよ」と返信します。
一昔前までは、上記のような NAT 設定をする場合、Proxy-ARP の設定を入れてないことで通信トラブルになることが多かったですが、最近の機器は自動で Proxy-ARP を返すような設定になっていることが多いです。
また、NAT と似たような構成で、SSL-VPN/IPsec VPN 装置も Proxy-ARP を実行することが多いです。
SSL-VPN装置のProxy-ARPの例
例えば SSL-VPN 装置にリモートログインした PC が 10.1.1.101/32 の IP アドレスが払い出されたとします (SSL-VPN では慣例的にログイン PC は /32 の IP アドレスが払い出されます)。
リモート PC から社内サーバへ通信し、その返信パケットがルータに届き、ルータの 10.1.1.254 のインタフェースからリモートPC (10.1.1.101) へ通信しようとします。
その際、ルータは同セグメントだと思っている (相手が /32 ということは知らない) ので、ARP 要求を Broadcast します。SSL-VPN 装置はこの ARP を受信し、Proxy-ARP の機能により「10.1.1.101 の MAC アドレスは [SSL-VPN 装置の MAC アドレス]ですよ」と返信します。
これらはあくまで一例で、とにもかくにも、自分がルート情報を持っている IP の ARP 要求に応答するのが Proxy-ARP なのです。
FortiGateでのProxy-ARPの設定
FortiGate では残念ながら前述の構成では Proxy ARP がデフォルトでは有効になりません。
以下に、10.1.20.101 から 10.1.20.200 の範囲で Proxy-ARP に応答する設定を示します。
lab-fw # config system proxy-arp lab-fw (proxy-arp) # edit 1 lab-fw (1) # set interface dmz lab-fw (1) # set ip 10.1.20.101 lab-fw (1) # set end-ip 10.1.20.200 lab-fw (1) # next lab-fw (proxy-arp) # end
CiscoのProxy-ARPの設定
Cisco では以下のように設定します。
(config-if)# ip proxy-arp
ローカルProxy-ARPについて
通常の Proxy-ARP 設定の場合は、自身がその IP を持っている場合だけでなく、その IP へのルート情報を持っていても ARP 応答します。
自身の保有する IP のみに ARP 応答させたい場合は、以下のようにローカル Proxy-ARP の設定をします。
(config-if)# ip local-proxy-arp
コメント
IPアドレス 5.5.5.5 のところですが 10.1.1.101 ではないでしょうか?
masa さん、仰る通りです。
とある理由で図を直したのですが、本文のほうを修正し忘れており、先ほど修正させていただきました。
ご指摘ありがとうございます。