如何在 Ubuntu 16 中允许超过 3 个 DNS 服务器?

rta*_*aft 3 dns 16.04

在我的 中/etc/network/interfaces列出了多个服务器dns-nameservers,一组 ubuntu 服务器有 3 个,另外 4 个。我们没有问题,直到我们被迫向每个服务器添加另外 2 个,但我们仍然无法使用新的 DNS 服务器成功解析。经过一番调查,我们发现只有 3 个 DNS 服务器被复制到/etc/resolv.conf. 我们可以通过将 3 个主要服务器放在那里并省略备份 DNS 服务器来解决我们的紧迫问题,但我希望让所有必要的 DNS 服务器都可用。

至于为什么这么多:

  • 使用 8.8.8.8 是因为它比我们内部的更新信息更快
  • 我们的内部网络DNS
  • 数据库集群的另一个 DNS

Mic*_*icz 5

您可以使用dnsmasq添加任意数量的附加 DNS 服务器。这是如何做到的。

首先安装dnsmasq:

sudo apt install dnsmasq
Run Code Online (Sandbox Code Playgroud)

编辑配置文件并在那里添加您的 dns 服务器(文件末尾的 f.ex):

sudo nano /etc/dnsmasq.conf

server=8.8.8.8
server=8.8.4.4
Run Code Online (Sandbox Code Playgroud)

保存文件,现在编辑文件(并添加 127.0.0.1 作为名称服务器):

sudo nano /etc/resolv.conf

nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

重新启动 dnsmasq(甚至更好地重新启动 PC):

sudo service dnsmasq restart
Run Code Online (Sandbox Code Playgroud)

验证 dnsmasq 是否响应 DNS 查询(查找 SERVER,应为 127.0.0.1):

dig google.pl

;; SERVER: 127.0.0.1#53(127.0.0.1)
Run Code Online (Sandbox Code Playgroud)

注意:有时网络管理器可以覆盖该/etc/resolv.conf文件,因此您可以将其设为只读:

sudo chmod -w /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

注意 2:您可能必须禁用内置 dns

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved
Run Code Online (Sandbox Code Playgroud)