
ブートローダとアプリケーションを備えたマイクロコントローラ ベースのデバイスがあります。デバイスには 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 を送信するのは得策ではありません。