<環境> Raspberry Pi 3B+ Raspbian Stretch の環境で、あるWifi機器と接続しています。HWは内蔵WiFiです。ネットワークサービスとしてはデフォルトで搭載されている、dhcpcdを使っており、接続先のWiFi機器からDHCPにてIPをもらっています。WiFIもデフォルトのままでRaspbianのGUIでSSIDとWPA2のパスフレーズを設定しています。Wifi以外に有線イーサネットでネットワーク接続があり、有線側からログインして動作をチェックしています。
<課題>RaspberryPiからのユニキャストARP
このWiFI機器とRaspberryPiが不定期に通信するのですが、時々 相手側がARPに応答しないことがあります。
接続確認のために、10分に一回 このWifi機器あてにPINGを出しています。(cron起動)このWiFi機器自体は、数日単位ではPINGは問題なく動作していて、たまに動かなくなる(一度動かなくなるとずっと応答しなくなる:見てみるとARPリクエストに応じない)という状況です。WiFi機器については、他社のものでおいそれと内部動作を見るわけにもいきません。
このこと自体は、相手側機器の問題だと思うのですが、RaspberryPi側のARPの挙動が納得できないものなので、ご存じの方がおられたらお教えください。
ラズパイ上のWiresharkで見ると、
ラズパイの起動後初回のPINGについては ARPは通常どうりブロードキャストがPINGに先立って出ていますが、2回目以降のPINGについてはPINGの数秒後にユニキャストでARPが発信されています。
そもそもARPは、相手のMACアドレスを知りたいためにブロードキャストで流すものとの理解をしています。PINGをするときに事前にARPをしないのは、ARPテーブルができているからで、この後で送られる相手を指定したユニキャストARPを送る意味がわかりません。WireSharkではユニキャストであること以外は通常のARPパケットのようです。
WiFiの電波が途切れたりしてインターフェイスやDHCPアドレス再配布が起きたりすると再度、通常のブロードキャストARPが出るようですが、そうでない限り稼働中、ずっとユニキャストARPが、PINGの後から出ているようです。相手側のARPキャッシュを維持するためでしょうか? 10分も放っておけば、通常RaspbianのARPテーブルはクリアされると思うので、まずブロードキャストでARPすると想定していましたが、そうではないようです。他の機器との通信のない状況で確認したところ、10分後にもPINGがいきなり出て(=RaspberryPiは相手のMACアドレスを知っている)、その後にユニキャストが出ています。なお後に出るユニキャストARPは出ないこともあります。PINGが短時間に続くと出ないのですが、後に出るARPなんていうのは意味がないので出ないのが正しい動作だと思っていますが違うのでしょうか?
Raspbian もしくはDebianに搭載されているネットワークサービス、LinuxのARPの挙動に詳しい方、お教え願います。
またこのことが相手側機器がARP応答しなくなる何らかの原因になりえるでしょうか? 例えば相手側が、ARPテーブルをクリアしてしまうような。WiFi機器のバグとしてしまえばそれまでなんですが、証拠を上げないと指摘しにくく、Raspbian のARPに問題はなく、当方の問題ではないことを示したいというのが、本質問の意図です。
(追加)
下記は WireShark の 画面コピー 1回目(正常に先にブロードキャストでARP)から1時間後に2回目のPINGを実施 その後 3回目 4回目も1時間後ですが、
2回目以降 ARPは先に出ず、PINGの後にユニキャストのARPリクエストが出ています。
回答1件
あなたの回答
tips
プレビュー