EN JA
ARP(4)
ARP(4) FreeBSD Kernel Interfaces Manual ARP(4)

名称

arpアドレス解決プロトコル

書式

device ether

解説

アドレス解決プロトコル (ARP) は、(IP アドレスのような) プロトコルアドレスと (イーサネットアドレスのような) ローカルネットワークアドレスの間のマップのためにダイナミックに使用されます。この実装は、イーサネットの IP アドレス、ARCnet またはトークンリングアドレスをマップします。それは、すべてのイーサネットインタフェースドライバによって使用されます。

ARP は、インターネットアドレスとイーサネットアドレスのマッピング (対応付け) をキャッシュします。インタフェースがキャッシュにないアドレスのマッピングを要求する場合、 ARP は、マッピングを要求するメッセージをキューに入れ、アドレスのマッピングを要求するネットワークに関連するメッセージをブロードキャスト (同報通信) します。応答があった場合、新しいマッピングは、キャッシュされ、すべての保留中 (pending) のメッセージが送信されます。 ARP は、マッピング要求の応答を待つ間に高々 1 つのパケットをキューに入れます。だがしかし、直前に ``送信された'' パケットは、保持されます。ターゲットホストがいくつかの要求の後で応答しないなら、転送の試みにエラーを返すことができる、ホストは、ダウンしていると考えられます。このマッピングについてさらに要求することは、 1 秒ごとに 1 つのパケットに律速 (ratelimit) される、 ARP 要求再転送することになります。そのエラーは、目的のホストの応答がなければ EHOSTDOWN そして、ルータの応答がなければ EHOSTUNREACH です。

ARP のキャッシュは、動的に作成されたホストルート (経路) としてシステムルーティングテーブルに格納されます。直接接続されているイーサネットネットワークへのルート (経路) は、 ( RTF_CLONING フラグが設定された) “クローニング”ルートとしてインストールされ、そのネットワーク上の個々のホストへのルートとしてオンデマンドで (要求に応じて) 作成されます。これらのルートは、周期的にタイムアウトします (通常有効になった後 20 分でタイムアウトし、使用していない時にはエントリは、有効になりません)。

ARP のエントリは、 arp(8) ユーティリティで追加、削除、変更できます。手動で追加されたエントリは、一時的か、永久か、または“公表”されるかもしれません。公表される場合、システムがあたかもそれが要求の目標であるかのように、ホストのための ARP 要求に応答します。

過去に、ARP は、トレーラカプセル化の使用を交渉するために使用されていました。これは、もはやサポートされていません。

ARP は、ローカルホストに成り済ますホスト (つまりローカルホストのアドレスの ARP マッピング要求に応答するホスト) を受動的に監視します。

プロキシ ARP は、ローカルホストがそれ自体のアドレスでそれ以外のアドレスを求める要求に応答するための機能です。通常、 FreeBSD のプロキシ ARP は、ARP 要求のプロキシが要求されている与えられたサブネットの内側で各ホストのためのエントリを加えることによって、 arp(8) ユーティリティを使用するホストごとの基準でセットアップされます。しかしながら、“proxy all”機能によってローカルホストは、入って来る要求のものと異なり、ある他のネットワークインタフェースを通して到達可能な、 すべての ホストのためのプロキシとして動作します。それは、 sysctl(8) MIB 変数 net.link.ether.inet.proxyall を 1 に設定することによって有効になります。

MIB 変数

