为何我的本地 DNS 没有被使用?

为何我的本地 DNS 没有被使用?

我刚刚bind在 CentOS 8 上安装使用:linuxapt.com/blog/caching-dns-server-on-centos-8 和 nslookup google.com`显示:

Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.15.78
Name:   google.com
Address: 2607:f8b0:4004:810::200e

绑定配置:

listen-on port 53 { 127.0.0.1; any; };
allow-query { localhost; any; };
allow-query-cache { localhost; any; };
recursion yes;

169.254.169.254 不是我的 IP。我是不是漏掉了什么?

编辑我的 /etc/hosts 中有这个169.254.169.254 metadata.google.internal # Added by Google- 我不明白它会如何影响 dns

解析配置:


# Generated by NetworkManager
search us-east4-c.c.haawks.internal c.haawks.internal google.internal
nameserver 169.254.169.254

答案1

默认情况下,NetorkManager 正在运行并且它将/etc/resolv.conf使用通过 DHCP 收到的设置进行写入。

当您运行本地 DNS 服务器时,您不希望出现这种情况,并且您基本上希望始终使用 127.0.0.1 作为名称服务器。您需要告诉 NetworkManager 您想要这样做:

添加/etc/NetworkManager/conf.d/90-dns-none.conf

[main]
dns=none

和发行systemctl reload NetworkManager。另请参阅man NetworkManager.conf

然后/etc/resolv.conf根据您的喜好进行编辑。


顺便说一句,您也可以使用 将文件标记为只读,然后chattr -i /etc/resolv.conf使用systemctl reload NetworkManager。结果类似。

或者,你可以用 替换/etc/resolv.conf实际文件的符号链接nameserver 127.0.0.1,后跟systemctl reload NetworkManager。这也会告诉 NetworkManager 远离它。

答案2

显然(在 GCP 机器上)命令每次sudo systemctl restart NetworkManager.service都会被覆盖/etc/resolv.conf,并且我的名称服务器丢失了...不确定为什么,但这是一个不同的问题。

答案3

确保您的本地 DNS 可以解析域。您可以通过以下dig命令测试本地 DNS 服务器:

dig google.com @127.0.0.1

如果有效,请打开此文件:/etc/sysconfig/network-scripts/ifcfg-eXX

并将您的本地 DNS 服务器添加到此文件:

DNS1=127.0.0.1

然后重新启动 NetworkManager。它将更新您的 /etc/resolv.conf 文件。

答案4

在 Centos7 上,为了在重启时保留 /etc/resolve.conf,请添加 #prevents DHCP 覆盖 /etc/resolv.conf 文件

PEERDNS=否

到 /etc/sysconfig/network-scripts/ifcfg-adapter_name_file

来源:Negus 的 Linux Bible

相关内容