基本上,我从我的客户端发出查询(类型:PTR),内容如下
_some-service._tcp.gv.com
在回答这个问题时,我回复道
Reply code: No such name (3)
3 Name Error - Meaningful only for
responses from an authoritative name
server, this code signifies that the
domain name referenced in the query does
not exist.
但是当我在客户端时,域名确实解析为正确的 IP 地址,我可以毫无问题地 ping 通
[root@client/]# ping gv.com
PING gv.com (192.168.10.10) 56(84) bytes of data.
64 bytes from gv.com (192.168.10.10): icmp_seq=1 ttl=64 time=0.308 ms
64 bytes from gv.com (192.168.10.10): icmp_seq=2 ttl=64 time=0.329 ms
64 bytes from gv.com (192.168.10.10): icmp_seq=3 ttl=64 time=0.330 ms
64 bytes from gv.com (192.168.10.10): icmp_seq=4 ttl=64 time=0.306 ms
^C
--- gv.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
为什么当我的客户端解析域名时,DNS响应会给我回复代码3?
会不会是因为我所寻找的服务在DNS服务器中不存在而发生错误?
答案1
恐怕如果没有详细资料就无法以您满意的方式回答 :-(。
在您的问题中,我会看到一些(可以说)不常见的方法。如果这只是理论问题(您提到捕获数据包),我会考虑对 DNS 服务的误解...
你提到过
_some-service._tcp.gv.com PTR
后面还有这个问题:
ping gw.com
这两者之间根本就没有任何关系……
假设只有 IPv4(以减少相关记录集)和域 example.com:
可以有以下相关记录(为简单起见“忽略”区域分离):
example.com. IN A 192.0.2.10
www.example.com. IN A 192.0.2.20
web.example.com. IN CNAME www.example.com.
_http._tcp.example.com. IN SRV 10 10 80 www.example.com.
10.2.0.192.in-addr.arpa. IN PTR example.com.
20.2.0.192.in-addr.arpa. IN PTR www.example.com.
Http 服务(例如 Web 浏览器)通常不使用 SRV,但理论上它可能是有效的例子。
A ... "translate" FQDN to IPv4 address
SRV ... SeRVice record - can have wight and priority.
Pointing the location of the service with posibility of "alternative" endpoints.
CNAME ... Cannonical name - targeting other DNS record. With the answer
the recursion (following query) is utilized.
PTR ... PoinTeR to cannonical name - usually used for reverse records but
by the definition it can be used in the similar way like CNAME just
without recursion.
无论如何,在 ping 的情况下,您请求的是简单的 A 记录,因此既不使用 SRV 也不使用 PTR......
如果 MX(邮件交换 - 用于电子邮件传递的记录)不存在,则会返回到 A 记录,尝试传递消息...
有可能存在 PTR 记录,但如果没有成功,则可以使用一些“标准” A 或 SRV 查询。这将在 Wireshark 中可见的通信中可见 ;-)。这肯定与特定应用程序的实现/行为有关。这个问题将向作者提出 - 为什么他们以这种方式使用 PTR 记录...
答案2
PTR 是指向域的 IP 地址。
因此,如果您使用域名而不是 IP 向 DNS 询问域名,您将获得 NXDOMAIN。
您的客户端向 IP 询问域名(A 记录),因此它会得到有效答案并可以 ping 操作。
因此,请求 A、AAAA、TXT 或任何您的“服务”记录,您将获得结果
dig _some-service._tcp.gv.com TXT