使用 systemd-resolved 覆盖 Ubuntu 20.04 DNS

Ser*_*lle 14 ubuntu dns systemd-resolved

如何配置 Ubuntu 20.04 系统以覆盖默认 DNS?

似乎默认情况下有一个全局和每个链接的 DNS 设置。

我尝试了一些不起作用的事情:

  • /etc/systemd/resolved.conf使用 DNS 服务器进行编辑
  • /etc/systemd/network/enp0s3.conf使用配置的 DNS 服务器创建
  • 通过编辑从 DHCP 请求中删除所有与 DNS 相关的参数 /etc/dhcp/dhclient.conf

所有这些更改(和组合)都会导致 DNS 服务器被添加到全球 DNS 服务器列表中。

大多数“解决方案”是安装resolvconf或用/etc/resolv.conf文件替换符号链接,并在那里设置 DNS 服务器。这两个似乎都是一种解决方法。

我想使用现有工具 ( systemd-resolved) 来覆盖 DNS 服务器。

正如@xenoid 在评论中所建议的那样:通过 GUI 设置接口的 DNS 会生成一个/etc/NetworkManager/system-connections/enp0s3.nmconnection包含正确 DNS 服务器的文件,输出resolvectl status包括正确的 DNS 服务器,但这不是我的想法。我正在寻找一种使用 进行配置的解决方案,这在systemd-resolved我能找到的情况下是可能的,但目前尚不清楚如何。因为这需要 GUI 安装。

Tom*_*art 14

  1. 更新 /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=8.8.4.4

Run Code Online (Sandbox Code Playgroud)
  1. 重启系统解决: service systemd-resolved restart
  2. systemd-resolve --status

输出应如下所示:

Global
         DNS Servers: 1.1.1.1
                      8.8.8.8
...
Run Code Online (Sandbox Code Playgroud)

  • 您需要更改“/etc/resolv.conf”链接指向的文件。将其指向“/run/systemd/resolve/resolv.conf”。查看此错误:https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1774632 (11认同)
  • 我这样做了,这并没有改变每个链接的 DNS 设置 (2认同)
  • “systemd-networkd”未激活,“networkctl status enp0s3”输出接口的设置,我特别注意到“状态:n/a(非托管)”。您想了解一些具体信息吗? (2认同)
  • 请改用 `resolvectl status`。在 systemd 239 中,“systemd-resolve”已重命名为“resolvectl”。 (2认同)

小智 8

@David R 的这条评论非常有帮助:

rm -f /etc/resolv.conf
ln -sv /run/systemd/resolve/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)