我有一个 Odroid C2 - 一台运行 18.04 最小 ARM 的单板计算机。最初,它使用 NetworkManager + systemd-resolved 来管理网络连接,但由于我只使用以太网并且总是连接到同一个网络,我觉得这有点矫枉过正,所以我将它们都禁用并转移到 Netplan。这是我的 /etc/netplan/02-networkd.yaml:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
如您所见,这是一个简单的 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
IP 地址和所有接口参数设置正确。我唯一的问题是DNS。我发现 netplan 没有更新,/etc/resolve.conf
即使它在 leas 中有所有强制性信息。
有没有办法在/etc/resolve.conf
不使用 NetworkManager 或解析的情况下使用从 DHCP 接收的 DNS 信息更新/配置 Netplane?以下是一些附加信息:
# 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
resolvconf、systemd-resolved 和 /etc/resolv.conf 之间似乎存在很多混淆。这是我的 2 美分:
Ubuntu 18.04 使用 systemd-resolved 进行名称解析。正如@slangasek 正确指出的那样,netplan 将名称解析委托给 systemd-resolved。为了使 systemd-resolved 正常工作, /etc/resolv.conf 需要指向/run/systemd/resolve/stub-resolv.conf。
但是,如果您还在系统上安装了 resolvconf 包,则符号链接 /etc/resolv.conf 将错误地指向/run/resolvconf/resolv.conf。这将导致名称解析失败,例如“名称解析中的临时失败”错误。不建议手动编辑 /etc/resolv.conf。最简单的解决方法是删除 resolvconf 包。这将重置符号链接,一切都会好起来的(您可能需要重新启动或至少重新启动 systemd-resolved 服务)。
netplan 将解析器配置的管理委托给 systemd-resolved 是一个深思熟虑的设计决策。netplan 不支持根据对 dhcp 查询的回答直接管理 /etc/resolv.conf。实际上,systemd-networkd 期望将此信息传递给 systemd-resolved,而 netplan 依赖于这种行为。
我经常看到。用户删除了 /etc/resolv.conf 的符号链接,并在那里放置了一个手写文件。这个符号链接实际上涉及三个不同的地方,我会给你最常见的一个......
在
terminal
...cd /etc
# 改变目录sudo mv resolv.conf resolv.conf.BAK
# 将当前的 resolv.conf 重命名为备份文件sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
# 重新创建标准符号链接注意:不要手动编辑/etc/resolv.conf!
您是否尝试过静态设置
一个简单的编辑
/etc/NetworkManager/NetworkManager.conf
和禁用systemd-resolved.service
(如这个答案https://askubuntu.com/a/907249/719422)。但仅此一项,虽然必不可少,但并不能保证 resolv.conf 的防篡改。以超级用户身份执行此操作:
netplan(
/etc/netplan/*.yaml
)、systemd-resolved(/etc/systemd/resolved.conf
) 和/etc/resolv.conf
. 使用 netplan 配置网络时,如果 ping 通但域解析失败,请检查/run/systemd/resolve/resolv.conf
,此文件通常是从/etc/systemd/resolved.conf
. 最新的ubuntu使用netplan配置网络,而老的使用/etc/network/interfaces