我读https://www.rfc-editor.org/rfc/rfc2606和https://www.rfc-editor.org/rfc/rfc6761,但我仍然不明白一些细节。为什么https://www.rfc-editor.org/rfc/rfc2606没有明确说明我们应该为保留域返回哪个响应代码?https://www.rfc-editor.org/rfc/rfc6761添加更多详细信息?
在https://www.rfc-editor.org/rfc/rfc6761, 他们说:
相反,缓存 DNS 服务器应该默认对所有此类查询立即生成负面响应
负面的是 NXDOMAIN 还是 REFUSED?还是由开发人员决定?在同一个 RFC 的开头,写道:
为了使这个特殊的“保证不存在”的名称有任何用途,必须将其定义为返回 NXDOMAIN
它适用于这里吗?我不明白他们为什么使用“否定响应”一词。此外,这个 RFC 是否在现实世界中实现?看起来 dig 仍在向根服务器查询这些保留域。
答案1
和NXDOMAIN
负面回应可以互换使用,例如这就是它们的定义在RFC 2308,2并澄清RFC 8020;RFC 6761 正在标准化特殊用途域名,而不是 DNS 响应代码。
值得一提的是,这并不适用于所有保留域名,但更具体地说
in-addr.arpa.
的域RFC 1918 私有地址即,10.in-addr.arpa.
对于10./8
,168.192.in-addr.arpa.
对于192.168./16
和所有172.16./12
列出的RFC 6761, 6.1- 和 TLD
test.
(6.2),localhost.
(6.3) &invalid.
(6.4), - 但不是至
example.
,example.com.
,example.net.
&example.org.
应正常处理(6.5) (例如example.com. IN A 93.184.216.34
)。
另外,这个 RFC 在现实世界中实现了吗?
如果你dig -x 192.168.1.1
,你应该得到一个NXDOMAIN
来自1.1.168.192.in-addr.arpa. IN PTR
任何递归名称服务器,但权威性服务器私有网络可以回答任何当地适用的问题。
例如,在 BIND 中,这是通过
named.conf.local
:// Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918";
/etc/bind/zones.rfc1918
:zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; . . .
/etc/bind/db.empty
:; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost.
这保证了NXDOMAIN
递归名称服务器上的回复,而不是使用来自
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
答案2
NXDOMAIN 是否定的响应。REFUSED 是拒绝提供服务,这里不适用。