让netplan写入resolve.conf

e-p*_*ate 8 networking dns dhcp resolv.conf netplan

我有一台 Odroid C2 - 一台运行 ARM 最低版本 18.04 的单板计算机。最初,它使用 NetworkManager + systemd-resolved 来管理网络连接,但由于我只使用以太网并且始终连接到同一个网络,我发现它有点矫枉过正,所以我禁用了它们并转移到 Netplan。这是我的 /etc/netplan/02-networkd.yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
Run Code Online (Sandbox Code Playgroud)

如您所见,这是一个简单的 DHCP 配置。这是使用该配置的结果:

# netplan ip leases eth0
ADDRESS=10.0.0.4
NETMASK=255.255.255.0
ROUTER=10.0.0.1
SERVER_ADDRESS=10.0.0.1
T1=7200
T2=12600
LIFETIME=14400
DNS=10.0.0.1
NTP=10.0.0.1
DOMAINNAME=vault
CLIENTID=fff75f76ac00020000ab11a7b5e398b7e20ac7
Run Code Online (Sandbox Code Playgroud)

IP 地址和所有接口参数设置正确。我遇到的唯一问题是 DNS。我发现 netplan 不会更新,/etc/resolve.conf即使它在租赁中包含所有强制性信息。

有没有办法让 Netplane/etc/resolve.conf使用从 DHCP 接收到的 DNS 信息进行更新/配置,而无需使用 NetworkManager 或解决?以下是一些附加信息:

# ls -lA /etc/resolv.conf
-rw-r--r-- 1 root root 20 Apr 21 00:13 /etc/resolv.conf

# cat /etc/resolv.conf 
nameserver 10.0.0.1
search vault
Run Code Online (Sandbox Code Playgroud)

sla*_*sek 4

netplan 将解析器配置的管理委托给 systemd-resolved 是一个深思熟虑的设计决策。netplan 不支持根据 dhcp 查询的答案直接管理 /etc/resolv.conf。事实上,systemd-networkd 希望将此信息传递给 systemd-resolved,而 netplan 依赖于此行为。