Avahi 如何设置最初具有相同主机名的多个服务器

Avahi 如何设置最初具有相同主机名的多个服务器

让我解释一下我想做的事情:

  • 我正在创建一个将安装在 SD 卡上的 Linux 发行版映像
  • 将默认主机名设置为 myHostname.local
  • 这一切都在我的本地网络上

如果我只有 1 个服务器,这没问题,但如果我运行另一个服务器,该怎么办?主机名如何工作,因为两个主机现在都是同一个名称。

  • myHostname.local<--服务器 1
  • myHostname.local<--服务器2

Avahi 是否提供动态更改主机名的方法?类似这样的方法:

  • myHostname1.local<--服务器1
  • myHostname2.local<--服务器2

有什么建议么?

答案1

Avahi 是 Zeroconf 协议的一个实现,在RFC6762,将其运行的计算机的主机名更改为其他主机名在末尾添加一个数字

此反重复进程不会改变机器上的主机名(因此机器上运行的其他应用程序将看到并宣布相同的主机名),如果机器以不同的顺序启动,则它们可能会获得不同的主机名。

如果您追求主机名的一致性和稳定性,则此解决方案将不起作用。

有不同的解决方案可以为每台机器提供唯一的主机名:

  • 修改部署过程,为每个安装赋予唯一的主机名(可以是手动干预),
  • 用一个配置管理系统在初始部署后修改每个安装,
  • pwgen让每台机器在第一次启动时(或者,如果机器上的存储是只读的,则在每次启动时)生成随机名称(例如使用密码生成器)。

最简单的解决方案应该是改变您的部署流程,但您可能在某些时候需要配置管理系统。

对于最后一种解决方案,我不建议在小型个人部署中使用它,因为与手动修改每台机器相比,您很可能要花费更多的时间来使其工作。还请注意,除了名称持久性之外,它几乎与您使用 avahi 已经拥有的一样。

答案2

使用avahi-utils

使用avahi-utils(Debian),你可以编写一个 shell 脚本,通过以下方式扫描网络以查找重复项avahi-browse命令(在所有网卡上进行网络连接*),然后通过设置主机名avahi-set-host-name

*: 一次在单个网络接口上执行此操作是不够的。一些设备实现了多 NIC 系统,其中设备可以同时连接到多个网络。这些 NIC 还可以彼此独立地断开/重新连接,您应该注意,它们可以独立于启动事件执行此操作。因此,启动/登录脚本无法解决您的问题。您需要一个在网络连接时触发的脚本:

以下是几种在网络连接时触发脚本的方法供您使用

此外,您可能希望将脚本设置为计时器,以扫描网络变化。还可以考虑在设备之间建立 Web 服务,以通知它们另一台设备已连接。

相关内容