netplan:netplan yaml 中的名称服务器。有什么效果?

Ste*_*ton 5 netplan

yaml配置文件中的nameservers/addresses字段有什么作用?

我尝试过的任何应用程序都使用 /etc/resolv.conf 名称服务器。即使 resolvconf 停止,也会发生这种情况。

这是使用 systemd 作为解析器。生成或应用时没有错误。

解决

感谢所有回复的人。执行此操作后,netplan config yaml 配置名称服务器:

  1. 清除解析配置;
  2. 将我的 LAN DNS 作为转发器放在 /etc/bind/named.conf.options 中;
  3. 将 /etc/resolv.conf 链接替换为静态文件,如下所示

    搜索域名服务器 127.0.0.53

那行得通。我发现我必须在 resolv.conf 中包含搜索,即使我的 netplan 配置 yaml 中有一个搜索字段。改天再拼图。

Tho*_*ard 5

注意:这可能会重复来自 的信息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:,netplansystemd-resolved

对于 18.04,默认 DNS 系统是systemd-resolved. 其操作dnsmasq方式与旧的操作方式类似,只不过它当前针对桌面和服务器 ISO 安装执行此操作。它还可以与 Network Manager(在 GUI 环境中用于管理 wifi 等)和 Netplan(更好地处理以太网)集成

systemd-resolvednetplan(服务器或自定义桌面)或网络管理器(默认桌面图像)传递要发送查询的 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)