如何禁用 systemd-resolved 并使用 dnsmasq 解析 DNS?

Art*_*yom 41 dns dnsmasq 16.10 17.04 systemd-resolved

Ubuntu 16.10+systemd-resolved用作 DNS 解析器。

我更喜欢将 setup 16.04dnsmasq用作解析器。

我怎么能在 16.10+ 上做到这一点,尤其是在 17.04 上?

qui*_*tic 47

dnsmasq 包在 16.10 和 17.04 中仍然可用。

  1. dnsmasq禁用之前systemd-resolved安装和依赖项(或至少下载它们的包):

    sudo apt-get install dnsmasq
    
    Run Code Online (Sandbox Code Playgroud)
  2. 禁用systemd-resolved并验证dnsmasq正在运行:

    sudo systemctl stop systemd-resolved
    sudo systemctl disable systemd-resolved
    
    systemctl status dnsmasq
    
    Run Code Online (Sandbox Code Playgroud)
  3. 季节dnsmasq口味。应用您的设置后,重新启动dnsmasq

    sudo systemctl stop dnsmasq
    sudo systemctl start dnsmasq
    
    Run Code Online (Sandbox Code Playgroud)

在第 2 步之后,在第 3 步完成之前,您可能没有可用的系统解析器。您可能需要重新启动网络子系统(或简单地重新启动)才能dnsmasq使用默认配置运行。在我的测试中,添加一个已知的 DNS 服务器/etc/dnsmasq.conf并重新启动dnsmasq就足以让它在 liveCD 环境中工作。

  • 对我来说,这是一个很好的答案,但还需要@blabla 的答案中的其他步骤,将 `dns=dnsmasq` 配置添加到 `/etc/NetworkManager/NetworkManager.conf` (3认同)
  • 很好的答案,似乎禁用 NetworkManager 时唯一的解决方案是不可接受的! (2认同)

小智 20

除了@quixotic 的回答:

确保您在 /etc/NetworkManager/NetworkManager.conf 中有:

[main]
dns=dnsmasq
Run Code Online (Sandbox Code Playgroud)

如果您需要添加它,请像这样重新启动 NetworkManager:

sudo systemctl restart NetworkManager
Run Code Online (Sandbox Code Playgroud)

并且/etc/resolv.conf需要是到/var/run/NetworkManager/resolv.conf. 可以这样做

sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)