我使用 Ubuntu 20.04 配置了两个本地 DNS,有时有效,有时无效
为什么它有时有效,有时无效,在本地 DNS 一段时间后从解析器中消失。互联网速度很慢,出现超时,无法访问公共 DNS。然后出现下一个 DNSnames 服务器,这是我的本地 DNS。然后我就可以访问我的本地 URL。
执行时systemd-resolve --status | sed -n '/DNS Servers/,/^$/p'
我得到:
DNS Servers: 10.0.2.3
192.168.1.70
192.168.1.1
DNS Domain: ~.
但据我所知,我从未定义过 DNS 服务器 10.0.2.3。
有时,当我使用本地 DNS 时,一切都按预期运行。我可以使用以下命令进行检查:
resolvectl status
如果它返回(我删除了一些内容):
Link 2 (enp0s3)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 192.168.1.70
DNS Servers: 10.0.2.3
192.168.1.70
192.168.1.1
DNS Domain: ~.
因此,当前的 DNS 服务器:192.168.1.70 是想要的。但情况并非总是如此。我想让我的系统更稳定,它将始终使用 192.168.1.70
当cat /run/systemd/resolve/resolv.conf
我看到 10.0.2.3 确实已定义时。我无法(也不应该)编辑此文件,但可以编辑 /etc/resolv.conf。
查看时cat /etc/resolv.conf
没有显示 DNS 服务器 10.0.2.3 但是确实显示nameserver 127.0.0.53
并且我不应该编辑此文件。
这很奇怪。首先,从生成的文件中,我被指向一个用于生成该文件的文件,我应该编辑该文件。其次,该文件中提到了一个不同的 DNS 名称服务器,因此它似乎run/systemd/resolve/resolv.conf
是从其他地方生成的。
根据https://askubuntu.com/tags/resolvconf/info是编辑 resolv.conf 的程序。所以我尝试使用它。
bernard@VBoxMain20:/etc$ resolvconf
Command 'resolvconf' not found, but can be installed with:
sudo apt install openresolv # version 3.10.0-1, or
sudo apt install resolvconf # version 1.82
bernard@VBoxMain20:/etc$ sudo apt install openresolv
因此我执行了resolvconf
但发现没有办法编辑 resolv.conf
我也尝试使用 Ubuntu 18.04+ 提供的 netplan,但没有成功。
我只想使用我在 GUI 中自己定义的 DNS 名称服务器,不做任何其他事情。我该怎么做?
答案1
愚蠢的问题:这个 VirtualBox 实例是否使用 NAT 网络?如果是,您有两个选择:
- 切换到“桥接网络”,这将导致虚拟机完全控制其网络资源
- 使用主机的解析器作为 DNS 代理。根据文档:
为了解析网络名称,NAT 引擎的 DHCP 服务器提供了主机的已注册 DNS 服务器列表。如果出于某种原因您需要隐藏此 DNS 服务器列表并使用主机的解析器设置,从而强制 VirtualBox NAT 引擎拦截 DNS 请求并将其转发到主机的解析器,请使用以下命令:
VBoxManage modifyvm "VM name" --natdnshostresolver1 on
请注意,此设置类似于 DNS 代理模式,但是代理模式仅将 DNS 请求转发到适当的服务器,而解析器模式将解释 DNS 请求并使用主机的 DNS API 查询信息并将其返回给客户机。
我通常以桥接模式运行所有 VBox 实例,因为它可以避免此类问题。
希望这能满足您的需求