web-dev-qa-db-ja.com

udhcpc:DHCPサーバーがホスト名の代わりにIPアドレスを提供する場合、DHCPオプション66変数tftpに「bad」が含まれる

私はBusyBoxudhcpc(一部)を使用する組み込みLinuxに取り組んでいますDHCPクライアントとしてのBusyBox)。

DHCPオプション66でFTPサーバーを配信するようにDHCPサーバーを構成した場合、オプションにホスト名(おそらく有効なDNS名)が含まれている限り、すべてが正常です(つまり、/etc/udhcpc.scripttftp変数に構成された値が含まれます)。 。オプションにIPアドレスが含まれている場合、変数tftpには値「bad」が含まれます。

この振る舞いの理由とポイントは何ですか?

この動作に関する情報がu​​dhcpcのドキュメントに見つかりません( https://udhcp.busybox.net/README.udhcpchttps://udhcp.busybox.net/ =)また、Googleで有用な検索結果が得られません。

RFC2132 このオプションでIPアドレスを許可しない制限は含まれていません(私の理解では)。

Udhcpcのオプション66からIPアドレスを取得する方法はありますか?

2
DrP3pp3r

更新:オプション150(または66)は、別のTFTPサーバーを使用するために必要ないことがよくあります。DHCPで構成可能であれば、 元のsiaddrフィールド で十分です。サーバー、最後を参照してください。

RFC 5859 これを示しています:

概要

このメモには、「TFTPサーバーアドレス」の既存の使用法が記載されています。
オプション。現在使用されているオプション番号は150です。

[...]

DHCPを介してこのサーバーを検出するには、一般的に受け入れられている2つの方法があります。 DHCPヘッダーの「sname」フィールド [RFC2131] および「TFTPサーバー名」オプション(66) [RFC2132] 。ただし、これらの情報ソースには両方とも、TFTPサーバーのホスト名が含まれています。次に、そのホスト名をIPアドレスに変換する必要があります。これを実現するための通常の方法はDNS [RFC1034]です。

[...]

  1. TFTPサーバーアドレスオプションの定義

TFTPサーバーアドレスオプションはDHCPオプション[RFC2132]です。このオプションには、クライアントが使用できる1つ以上のIPv4アドレスが含まれています。このオプションの現在の使用法は、TFTPを介してVoIPサーバーから構成をダウンロードすることです。ただし、このオプションは、VoIP構成サーバーへの接続以外の目的で使用される場合があります。

オプションの形式は次のとおりです。

Code   Len   IPv4 Configuration Server Address(es)
+-----+-----+-----+-----+-----+-----+
| 150 |  n  |     IPv4 address      | ...
+-----+-----+-----+-----+-----+-----+

              Figure 1

オプションの最小長(n)は4です。

[...]

だから私はあなたの質問への答えを言うことができるだけです:いいえ、これにはオプション66をまったく使用できません、DHCPオプション150またはsiaddrフィールドはTFTPサーバーを指す「次のサーバー」構成ですが、このRFCは、一部の制限されたDHCPサーバーがこのフィールドにのみ戻ると述べています。


更新(解決策を明確にするためは、思ったよりも簡単かもしれません):

正しいsiaddr(つまり、DHCPサーバー自体とは異なる)の提供がDHCPサーバーでサポートされている場合(例:ISC dhcp、またはbusybox独自の dhcpd ) 、そしてもちろんそれはすでに dhcpcd クライアントによってサポートされています:

環境変数のパラメーターは次のとおりです。

$HOME     - The set $HOME env or "/"

[...]

siaddr        - The bootp next server option

[...]

siaddrは、これまで、別のTFTPサーバーを使用してDHCP経由でx86システムを起動するために使用してきたものです。たとえば、Debianネットワークのインストールに直接使用します。オプション66または150については知りませんでしたし、必要もありませんでした。

2
A.B