DNS 查询响应“无此名称”,但客户端可以 ping 域名

DNS 查询响应“无此名称”,但客户端可以 ping 域名

基本上,我从我的客户端发出查询(类型: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

相关内容