我在 Fedora 28 上安装了一个简单的绑定服务器。
默认情况下,没有答案的 dns 查询将发送到根服务器。但是我希望它们转到 openDNS 服务器。
我已删除区域“。”条目,删除了named.ca,配置了转发器,但查询仍然继续转到根服务器。我只是不明白为什么它一直忽略设置。
我尝试将转发器放在“。”区域,禁用 dnssec。但不起作用。
这是我的配置:
acl "trusted" { 192.168.0.10; 192.168.0.11; 192.168.0.0/24; };
options {
listen-on port 53 { 127.0.0.1; 192.168.0.10; };
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-transfer { 192.168.0.11; };
allow-query { trusted; };
forwarders { 208.69.38.205; 8.8.4.4; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named/named.conf.local";
答案1
我认为您在配置中犯了和我一样的错误,省略一个选项并不等同于禁用它。如果我尝试您的设置,然后添加“recursion no”,它不再起作用。如果我添加“recursion yes”,它就可以工作并使用转发器。删除“recursion yes”它仍然可以工作,这让我相信它是那些实际上不需要存在的默认值之一。您可以尝试在配置中明确添加“recursion no”并查看结果吗?
我还发现我的转发器正在工作。我只是误解了 dig 的输出,让你以为你正在使用根服务器。运行 tcpdump 显示它正在使用转发器(启用了递归)。
10:47:33.510150 IP ns1.example.com.60730 > resolver1.opendns.com.domain: 61783+% [1au] A? bol.com. (48)
10:47:33.510394 IP ns1.example.com.60390 > resolver1.opendns.com.domain: 9220+ [1au] NS? . (40)
10:47:33.511347 IP ns1.example.com.40736 > resolver1.opendns.com.domain: 43411+% [1au] PTR? 222.222.67.208.in-addr.arpa. (68)
10:47:33.534959 IP resolver1.opendns.com.domain > ns1.example.com.60730: 61783 1/0/1 A 185.14.169.113 (52)
我注意到的另一件奇怪的事情是,如果您的配置文件中没有转发器,也没有指向根服务器的区域“。”,bind 仍会将您的请求发送到根服务器。根据文档,这是内置在代码中的。所以我真的很想知道如何禁用这些根服务器。我将转发器设置为不存在的地址,但 nslookup 仍然解析。根据 tcpdump,它只是转到了另一个 dns 服务器,不知道它从哪里获得地址。
10:42:45.732005 IP ns1.example.com.52230 > 192.168.200.1.domain: 64083+% [1au] A? hln.be. (47)
10:42:46.933559 IP ns1.example.com.37736 > 193.108.91.125.domain: 36207% [1au] A? hln.be. (47)
10:42:46.937345 IP ns1.example.com.51521 > 192.168.200.1.domain: 29431+% [1au] PTR? 125.91.108.193.in-addr.arpa. (68)
10:42:46.963452 IP 193.108.91.125.domain > ns1.example.com.37736: 36207*- 1/0/1 A 104.104.202.130 (51)
我仍然承认我在这件事上是错误的。
答案2
您无法使用递归名称服务器执行您想要执行的操作。递归服务器要求使用根服务器提示,否则它们永远无法以递归方式运行。听起来你正在尝试做的是建立一个转发nameserver,这是不同的配置。对于初学者,您可能应该设置:
recursion no;
这样,任何未得到您本地区域满足的请求都应发送到您的转发器。在此配置中,根提示无关紧要。