我有一台 Odroid C2 - 一台运行 ARM 最低版本 18.04 的单板计算机。最初,它使用 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
即使它包含最低限度的所有必需信息。
有没有办法让 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
答案1
netplan 将解析器配置的管理委托给 systemd-resolved 是一个经过深思熟虑的设计决定。netplan 不支持根据 dhcp 查询的答案直接管理 /etc/resolv.conf。事实上,systemd-networkd 希望将此信息传递给 systemd-resolved,而 netplan 依赖于此行为。
答案2
resolvconf、systemd-resolved 和 /etc/resolv.conf 之间似乎存在很多混淆。以下是我的看法:
Ubuntu 18.04 使用 systemd-resolved 进行名称解析。正如 @slangasek 正确指出的那样,netplan 将名称解析委托给 systemd-resolved。为了使 systemd-resolved 正常工作,/etc/resolv.conf 需要指向/运行/systemd/resolve/stub-resolv.conf。
但是,如果你的系统上还安装了 resolvconf 包,符号链接 /etc/resolv.conf 将错误地指向/运行/resolvconf/resolv.conf。这将导致名称解析失败,例如“名称解析暂时失败”错误。不建议手动编辑 /etc/resolv.conf。最简单的解决方法是删除 resolvconf 包。这将重置符号链接,一切都会好起来(您可能需要重新启动或至少重新启动 systemd-resolved 服务)。
答案3
我经常看到这种情况。用户删除了 /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!
答案4
/etc/netplan/*.yaml
实际上,netplan( )、systemd-resolved( /etc/systemd/resolved.conf
) 和之间存在很多混淆/etc/resolv.conf
。使用 netplan 配置网络时,如果 ping 成功但域名解析失败,请检查/run/systemd/resolve/resolv.conf
,此文件通常是从 生成的/etc/systemd/resolved.conf
。最新的 ubuntu 使用 netplan 配置网络,而较旧的 ubuntu 使用/etc/network/interfaces