ARP プロトコルは、 sysctl(3) MIB の net.link.ether.inet ブランチの多くの設定可能な変数を実装します。
allow_multicast
カーネルは、ハードウェアアドレスに設定されたマルチキャストビットがある ARP のエントリをインストールするべきかどうか。そのようなエントリのインストールは、RFC 1812 違反ですが、いくつかの独自のロードバランシング技術は、ネットワークのルータにそうすることを要求します。デフォルトでオフされます。
log_arp_movements
カーネルは、1 つのハードウェアアドレスから他のアドレスに IP アドレスの動きをログ記録するべきかどうか。下記の 「診断」 を参照してください。デフォルトでオンされます。
log_arp_permanent_modify
カーネルは、永続的な ARP のエントリを修正するネットワークのリモートホストの試みをログ記録するべきかどうか。下記の 「診断」 を参照してください。デフォルトでオンされます。
log_arp_wrong_iface
カーネルは、属している IP ネットワークアドレスが、他のインタフェースに接続されるとき、インタフェースの ARP エントリを挿入する試みをログ記録するべきかどうか。下記の 「診断」 を参照してください。デフォルトでオンされます。
max_log_per_second
1 秒ごとに設定された値へのリモートでトリガされたログ記録するイベントの制限数。デフォルトは、1 秒ごとに 1 つのログメッセージです。
max_age
どれくらい長く ARP エントリがリフレッシュされる必要があるまで、キャッシュに保持されるか。デフォルトは、1200 秒です。
maxhold
エントリが解決されている間に、どれだけのパケットがエントリごとの出力キューに保持されるか。デフォルトは、1 つのパケットです。
maxtries
ホストがダウンしているかエラーが返されると考えられる前に再転送する数。デフォルトは、5 回です。
proxyall
ネット上のすべてのホストに対して ARP プロキシを有効にします。デフォルトでオフされます。
useloopback
ARP エントリがローカルアドレスに追加されるなら、トラフィックを強制的にループバックインタフェースに通らせます。デフォルトでオンされます。
wait
不完全な ARP のエントリの生存期間。デフォルトは、20 秒です。

診断

arp: %x:%x:%x:%x:%x:%x is using my IP address %d.%d.%d.%d on %s!
ARP は、異なるイーサネットアドレスでそれ自身のインターネットアドレスのマッピング要求に応答するローカルネットワーク上の別のホストを発見しました。一般的に、2 つのホストが同じインターネットアドレスを使用しようとしていることを示しています。
arp: link address is broadcast for IP address %d.%d.%d.%d!
ARP は、ホストについての情報を要求し、そのホストのイーサネットアドレスがイーサネットブロードキャストアドレスであることを示す応答を受け取りました。これは、デバイスが誤設定されたか故障したことを示します。
arp: %d.%d.%d.%d moved from %x:%x:%x:%x:%x:%x to %x:%x:%x:%x:%x:%x on %s
ARP は、参照されたホストのイーサネットアドレスのキャッシュ値を持っていましたが、ホストが新しいアドレスであることを示す応答を受け取りました。これは、通常、ホストのハードウェアアドレスが変わる時、またはモバイルのノードがローカルサブネットに到着するか離れる時に起こります。それは、また、プロキシ (代理) ARP との問題を示すことができます。このメッセージは、sysctl の net.link.ether.inet.log_arp_movements を 1 に設定する場合にだけ出力することができます。これは、システムのデフォルトの振る舞いです。
arpresolve: can't allocate llinfo for %d.%d.%d.%d
参照されたホストのルートは、ARP が要求されたデバイスを指します。しかし、ARP は、ホストの MAC アドレスを格納するルーティングテーブルのエントリを割り付けることができませんでした。これは、通常ルーティングテーブルの誤設定を示します。また、カーネルがメモリを割り付けることができない場合、それが起こるかもしれません。
arp: %d.%d.%d.%d is on if0 but got reply from %x:%x:%x:%x:%x:%x on if1
物理的な接続は、if0 と if1 の両方の同じ論理的な IP ネットワークに存在します。また、エントリが上記の IP アドレスの ARP キャッシュに既に存在しているならそれが起こるかもしれなくて、ケーブルは、if0 から切断されて、次に、if1 に再接続しています。このメッセージは、sysctl の net.link.ether.inet.log_arp_wrong_iface を 1 に設定する場合にだけ出力することができます。これは、システムのデフォルトの振る舞いです。
arp: %x:%x:%x:%x:%x:%x attempts to modify permanent entry for %d.%d.%d.%d on %s
ARP は、ローカル ARP テーブルで永久的なエントリを上書きすることを試みる ARP 応答を受信しました。システムのデフォルトの振る舞いである、 sysctl net.link.ether.inet.log_arp_permanent_modify が 1 に設定される場合にだけ、このエラーは、ログ記録されます。
arp: %x:%x:%x:%x:%x:%x is multicast
カーネルは、マルチキャストのハードウェアアドレスがあるエントリをインストールすることを拒絶しました。そのようなアドレスがインストールされることを本当に望むなら、sysctl net.link.ether.inet.allow_multicast を正の値に設定します。

関連項目

inet(4), route(4), arp(8), ifconfig(8), route(8), sysctl(8) Plummer, D., RFC826, An Ethernet Address Resolution Protocol. Leffler, S.J. and Karels, M.J., RFC893, Trailer Encapsulations.
May 11, 2013 FreeBSD