![如何在 Ubuntu 中禁用 systemd-resolved?](https://linux22.com/image/892684/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20%E4%B8%AD%E7%A6%81%E7%94%A8%20systemd-resolved%EF%BC%9F.png)
如何在 Ubuntu 17.04 中禁用 systemd-resolved?
禁用它systemctl disable
不起作用,服务似乎已重新启动(由 Networkmanager 重新启动?)
答案1
此方法适用于 Ubuntu 版本 17.04 (Zesty)、17.10 (Artful)、18.04 (Bionic)、18.10 (Cosmic)、19.04 (Disco) 和 20.04 (Focal):
禁用并停止 systemd-resolved 服务:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
[main]
然后在你的部分中放入以下行/etc/NetworkManager/NetworkManager.conf
:
dns=default
删除符号链接/etc/resolv.conf
rm /etc/resolv.conf
重启 NetworkManager
sudo systemctl restart NetworkManager
还请注意,禁用 systemd-resolvd 可能会破坏某些用户的 VPN 名称解析。请参阅启动板上有此错误(谢谢,文森特)。
答案2
如果您使用的是 Ubuntu 18.04 Server(或 Ubuntu 20.04 Server),则这些答案都不适用。 user2427436 的答案最接近。
问题是 systemd-resolved 是/运行存根解析器,我只需要完全禁用它(根据问题)。我需要这样做是因为 Zimbra 8.8.15 (FOSS) 带有自己的集成解析器(未绑定)。
就我的情况而言,我从服务器 18.04 的库存(原始)安装开始,裸机(嗯,实际上是虚拟机)上的选项很少。
以下是菜谱:
vi /etc/systemd/resolved.conf
edit line #DNSStubListener=yes
to be DNSStubListener=no
systemctl stop systemd-resolved
systemctl status systemd-resolved
rm /etc/resolv.conf
reboot to test...
/etc/systemd/resolved.conf 现在的样子是这样的:
# See resolved.conf(5) for details
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
DNSStubListener=no
这就是全部了。
此后,您可以随意安装您想要的任何其他解析器。
答案3
我最近升级到了 (k)Ubuntu 17.04,并且偶然发现了 systemd 的变化。
我认为我的设置相当典型,因为我的宽带 HUB 中有一个 DNS 提供商,这是我的网络上所有设备(其中有几个)的主要信息来源。
systemd 有一些优点,它也并非全都是缺点,但真正糟糕的是其文档、Ubuntu 团队缺乏沟通,以及“尽管它会破坏每个人的利益,我们也要改变它”的激进心态。
经过一番折腾之后,我找到的解决方案是编辑 /etc/systemd/resolved.conf:
[Resolve]
DNS=192.168.1.254 # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan # <-- change to your localdomain name (maybe .local)
#LLMNR=yes <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp
在不明白为什么这行不通之后,我发现还需要切换/etc/resolv.conf
到 systemd 提供的那个。开箱即用的安装不是这种情况(出于我不知道的原因)。
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
然后就不会使用本地 DNS 服务器,所有 DNS 请求都将发送到我的 HUB。
我认为这比删除并放入其他解决方案要好得多,因为 systemd-resolv 现在是默认设置。
顺便说一句,一个相关的问题是已/etc/nsswitch.conf
被阉割。
原文应为:
hosts: files mdns4_minimal dns [NOTFOUND=return] resolve [!UNAVAIL=return] dns
这是一个令人困惑的配置,因为[NOTFOUND=return]
处理到此结束。它之后的条目将永远不会被使用。
答案4
我觉得有必要添加这个出现在 dupe 上的优秀答案,它涵盖了你想要 ifupdown + dhclient + resolvconf 的最小设置的情况(是的,这在 2021 年的 Ubuntu Focal 中仍然是可能的)。
其他答案未涵盖此用例。也许我们应该努力为我们在网络堆栈中可能需要的大多数不同组合提供非 systemd 解析的设置(基于 netplan、基于 networkmanager、wicd 等)。