将 DNS 配置应用于所有接口

将 DNS 配置应用于所有接口

在 Ubuntu 20.04 上,无论以太网接口如何命名,我如何配置它们的 DNS?我有一些机器以eth0作为主网络接口,另一些机器以ens5。我想使用相同的 DNS 配置,而不管接口名称如何。一位同事推荐了 NetPlan,所以我首先尝试了它。以下配置(带有占位符 IP 地址、域名和 MAC 地址)避免了一些错误,例如未转义的*被解释为 YAML 别名尝试,或者match: {name: {}}生成Name=其日志标记为已忽略的网络配置行。但它导致机器无法访问。

network:
  version: 2
  ethernets:
    all-ethernet-interfaces:
      match:
        name: "*"
      dhcp4-overrides:
        use-dns: no
      nameservers:
        addresses: [10.1.2.3, 10.1.2.4]
        search: [my.domain.com]

唯一的其他 netplan 配置片段是 50-cloud-init.yaml:

network:
    ethernets:
        eth0:
            dhcp4: true
            dhcp6: false
            match:
                macaddress: 01:20:34:50:67:08
            set-name: eth0
    version: 2

我已经能够通过重复的、特定于接口的配置部分来解决这个问题,但我更愿意使用重复性较低且更灵活的方法。我愿意更直接地配置 systemd-networkd 或 systemd-resolved,而不是使用 netplan。一旦配置开发完成,我将使用 Ansible 来应用配置。

答案1

您不需要使用 netplan 来执行此操作。因此,请从 netplan 配置文件中删除任何与 dns 相关的设置,以避免偶尔更改 dns 设置。然后/etc/systemd/resolved.conf根据您的配置编辑文件。请参阅man resolved.conf详细信息。无论如何,systemd-resolved 是默认管理 dns 的主要工具。

相关内容