在 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 的主要工具。