我的公司在 Ubuntu 虛擬機器上向客戶分發軟體。最近,我們已將所有客戶端虛擬機器從 Ubuntu 16/18 更新到 Ubuntu 20.04。
我們一直遇到 DNS 名稱解析無法在內部網路上運行的問題。它在網路外部運作(我們能夠 ping 通外部網站),但我們無法透過 DNS 名稱連接到內部網路上的電腦 - 只能透過 IP 位址。在許多情況下,我們能夠解析舊虛擬機器 (Ubuntu 16/18) 上的內部 DNS 名稱,但當我們使用相同的網路設定安裝新虛擬機器時,它不起作用。
我們通常為虛擬機器設定靜態IP。客戶的 IT 部門向我們提供他們的網路資訊和內部 DNS 伺服器,我們相應地設定我們的00-installer-config.yaml
文件
/etc/netplan/00-installer-config.yaml
設定範例:
network:
ethernets:
enp0s10f0:
addresses: [192.168.10.200/24]
gateway4: 192.168.10.1
nameservers:
addresses: [192.168.10.1, xxx.xxx.xxx.xxx, etc.]
version: 2
在舊的虛擬機上,我們通常無法透過 DNS 名稱 ping 通內部計算機,直到新增本地網域名稱。例如。ping fs01
不會起作用,但ping fs01.clientdomain.local
會起作用。然而,在 Ubuntu VM 上似乎沒有任何幫助。我們總是必須恢復為檔案伺服器的 IP 位址,而不是使用網域名稱。在大多數情況下,這很好,因為 IP 是靜態的並且不會更改,但情況並非總是如此,我們更希望能夠透過 DNS 名稱進行連接。
網路和網域確實不是我的強項。如果有人可以就嘗試的事情或研究的領域提出建議,我們將不勝感激!
更新
我嘗試了將內部名稱伺服器 IP 位址添加到命令中的建議nslookup
並截取了一些螢幕截圖。看起來虛擬機器確實能夠透過 找到主機nslookup
,但前提是我要明確包含名稱伺服器 IP。
192.168.1.4 是名稱伺服器,也是我們嘗試連線的主機。
筆記:這是在舊的 Ubuntu 18.04 VM 上運行的,使用相同的內部名稱伺服器和 FQDN 主機名稱。
常規 Ping
user@ubuntu:~$ ping <hostname.domain.local>
ping: <hostname.domain.local>: Temporary failure in name resolution
簡單的nslookup
user@ubuntu:~$ nslookup <hostname.domain.local>
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find <hostname.domain.local>: SERVFAIL
帶有名稱伺服器 IP 的 nslookup
user@ubuntu:~$ nslookup <hostname.domain.local> 192.168.1.4
Server: 192.168.1.4## Heading ##
Address: 192.168.1.4#53
Name: <hostname.domain.local>
Address: 192.168.1.85
Name: <hostname.domain.local>
Address: 192.168.1.4
在本例中,192.168.1.4 名稱伺服器是 yaml 檔案中唯一的名稱伺服器條目。所以我不明白這可能是文件中名稱伺服器順序的某種問題:
network:
ethernets:
enp0s10f0:
addresses: [192.168.1.21/24]
gateway4: <gateway>
nameservers:
search: [<domain.local>]
addresses: [192.168.1.4]
version: 2