配置 Zeroconf 以广播多个名称

Jon*_*ney 11 domain-name-system hostname

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

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

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

non*_*lar 10

这里有一个小systemd服务,让你指定你目前的机器的别名一样test.local,除了hostname.local(假设你的机器被称为hostname)。

设置

首先安装 avahi-utils,如果你还没有安装:

sudo apt-get install avahi-utils
Run Code Online (Sandbox Code Playgroud)

然后将以下内容放入 /etc/systemd/system/avahi-alias@.service

[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
Run Code Online (Sandbox Code Playgroud)

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

然后为了使当前机器可用test.local,除了它的 current 之外hostname.local,您将启用该服务:

sudo systemctl enable --now avahi-alias@test.local.service
Run Code Online (Sandbox Code Playgroud)

您可以通过启动多个服务来启用多个别名,例如 avahi-alias@test1.local.serviceand avahi-alias@test2.local.service,它利用了 systemd 的多实例功能:

sudo systemctl enable --now avahi-alias@test1.local.service
sudo systemctl enable --now avahi-alias@test2.local.service
Run Code Online (Sandbox Code Playgroud)

当然,您也可以通过以下方式独立禁用每个别名:

sudo systemctl disable --now avahi-alias@test2.local.service
Run Code Online (Sandbox Code Playgroud)

享受!


mgo*_*ven 5

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

  • 这不适用于将别名指向运行 avahi 的同一服务器。我必须使用@nonrectangle 的答案才能使其工作。我认为 -R 参数是它不从主机文件工作而是使用 avahi-publish 工作之间的主要区别。 (2认同)