我使用 Fedora 进行桌面使用,并且:
yum -y install caching-nameserver
service named restart
chkconfig --level 5 named on
并将名称服务器设置为 127.0.0.1。如果我:
dig google.com | grep SERVER
;; SERVER: 127.0.0.1#53(127.0.0.1)
然后我就可以看到没问题了……我正在使用之前安装的本地 DNS 缓存服务器!欢呼! (我的 ISP 不再提供蹩脚的 DNS 了..)
然后我尝试了tcpdump
:
tcpdump -n -i eth0 dst port 53
我可以看到我的本地 DNS 服务器不使用 ISP 的 DNS 服务器进行解析,而是使用根服务器(IP 地址)DNS 服务器来解析我的域名(我在网络浏览器中输入的域名)。
问题#1: 我的本地 DNS 缓存服务器真的吗仅使用仅根服务器 DNS 服务器进行解析?
问题2:如果使用DNSSEC为我提供了有关 DNS 的更多安全性,那么我如何将我的电脑/本地 dns 缓存设置为仅使用且仅允许 DNSSEC?我认为 DNSSEC 是几年前(?)部署在根 DNS 服务器上的。
更新:我误解了一些东西,要仅使用 DNSSEC,我需要:我正在访问的域的所有 NS 都必须配置为使用 DNSSEC - 这并不是很广泛使用,所以我不能只使用 DNSSEC。
答案1
默认情况下,您设置的本地解析器根本不会使用 ISP 的解析器。它将开始直接向根询问其所需的一切答案。根将返回诸如“我不知道在哪里
www.example.com
;你应该去交谈com
,这里有一组关于如何交谈的地址com
”之类的答案(然后你会尝试与 交谈com
,这会将您引向example.com
)"。最后,您将沿着这条链直到得到答案。如果您需要查找ftp.example.com
,您的本地解析器将有一个“缓存”,允许它直接进入服务器example.com
,或者,如果您愿意,foo.com
它会直接发送到com
服务器,而不会询问根。对于 DNSSEC,世界上的大部分地区已经从上到下部署了它,但较低的域还没有。根已签名、
com
已签名、net
已签名等。但是facebook.com
、google.com
等还没有。幸运的是,DNSSEC 的设计考虑到了这一点,并且尝试安全地遵循 DNS 记录的软件最终将到达名称服务器(com
例如that says "I don't know where
www.facebook.comis and you should go talk to
facebook.com`,哦,顺便说一句,它们尚未受到保护” IE、DNSSEC 为您提供了一种称为 .证明是不安全的。这可以让您确切地知道区域的父区域表示子区域未签名(这是一种简化;它们可能已签名但尚未“链接”)。
值得注意的是,DNSSEC 默认情况下未启用,您需要在绑定配置文件中将其打开。我认为默认的 fedora name.conf 现在已启用 DNSSEC,但您应该检查一下。在您的named.conf文件中,您将有望找到一个包含根受信任密钥的部分:
trusted-keys {
. 257 3 8 "AwEAAagAIKlVZr...";
}
以及打开 DNSSEC 验证的选项部分:
options {
dnssec-enable yes;
dnssec-validation yes;
};
例如,启用此选项后,如果您执行 a dig +dnssec www.dnssec-tools.org
,您应该会AD
在输出中看到返回的标志。该AD
标志表示该记录已通过 DNSSEC 验证。如果您搜索,www.facebook.com
您将看不到此标志。
# dig +dnssec www.dnssec-tools.org
...
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
^^
^^
答案2
您应该forwarders
在本地服务器中配置为指向您的 ISP 服务器。您还可以设置forward-only
.
不确定#2。