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