私はBusyBoxとudhcpc(一部)を使用する組み込みLinuxに取り組んでいますDHCPクライアントとしてのBusyBox)。
DHCPオプション66でFTPサーバーを配信するようにDHCPサーバーを構成した場合、オプションにホスト名(おそらく有効なDNS名)が含まれている限り、すべてが正常です(つまり、/etc/udhcpc.script
のtftp
変数に構成された値が含まれます)。 。オプションにIPアドレスが含まれている場合、変数tftp
には値「bad」が含まれます。
この振る舞いの理由とポイントは何ですか?
この動作に関する情報がudhcpcのドキュメントに見つかりません( https://udhcp.busybox.net/README.udhcpc 、 https://udhcp.busybox.net/ =)また、Googleで有用な検索結果が得られません。
RFC2132 このオプションでIPアドレスを許可しない制限は含まれていません(私の理解では)。
Udhcpcのオプション66からIPアドレスを取得する方法はありますか?
更新:オプション150(または66)は、別のTFTPサーバーを使用するために必要ないことがよくあります。DHCPで構成可能であれば、 元のsiaddrフィールド で十分です。サーバー、最後を参照してください。
RFC 5859 これを示しています:
概要
このメモには、「TFTPサーバーアドレス」の既存の使用法が記載されています。
オプション。現在使用されているオプション番号は150です。[...]
DHCPを介してこのサーバーを検出するには、一般的に受け入れられている2つの方法があります。 DHCPヘッダーの「sname」フィールド [RFC2131] および「TFTPサーバー名」オプション(66) [RFC2132] 。ただし、これらの情報ソースには両方とも、TFTPサーバーのホスト名が含まれています。次に、そのホスト名をIPアドレスに変換する必要があります。これを実現するための通常の方法はDNS [RFC1034]です。
[...]
- 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については知りませんでしたし、必要もありませんでした。