新しい rootfs をフラッシュするたびに IP アドレスが変わるのはなぜですか?

新しい rootfs をフラッシュするたびに IP アドレスが変わるのはなぜですか?

私は Raspberry Pi 3 システムで作業しており、Buildroot を使用して独自の rootfs を構築しています。最初は、init システムとして BusyBox を使用していましたが、wpa_supplicant を使用してオンボードの WiFi カードを構成すると、新しい rootfs で SD カードを再構築/再フラッシュしても、ルーターは常に同じ IP アドレスをボードに割り当てました。その後、systemd を使用するように切り替えました。今では、SD カードを再構築/再フラッシュするたびに、ルーターはデバイスが異なると認識し、MAC アドレスが同じままであっても、rootfs を再フラッシュするたびに異なる IP アドレスを割り当てます。この問題の原因は何でしょうか。

答え1

システムを確認するよりも、ルーターを確認する方が答えが見つかる可能性が高くなります。ルーターの Web インターフェイスを確認すると、次のことがわかる場合があります。

  • DHCP リース時間はどうなっているか。DHCP リースの期限が切れて、新しい IP が割り当てられるかどうかを確認できます。
  • ルーターから見たRaspberry PiのMACアドレスを確認します。Raspberry Piに1つのMACアドレスしか表示されないか、ルーターが毎回異なるMACアドレスを表示するかを確認できます。それは新しい IP アドレスが割り当てられる理由。

答え2

ルーターが MAC アドレスと IP アドレスの関連付けを長期間記憶することはまずありません。MAC アドレスは IP アドレスよりはるかに多いため、DHCP サーバーは異なるクライアントに同じ IP アドレスを連続して割り当てられるように準備する必要があります。一般的なサーバーは、リースの有効期限が切れるとすぐに MAC-IP の関連付けを忘れてしまいます。

ただし、クライアントは、関連付けを長期間記憶している可能性があります。DHCP クライアントは、特定の IP アドレスを要求できます。サーバーはこの要求を無視できます。通常、IP アドレスが適切な範囲内にあり、現在割り当てられていない場合は、要求を受け入れます。クライアントはリース情報をどこかに保存していると思われます (/var/lib/dhcp探すのに良い場所でしょう)。また、ルーターは通常、要求を受け入れます。新しい rootfs をフラッシュすると、この保存されたリースがないため、ルーターは現時点で優先する IP アドレスを選択します。

関連情報