Domain-Name-System

配置 Zeroconf 以廣播多個名稱

  • December 30, 2020

我只想使用 Zeroconf 或類似的東西從 Ubuntu Server 10 的單個實例在本地網路上廣播多個主機名。它必須是 zeroconf 或類似的,因為它將在虛擬機配置中使用並且將被複製,因此我不能依賴外部 DNS 伺服器。我收集了很多資源,但一直無法弄清楚。有沒有辦法做到這一點?

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

編輯:也可以將 VirtualBox 設置為 DNS 伺服器。

您可以將Avahi配置為使用 發布任意主機名/etc/avahi/hosts,但您需要指定將主機名映射到的確切 IP 地址。似乎沒有辦法將多個主機名發佈到 Avahi 檢測到的 IP 地址。您可以編寫一個啟動腳本,該腳本/etc/avahi/hosts在發現 VM 的 IP 地址後填充。

這是一個小的 systemd 服務,它可以讓您為目前機器指定一個別名,例如test.localhostname.local假設您的機器被呼叫hostname)。

設置

首先安裝 avahi-utils,如果你還沒有:

sudo apt-get install avahi-utils

然後將以下內容放入/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

avahi-resolve用於獲取已為主機名發布的目前 IP 地址)

採用

然後,要使目前機器與目前機器一樣可用test.localhostname.local您可以使用以下命令啟用該服務:

sudo systemctl enable --now avahi-alias@test.local.service

您可以通過啟動多個服務來啟用多個別名,例如 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

當然,您也可以通過以下方式單獨禁用每個別名:

sudo systemctl disable --now avahi-alias@test2.local.service

享受!

引用自:https://serverfault.com/questions/268401