我想使用 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.local
(hostname.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 可能适合您,除非您尝试运行大量虚拟机。