当本地 IP 更改时,systemd 内部 dhcp 服务器会在旧子网上提供租约

当本地 IP 更改时,systemd 内部 dhcp 服务器会在旧子网上提供租约

测试主机/桌面: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 6 月 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 系统上发布/更新,它仍然总是获得 IP 192.168.11.X,而不是 192.168."serialnum".X

因此,显然内在的 dhcpd 仍然从初始配置文件中获取子网,而不是从客户端请求新租约时使用的接口的实际 IP 中获取子网。

我在任何地方都找不到任何有关更改此内容的文档。我知道常规服务器应该在启动时保留其 IP,但这是一个嵌入式设备,因此它的行为必须有所不同,并且在 dhcp 服务器系统上具有“半”动态 IP。 systemd 文档的 [DHCPServer] 部分没有指定任何使其动态的内容,也没有指定任何允许我重新启动 dhcp 服务器以使其使用新子网的 dhcpd.service 文件。

我可以将 dhcp 服务器放在 ubuntu 机器上而不是嵌入式小工具机器上,但这将为我的 win32 客户创建一个支持~噩梦~,所以这是不可能的。

我可以付钱给我们的一位技术人员,让他们在我们制作的每个系统的每个通道上的 rndis.network 文件中手动设置 IP,但是当我在这里设置了一台服务器(如果我可以让它遵循任何规则)时,这也显得很愚蠢当前子网是在发出新租约时。

相关内容