如何在Ubuntu 17.04中禁用systemd-resolved?
禁用systemctl disable
无效,该服务似乎已重新启动(通过Networkmanager?)
如何在Ubuntu 17.04中禁用systemd-resolved?
禁用systemctl disable
无效,该服务似乎已重新启动(通过Networkmanager?)
Answers:
此方法适用于Ubuntu版本17.04(Zesty),17.10(Artful),18.04(Bionic),18.10(Cosmic)和19.04(Disco):
禁用并停止systemd解析的服务:
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中的名称解析。请在启动板上查看此错误(感谢Vincent)。
我最近升级到了(k)Ubuntu 17.04,我也偶然发现了对systemd的更改。
我认为我的设置非常典型,因为我的宽带HUB中有一个DNS提供程序,这是我网络上所有设备(其中有一些)的主要信息来源。
systemd有一些美,并不是全部都不好,但是真正不好的是文档,Ubuntu团队缺乏沟通以及gung-ho的心态,“尽管改变它,但只要改变它”。
对我来说,解决办法是编辑/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已被绝密。
它应显示为:
主机:文件mdns4_minimal dns [NOTFOUND =返回]解析[!UNAVAIL = return] dns
这是一个令人困惑的配置,因为[NOTFOUND = return]表示处理在此结束。后面的条目将永远不会被使用。
如果您的VPN出现泄漏问题,并且不知道如何设置systemd(像我一样),则可以按照第一个答案中所述的方式将其删除,但不要添加该dns=default
行,因为它将激活名称服务器127.0 .0.1。要将路由器设置为dns,请在文件/etc/resolvconf/resolv.conf.d/
夹中创建“ tail” 文件,并添加以下行nameserser 192.168.1.1
ln -sf /var/run/resolved/resolv.conf /etc/resolv.conf
如果您弄乱了此文件,该怎么办。