用語辞典・通信プロトコル

ARP

ARPとは

ARPは、IPv4の同一LAN内で、IPアドレスに対応するMACアドレスを調べるプロトコルです。正式名称はAddress Resolution Protocol(アドレス・リゾリューション・プロトコル)で、アープと読みます。

端末がIPv4パケットをEthernetへ載せるには、同じリンク上の次ホップのMACアドレスが必要です。対応を知らなければARP 要求をリンクへブロードキャストし、対象IPv4アドレスを持つ機器がARP 応答で自分のMACアドレスを返します。

遠隔ネットワークのサーバーへ送るときにARPで調べるのは遠隔サーバーのMACではなく、同じLAN上にいるデフォルトゲートウェイのMACです。MACヘッダーはルーターを越えるたび、次のリンク用に作り直されます。

同一サブネットなら相手端末、遠隔宛ならデフォルトゲートウェイのMACを解決する要求をLAN全体へ放送し、該当機器の応答を期限付きキャッシュへ保存する
送信端末がIPv4宛先を同一LANか遠隔か判定し、同一LANではスイッチ配下全体へARP要求を放送して該当端末から応答を受け、遠隔宛ではルーターのMACを解決し、期限付きキャッシュ、アドレス競合検査、ARP偽装とスイッチ検査、IPv6は別方式であることを示す図解
図1図はEthernet上のIPv4という一般的な利用です。ARP形式自体はハードウェア種別とプロトコル種別を持ちますが、IPv6はARPを使いません。

宛先が同一プレフィックスかを判断してから、解決する次ホップを決める

IP経路選択が次ホップIPを決め、ARPが同一リンク上のMACへ変換するARPがインターネット全体の経路や、スイッチの転送先を決めるわけではない
  1. Route
    次ホップIPを決定

    宛先プレフィックスが直結なら宛先自身、そうでなければルート表のゲートウェイを選ぶ

  2. Lookup
    キャッシュを確認

    対象次ホップIPに対応する利用可能なMACがあれば、直ちにフレームを作る

  3. 要求
    リンクへ質問を放送

    送信者IP・MACと対象IPを入れたARP 要求をブロードキャストする

  4. 応答
    対象がMACを応答

    対象IPを持つ端末が自分の対応をARP 応答で送信元へ返す

  5. Cache
    対応を期限付き保存

    学習したIP・MAC対応と状態を隣接相手キャッシュへ保持し、再利用する

  6. Frame
    Ethernetで送信

    次ホップMACを宛先にしたフレームへIPv4パケットを収め、スイッチへ渡す

図2OSによってARP表、隣接相手表など表示名が異なり、未解決・到達確認中・固定など複数状態を持ちます。

要求はブロードキャスト、応答は通常ユニキャストで返す

送信端末は対象MACを知らないため、ARP 要求のEthernet宛先をブロードキャストにします。同じブロードキャストドメインの全端末がフレームを受け取りますが、対象IPを持つ端末が内容を確認して応答します。

ARP 応答は要求に含まれた送信元MACへ通常ユニキャストで返せます。L2スイッチはフレーム送信元MACを学習して転送しますが、IPとMACの意味対応を決めるのは端末のARP処理です。スイッチのMACテーブルと端末のARPキャッシュを混同しません。

キャッシュは通信量を減らすが、永続的な正解ではない

解決した対応は期限付きで保存され、後続パケットごとにブロードキャストせず送れます。一定時間使わない、リンクが変わる、到達性が失われるなどで再確認・削除されます。固定ARPエントリーを設定できるOSもあります。

端末交換、仮想IPの引継ぎ、冗長ルーター切替では、同じIPのMACが変わります。古いキャッシュが残ると一時的に旧機器へ送られます。Announcementで更新を促せますが、すべての機器が即時更新する保証はなく、期限と切替手順を設計します。

ARP ProbeとAnnouncementで、IPv4アドレス競合を検出・通知する

新しいIPv4アドレスを使う前に、送信元IPをゼロにしたARP Probeで「この対象IPを誰か使っているか」を質問できます。応答や同じIPを名乗るARPを受けたら競合として扱い、別アドレスを選ぶか管理者へ通知します。

利用開始時のARP Announcementは、送信元・対象IPへ自分のIPを入れた要求で「このIPを使い始めた」と周囲へ知らせます。一般にgratuitous ARPと呼ばれる複数形式があります。競合検査とキャッシュ更新は目的が近くても、パケット項目と実行時点を分けて確認します。

ARPには認証がなく、偽の対応をキャッシュへ入れられる

ARPは信頼された同一リンクを前提にした古い仕組みで、応答の署名や送信者認証がありません。攻撃端末が「ゲートウェイIPは自分のMAC」と偽れば、被害端末の通信を攻撃端末へ向けるARPなりすまし・ARP poisoningが可能です。

管理スイッチのDynamic ARP Inspectionは、DHCP snoopingのIP・MAC・ポート対応や静的バインディングと照らして不正ARPを落とします。無線利用者分離、VLAN、ポートセキュリティ、HTTPS・SSHなど上位暗号化も組み合わせます。検査データが誤っていれば正当通信を遮断するため運用が必要です。

IPv6はARPではなく、ICMPv6のNeighbor Discoveryを使う

IPv6はARPを使わず、Neighbor Discovery ProtocolのNeighbor Solicitation・Advertisementでリンク層アドレスを解決します。ブロードキャストではなく対象に対応するsolicited-nodeマルチキャストを使います。

デュアルスタック端末の隣接相手表にIPv4とIPv6が並んでも、IPv4項目はARP、IPv6項目はNDPから得た別の状態です。ARPだけを調べてIPv6通信障害を結論付けません。

仕様の確認資料:RFC 826「An Ethernet Address Resolution Protocol」RFC 5227「IPv4 Address Conflict Detection」

関連用語