yaml配置文件中的nameservers/addresses字段有什么作用?
我尝试过的任何应用程序都使用 /etc/resolv.conf 名称服务器。即使 resolvconf 停止,也会发生这种情况。
这是使用 systemd 作为解析器。生成或应用时没有错误。
解决
感谢所有回复的人。执行此操作后,netplan config yaml 配置名称服务器:
将 /etc/resolv.conf 链接替换为静态文件,如下所示
搜索域名服务器 127.0.0.53
那行得通。我发现我必须在 resolv.conf 中包含搜索,即使我的 netplan 配置 yaml 中有一个搜索字段。改天再拼图。
注意:这可能会重复来自 的信息
chili555,但是在与他们的讨论中,上述个人建议发布“权威”答案,因为我之前已经处理过这个确切的问题/问题。
在您的环境中目睹的行为与18.04 之前的systemd-resolved行为相同。dnsmasq这些更新会影响用于查找的netplan名称服务器。systemd-resolved答案的最后一部分对此进行了详细说明。
但首先,为了好奇,一些关于这种行为的历史,以及它与使用网络管理器和dnsmasq. (如果您只想要 18.04 相关的内容,请随意跳过本答案的下一部分)
18.04之前:dnsmasq作为本地缓存解析器
在 18.04 之前,每当您使用 GUI Ubuntu 时,它都会dnsmasq与网络管理器一起安装。网络管理器集成dnsmasq将更新dnsmasq“下一跳”服务器(上游 DNS 服务器)列表,以了解向何处发送查询。
因此,DNS 查询google.com将从请求解析的任何应用程序传递到dnsmasq,如果dnsmasq不知道 IP 地址或缓存条目已过期,则会将 DNS 请求传递到任何上游 DNS 服务器(对于本例) ,8.8.8.8或者8.8.4.4)。然后,您必须检查网络管理器或配置dnsmasq以查看“上游”DNS 服务器的位置。
这是从桌面 ISO 安装的图形 Ubuntu 中的典型行为。
相反,服务器 ISO 的默认安装遵循/etc/resolv.conf通过resolvconf包的传统“更新”方法,并直接使用,/etc/resolv.conf而不是通过dnsmasq.
18.04:,netplan和systemd-resolved
对于 18.04,默认 DNS 系统是systemd-resolved. 其操作dnsmasq方式与旧的操作方式类似,只不过它当前针对桌面和服务器 ISO 安装执行此操作。它还可以与 Network Manager(在 GUI 环境中用于管理 wifi 等)和 Netplan(更好地处理以太网)集成
systemd-resolved从netplan(服务器或自定义桌面)或网络管理器(默认桌面图像)传递要发送查询的 DNS 服务器列表(无论是静态配置还是通过 DHCP 配置)。因此,使用上面的相同示例,DNS 查询将google.com通过systemd-resolved的存根解析器,该解析器将返回缓存的查找值或将其传递到上游 DNS 服务器。
这模拟了 的默认行为dnsmasq,但还添加了一些额外的查找处理,以了解如何查询“localhost”和其他本地相关地址。
systemd-resolved使用 NetPlan 或 Network Manager,您可以使用以下命令获取上游 DNS 服务器列表:
systemd-resolve --status
Run Code Online (Sandbox Code Playgroud)
这会给你一堆输出。相关部分如下所示(为chili555方便起见,摘自 的答案):
DNS Servers: 8.8.8.8
8.8.4.4
2600:1700:5aa0:830::1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19106 次 |
| 最近记录: |