背景

背景

背景

我目前正在使用netplan配置多台 Ubuntu Server 18.04 机器。我有许多机器(安装了 HASP 加密狗的专用测试单元),它们实际上是用螺栓固定在手推车上的,经常在使用它们的办公室里推来推去。通常,我只启用了链路本地寻址和 mDNS,当工程师将设备带到另一个实验室并将其连接到实验室交换机时,他们只需 ping 广播地址169.254/16,找出设备的 IP,然后继续使用它。由于我不想讨论的原因,在某些实验室中,DHCP 在任何情况下都不可用。


问题

我们雇用了一些不熟悉计算机网络的合同 Windows 开发人员(而且默认的 Windowsping实用程序显然无法 ping 广播地址)。我们需要找到一种方法,让这些开发人员能够非常轻松地识别网络上的设备,而无需改变这些设备在 Linux 实验室中的部署方式

我们被要求实现的解决方案(即我必须实现这个功能具体来说,所以从所有意图和目的来看,这都不是x-y问题),是:

  • 在设备的网络接口上默认启用 DHCP。
  • 如果无法访问 DHCP,请检查标志(例如,文件是否存在)以决定是否执行以下操作之一:
    • 启用链路本地寻址和 mDNS,或者...
    • 恢复为默认静态 IP 地址。

问题

我如何使用 来实现这一点,在 Ubuntu 中netplan,即:

  1. 我该如何配置netplan以尝试 DHCP,然后在失败时返回到 LL/mDNS?
  2. 我该如何配置netplan以尝试 DHCP,然后在失败时恢复到预定义的静态 IP?

如果需要的话,我可以不使用“根据文件是否存在采取行动”的逻辑(例如,我可以编写一些脚本来做到这一点),但我如何netplan通过yaml文件配置以尝试使用 DHCP,以及然后恢复至 LL/mDNS 或静态 IP?


迄今的工作

我发现关于该主题的各种帖子,但目前还没有任何涉及/需要使用netplan

编辑:这是一个接近的问题,但只希望在 DHCP 租约请求失败时将 IP 地址静态分配给接口:我不希望无条件分配 IP 地址。


谢谢。

答案1

netplan 不支持您所描述的回退方式。它支持在同一接口上同时使用本地链路地址和 DHCP 地址。(它还支持在同一接口上同时使用静态地址和 DHCP 地址,但这是一种不太常见的配置,而且您也明确表示这不是您想要的。)

要分配静态 IP 作为后备,我建议编写自己的 systemd 单元,运行 After=network-online.target 并检查是否已分配 IP 地址,如果没有,则自行分配一个。

相关内容