我正在编写自己的dns服务器(它接近pi Hole项目,但具有一些不同/附加功能),现在我面临着一个(对我来说)奇怪的问题:
基本上,我想向外部dns服务器进行IP的PTR请求(尝试208.67.222.222和8.8.8.8)
问题是,通过获得SOA响应,我最终陷入了一个无休止的循环,其中主域名服务器与所请求的域相同(我想屏幕截图更为精确)
正如我已经提到的,我的基本想法是获取给定IP地址的所有/某些域。因此,我正在向(启动)DNS服务器发送PTR请求,其中查询为“ [[IP地址(反向)]。in-addr.arpa”。不出所料,答案是SOA答案,它应该为我提供有关哪个名称服务器可能具有回答该问题知识的信息。好吧,此名称服务器被解析为CNAME,要查询他,我需要他的IP地址。因此,我查询(开始)DNS来解析新DNS服务器的域。这正是我的问题:我最终陷入无休止的循环,导致(启动)DNS仅仅以SOA响应进行回答,其中目标名称服务器与所请求的域相同...我是否缺少某些内容? (嗯,我猜是这样,但是什么?)
我期望它应该像这样:
[dns1] -> SOA response (a.doma.in) -> [me]
[me] -> CNAME (a.doma.in) -> [dns1]
[dns1] -> CNAME response (a.doma.in: 123.123.123.123) -> [me]
[me] -> PTR -> [123.123.123.123]
[123.123.123.123] -> PTR answer -> [me]
但是现实是这样的:
[dns1] -> SOA response (a.doma.in) -> [me]
[me] -> CNAME (a.doma.in) -> [dns1]
[dns1] -> SOA response (a.doma.in) -> [me]
答案 0 :(得分:0)
您可能遇到的问题是SOA中的dns地址是A记录,而不是CNAME。您正在通过查找CNAME来创建循环
您要针对要解析其名称服务器的域来解析名称服务器。 (如您所见)
SOA名称服务器总是 一个A记录。
试图使用dig解析www.example.com,流程如下-
dig soa example.com
dig A sns.dns.icann.org.
dig www.example.com @192.0.32.162
编辑后添加
在dig中查询时,DNS SOA记录如下所示
example.com. 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2019041059 7200 3600 1209600 3600
这些被分解成this
Name
retry interval
zone class
name server
email address of administrator (with @ replaced with .)
serial number
refresh
retry
expire
TTL
您应该直接在名称服务器记录中查询名称服务器列表,然后选择其中之一。