先日、Drive Network サービスで提供する基本環境の大半を FreeBSD 7.1-RELEASE i386 -> FreeBSD 9.1-RELEASE amd64 に移行しましたが、この過程で /ver/log/messages に気になるメッセージが頻出しました。
arplookup 0.0.0.0 failed: host is not on local network
良く見ると、7.1-RELEASE では頻出していますが、9.1-RELEASE ではまったく出て来ません。出て来る頻度は 1 – 2 秒単位で始終出続けています。また、同じ秒に複数行に渡ることもあります。
最初は、FreeBSD に関するトピックとして検索を開始しました。7.1-RELEASE i386 では、/sys/netinet/if_ether.c の 1025 – 1026 行目にこのログを出力する個所があります。
if (why) { #define ISDYNCLONE(_rt) \ (((_rt)->rt_flags & (RTF_STATIC | RTF_WASCLONED)) == RTF_WASCLONED) if (create) log(LOG_DEBUG, "arplookup %s failed: %s\n", inet_ntoa(sin.sin_addr), why); /* * If there are no references to this Layer 2 route, * and it is a cloned route, and not static, and * arplookup() is creating the route, then purge * it from the routing table as it is probably bogus. */ if (rt->rt_refcnt == 1 && ISDYNCLONE(rt)) rtexpunge(rt); RTFREE_LOCKED(rt); return (0); #undef ISDYNCLONE
ここをコメントアウトして kernel 再構築する案もあれば、ipfw で 0.0.0.0 に関する処理をする案もありました。
kernel 再構築は厭いませんが、明らかにそれまでと異なる現象がネットワーク内に発生しているからこそ出現しているので、コメントアウト -> kernel 再構築による案はアプローチが消極的過ぎます。
なお、ipfw は一応試しましたが、うまく動作しませんでした。また、9.1-RELEASE amd64 では、arplookup の debug 出力に関する個所は見当たらないことまでも確認しました。
一旦保留し、ネットワークレイヤでアプローチすべく、tcpdump を採取することにしました。
tcpdump -e -n 'host 0.0.0.0'
確かにいくつかの MAC アドレスから該当ホストに確認している様子が見られました。
これらの MAC アドレスが L3 スイッチの show arp で 48bit すべて一致するケースが見当たりませんでしたが、前半 24bit を Hardware Address (MAC Address) Lookup で確認すると、Cisco であることが分かりました。
L2, L3 スイッチのいずれかの polling 的な動作が引き起こしている可能性を考え始めた時に、Cisco Catalyst 2960S IOS Update (Part 4) で初期化後に config を再投入した時、過去のバージョンには存在しない ip device tracking という行が存在したことを思い出しました。(続く)
- Cisco Catalyst 2960S IOS Update (Part 1) (ダウンロード, バックアップ)
- Cisco Catalyst 2960S IOS Update (Part 2) (12.2 系 -> 15.2 系)
- Cisco Catalyst 2960S IOS Update (Part 3) (15.0 系 -> 15.2 系)
- Cisco Catalyst 2960S IOS Update (Part 4) (設定初期化)
- Cisco Catalyst 2960S - interface range
- Cisco Catalyst 2960S - crypto key generate rsa
- Cisco Catalyst 2960S - crypto key generate rsa modulus
- Cisco Catalyst 2960S - ip device tracking (Part 1)
- Cisco Catalyst 2960S - ip device tracking (Part 2)