我們有一個虛擬網絡,在 Azure 上有一個雲端伺服器。這個虛擬網路有多個伺服器節點 - 包括 Windows 電腦和一些 Linux 電腦。其中一台 Windows 電腦託管本機 DNS 伺服器,用於虛擬網路內的名稱解析。所有節點都是使用 DNS 選項建立的,以便本機 DNS 註冊到節點中作為其 DNS。此外,虛擬網路設定已更新,以包含此 DNS 伺服器 (172.16.0.4) 作為 VN 的 DNS。
我的 Windows 電腦能夠正常運作 - 在新配置或重新啟動時,DNS 會自動更新以反映電腦的新 IP(如果有)。
但是,Linux 電腦根本沒有在此本機 DNS 上註冊。 Linux 節點能夠使用本機 DNS (172.16.0.4) 解析 Windows 節點 IP,但它們無法透過名稱解析到達其他 Linux 節點。
我嘗試更新 resolvconf/resolvconf.d/tail 文件,並添加“搜尋”條目,然後重新啟動。也嘗試將 FQDN 提供到 Linux 伺服器的主機名稱檔案中。我注意到 resolv.conf 仍然有一個「search reddog.microsoft.com」字串。這表示正在使用的 DNS 後綴仍然是舊的後綴,即使 VN 內有新的本機 DNS 伺服器可用。 resolv.conf 如下圖所示:
nameserver 172.16.0.4
search reddog.microsoft.com
據我了解,該問題的根本原因是 Azure DHCP 伺服器應向此本地 DNS(已正式註冊為 VN 級 DNS)發送 DDNS 請求,以更新出現此情況的任何新節點或重新啟動的節點的記錄越南。但Azure DHCP似乎沒有將這些DDNS請求傳送到DNS。我缺什麼?
答案1
我最初的想法是,這是您的 DNS 伺服器接受來自 Linux 伺服器的註冊的問題,而不是它被定向到那裡的問題。要檢查的一件事是,您的 DNS 區域是否已配置為接受不安全的更新?這是必需的,因為 Linux 伺服器將無法通過身份驗證來更新 DNS。
答案2
您可以透過新增以下行來修改 DHCP 用戶端的設定:
supersede domain-name "your.domainname.com";
supersede domain-search "your.domainname.com";
supersede search "your.domainname.com";
/etc/dhcp/dhclient.conf
通常您可以在檔案中找到 DHCP 設定。dhclient
在裡面尋找/etc/
合適的。
答案3
更不用說每次伺服器重新啟動時 /etc/resolv.conf 的內容都會重設為 Azure 預設值。因此,即使您確實更改了它,下次重新啟動時,它也會返回 reddog.microsoft.com 的搜尋網域以及您的預設 Azure 名稱伺服器。