配置 Zeroconf 以广播多个名称

配置 Zeroconf 以广播多个名称

我想使用 Zeroconf 或类似程序从单个 Ubuntu Server 10 实例在本地网络上广播多个主机名。它必须是 zeroconf 或类似程序,因为它将用于虚拟机配置,并将被复制,所以我不能依赖外部 DNS 服务器。我收集了许多资源,但还没能弄清楚。有办法做到这一点吗?

以下是我收集的一些资源:http://bit.ly/l5W4ab

编辑:将 VirtualBox 设置为 DNS 服务器也是可以的。

答案1

您可以配置阿瓦希使用以下方式发布任意主机名/etc/avahi/hosts,但您需要指定要将主机名映射到的确切 IP 地址。似乎没有办法将多个主机名发布到 Avahi 检测到的 IP 地址。您可以编写一个启动脚本,/etc/avahi/hosts在发现虚拟机的 IP 地址后进行填充。

答案2

这是一个小型的 systemd 服务,它可以让您为当前机器指定一个别名,例如test.localhostname.local假设您的机器名为hostname)。

设置

首先安装 avahi-utils(如果还没有安装的话):

sudo apt-get install avahi-utils

然后将以下内容放入/etc/systemd/system/[email protected]

[Unit]
Description=Publish %I as alias for %H.local via mdns

[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/avahi-publish -a -R %I $(avahi-resolve -4 -n %H.local | cut -f 2)"

[Install]
WantedBy=multi-user.target

avahi-resolve用于获取主机名已发布的当前 IP 地址)

使用

然后,为了使当前机器test.local除了当前机器之外还可用hostname.local,您可以使用以下命令启用该服务:

sudo systemctl enable --now [email protected]

您可以通过启动多个服务来启用多个别名,例如 [email protected][email protected],这利用了 systemd 的多实例功能:

sudo systemctl enable --now [email protected]
sudo systemctl enable --now [email protected]

当然,您也可以使用以下命令单独禁用每个别名:

sudo systemctl disable --now [email protected]

享受!

答案3

我使用了一个名为avahi-aliases之前,它不在 Debian 存储库中,而且似乎维护得不够好。在 Github 上也有https://github.com/airtonix/avahi-aliases

答案4

为什么不直接将您的 ubuntu 服务器设置为 dns 和 dhcp 服务器,而不用担心零配置问题呢?首先,配置 dhcp 服务器以提供满足您需求的一定范围内的地址。然后,在机器上设置转发名称服务器。 这些说明与您想要执行的操作非常相似。基本上,您允许 dhcp 服务器动态更改您的 dns 服务器。然后,当网络上的其他虚拟机启动时,它们会将其预配置的名称发送到 dhcp 服务器。dhcp 服务器依次在 dns 中为您的本地域设置这些名称。

另一个非常简单的选项是设置类似DNSmasq。DNSmasq 可以读取服务器的 /etc/hosts 文件并通过 dns 将这些条目提供给网络上的其他计算机。因此,在这种情况下,您将在服务器上维护一个包含所有 VM 名称的大型 hosts 文件,并且该计算机将再次自动通过 dns 提供这些名称。在这种情况下,您仍然希望使用 dhcp,以便 VM 可以自动获取网络上的地址,但这比为 dns 配置 BIND 更简单。

我怀疑 dhcp + dnsmasq 可能适合您,除非您尝试运行大量虚拟机。

相关内容