linux における arp の挙動に関するメモ
ちょっといろいろ謎かったので調べました。
ARP Request はいつ送信されるか
確認できたのは以下
- arp テーブルにエントリがない ip アドレスに接続を試みたとき
- エントリが「古い」とみなされた状態で再度接続を試みたとき(=無効とみなされたとき?)
ARP エントリの寿命が延びるとき
ARP エントリの寿命が短くなるとき
arp -d する以外には見つからなかった。少なくとも ping コマンドや telnet コマンドのレベルでは、何度か接続できなかったからといって ARP request が送信されるような挙動はみられなかった。
ARP に関する設定値
sysctl などで設定する。詳しくは man 7 arp にある。{if}はeth0とかをさす。
net.ipv4.neigh.{if}.arp_ignore
デフォルト0。これが有効だと、ARP リクエストを受信した際に、受信ホストが持つIP Addressへの問い合わせならば、どの Interfaceで受信したかにかかわらず、受信した Interface の Mac Address を応答する。
詳しくは kernel-doc の networking/arp-sysctl.txt に記載がある。
てか翻訳しとくか。
IPアドレスの解決要求は単に”解決要求”、解決要求にたいする応答は単に”応答”と記載します。
あと文脈から推測するに以下の用語がある。
arp_ignore - INTEGER
- ローカルターゲット IP アドレスの解決要求にたいする応答の挙動を定義する。
(感想:デフォルト2でいいじゃん。)