总结:我需要进行什么配置才能解析.local
VM 客户机上的主机名,就像在 VM 主机上解析主机名一样。
长版本:我在 Windows 10 上使用 VMware Workstation(16.1.1 build-17801498)运行装有 Ubuntu 21.04 的虚拟机。Ubuntu 本身几乎是原版,我几乎没有对操作系统/环境本身进行任何更改(实际上现在什么都想不起来)。也许值得注意的是,我从以前的 Ubuntu 版本升级而来,我相信那是 20.04。
在主机上,我可以foo.bar.local
使用nslookup:
> nslookup foo.bar.local
Server: <...>
Address: 10.73.1.9
Name: <...>
Address: 10.132.0.30
Aliases: foo.bar.local
在客户机上,默认情况下,相同的解析尝试会失败
> host foo.bar.local
Host foo.bar.local not found: 2(SERVFAIL)
但我可以解析名称,如果我告诉主持人使用先前在(VM)主机上响应的相同 DNS 服务器:
> host ordermanagement-migration.comventure.local 10.73.1.9
Using domain server:
Name: 10.73.1.9
Address: 10.73.1.9#53
Aliases:
foo.bar.local is an alias for hello.world.local.
hello.world.local has address 10.132.0.30
所以我在想“为什么不一直使用该服务器?”并尝试通过网络管理器 GUI 对其进行配置:打开网络设置,转到 IPv4 选项卡,禁用“自动”并在字段中输入 IP。由于我的 VM 配置了两个接口(仅主机网络和用于公共 inet 访问的普通 NAT),为了安全起见,我对两个接口都进行了此操作。令我惊讶的是,在确认这些更改后,无论等待多长时间都没有导致输出发生明显变化systemd-resolve --status
:对于两个接口,它只是将相应的a.b.c.1
地址保留为 DNS 服务器。相反,我必须先禁用然后启用接口,之后服务器 IP 才会显示出来:
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (ens33)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.73.1.9
DNS Servers: 10.73.1.9
Link 3 (ens38)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 4 (docker0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
我不明白为什么对于ens38
(公共 inet 访问),根本没有显示 DNS 服务器。此时事情变得更加混乱,因为启用一个接口(在网络管理器中),我之前已在该接口上禁用 DNS 的“自动”,但突然显示“自动”已启用,但也列出了手动 DNS IP,但systemd-resolve --status
我仍然无法解析foo.bar.local
。
我也尝试过10.73.1.9
在 VMware 工作站的 NAT/DNS 设置中直接将其设置为主 DNS 服务器,但无济于事。
那么,如何才能foo.bar.local
默认在我的(VM)客户机上实现可解析,换句话说,无需指定10.73.1.9
要使用的名称服务器——在我需要foo.bar.local
可解析的应用程序上下文中我无法做到这一点。
附录:我的 VM 主机上有一个 VPN,以防万一。使用 (VM) 主机时,我始终保持 VPN 处于启用状态并处于连接状态。