经过无数次研究,我仍然不确定这是对还是错。请允许我问一下。
我在 Linux 上设置了绑定 DNS,并且设置了解析器首先监听本地主机,然后再监听其他主机。
我有一个域名,示例.com,它有亚马逊域名服务器。
在 Linux 上,我也有区域文件示例.com并且其写法为
example.com. 86400 IN NS < local host name >
当我命令
nslookup example.com
它将回归
Server: < local host ip >
Address: < local host ip >#53
删除/禁用区域文件后
它将返回正确的信息
Server: < amazon ns ip >
Address: < amazon ns ip >#53
我认为正确的设置是即使区域文件存在,dns 也可以找出真实名称服务器在哪里。
你能告诉我哪里出了问题吗?我应该深入研究哪里?
答案1
DNS 查找工作的优先级在文件中定义/etc/nsswitch.conf
如果你搜索该文件,你会发现 hosts 行如下
cat /etc/nsswitch.conf | grep hosts
hosts: files dns
因此,解析将首先在文件中查找条目/etc/hosts
,然后检查 DNS。DNS 优先级在文件中定义/etc/resolv.conf
因此, /etc/resolv.conf
您可能会有公共 DNS 条目。