我的公司在 Ubuntu VM 上向客户分发软件。最近,我们一直在将所有客户端 VM 从 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 虚拟机上,这似乎根本没有帮助。我们总是必须恢复到文件服务器的 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 文件中唯一的名称服务器条目。因此,我不明白文件中名称服务器的顺序怎么会存在问题。
另请注意,我尝试在参数中添加本地域search:
。我没想到这会改变结果,但无论如何尝试了一下——没有变化:
network:
ethernets:
enp0s10f0:
addresses: [192.168.1.21/24]
gateway4: <gateway>
nameservers:
search: [<domain.local>]
addresses: [192.168.1.4]
version: 2