再現可能な DHCP アドレス

再現可能な DHCP アドレス

ブートローダとアプリケーションを備えたマイクロコントローラ ベースのデバイスがあります。デバイスには 1 つのイーサネット アダプタがあります。ブートローダは IP/UDP を使用してアプリケーション イメージをフラッシュします。アプリケーションにはフル機能の TCP/IP スタックがあります。

どちらのコンポーネントも、DHCP を使用して IP アドレスを取得します。奇妙なことに、DHCP プロセスでは両方の結果が異なります。両方の DHCP クライアントは、同じ MAC アドレスを持つ DHCPDISCOVER メッセージを使用するように構成されています。

DHCP サーバーは DHCPOFFER で何を送信する必要がありますか? IP アドレスが他の場所に割り当てられていない場合、同じ MAC アドレスに対して同じ IP アドレスを提供する必要がありますか?編集: 最後のアドレス割り当ては 10 秒前です。

DHCP サーバーは Linux ホスト上で実行されています。この動作を監視して理解できるように、このような手段を構成するにはどうすればよいでしょうか?

編集: DHCP サーバーの構成を制御できません。管理者は完全な制御を維持したいと考えています。

ブートローダーまたはアプリケーション内に、DHCP の結果に影響を与える可能性のある他の DHCP 設定はありますか?

答え1

リース時間の設定によって異なります。リース時間が十分に長い場合、アプリは同じアドレスを取得します。

しかし、確実性が必要な場合は、サーバー上で Mac の固定アドレスを宣言してください。

dhcpd を使用している場合は、次のようになります。

host foo {
  hardware ethernet 00:11:22:33:44:55;
  fixed-address 1.2.3.4;
}

実際には、オプション (50) を設定することで、DHCPDISCOVERY で IP を提案する方法がありますrequested IP address。ただし、サーバーがそれを認識するかどうかはわかりません。

オプション (51) もありIP address lease time、これをブートローダーで使用してより長い期間を提案することもできますが、サーバーの応答についてはよくわかりません。

より詳しい情報RFC2131 の翻訳

答え2

DHCP クライアントが DHCPDISCOVER を送信すると、サーバーは DHCP 登録を破棄する必要があります。同じ IP アドレスを取得するサーバーが存在します。これは間違いではありませんが、必ずしも必要ではありません。

DHCP アドレスを保持するには、クライアントはキャッシュされた IP 構成とともに DHCPACQUIRE を送信する必要があります。DHCP サーバーはそれを確認または拒否します。この状況では、DHCPDISCOVER を送信するのは得策ではありません。

関連情報