我刚刚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