テストホスト/デスクトップ: Linux Dystantest 4.2.0-42-generic #49~14.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
RNDIS デバイス/ガジェット: Linux colibri-imx6 3.14.52-v2.6b2+g7c83cef #1 SMP Wed Jun 29 15:57:37 CEST 2016 armv7l GNU/Linux
それぞれ6つの同じRNDIS USBガジェットデバイスを持つ複数の組み込みボックスで構成されるシステムがあるとします。
デフォルトの/etc/systemd/network/rndis.networkファイルは次のとおりです。
[マッチ]
タイプ=ガジェット
[回路網]
住所=192.168.11.1/24
DHCPサーバー=はい
だから私たちはデフォルトでdhcpdをオンにし、ブートアドレスを11.1にハードコーディングしました。 dhcpdプロセスはどこにも見つからず、ベンダーはこれがsystemdのユニークな部分であると言います。 /etc/dhcpd.conf がなく、systemd に属する構成ファイル以外の構成ファイルが見つかりません。
最大の問題は、すべてのN x 6デバイスを11.1にハードコードできないことです。したがって、これらのデバイスに組み込まれているアプリケーションは、IPを192.168. "serialnum". "channelnum"のようなものに変更します。
今まではそんなに良くなった。唯一の問題は、Ubuntuシステムで公開/更新すると、常に192.168. "serialnum".Xの代わりにIP 192.168.11.Xを取得することです。
したがって、デフォルトのdhcpdは、クライアントが新しいリースを要求するときに使用するインターフェイスの実際のIPではなく、初期設定ファイルからまだサブネットを取得します。
どこでもこれを変更するためのドキュメントが見つかりません。通常のサーバーは起動時にIPを維持する必要があることを認識していますが、これは組み込みデバイスであるため、異なる動作をし、DHCPサーバーシステムに「セミ」ダイナミックIPが必要です。 systemd ドキュメントの [DHCPServer] セクションでは、これを動的にするためのエントリを指定せず、新しいサブネットを使用するように dhcp サーバーを再起動できる dhcpd.service ファイルも指定しません。
組み込みガジェットマシンの代わりにUbuntuマシンにDHCPサーバーをインストールできますが、それを行うと、私のwin32クライアントのサポート〜悪夢〜が発生するため、これは不可能です。
技術者の一人に支払うことによって、私たちが作るすべてのシステムのすべてのチャンネルにあるrndis.networkファイルのIPを手動で設定することもできますが、ここにサーバーを設定するとき(できればルールに従うようにするのも愚かです) )現在のサブネットが新しいリースを発行するとき。