Jar*_*win 7 domain-name-system telnet netcat
所以,我们在我们班上的 DNS 章节,我想知道是否有任何可能的方法可以通过命令行界面(即 Telnet 或 netcat)连接到端口 53 上的 DNS 服务器,就像我们为 SMTP 或 HTTP 所做的那样或 POP 在其特定端口上;我试过:
> telnet 8.8.8.8 53
Run Code Online (Sandbox Code Playgroud)
但是连接一建立就关闭了;后来我意识到这是因为 telnet 使用 TCP 而 DNS 使用 UDP。
然后我尝试对 netcat 做同样的事情:
> nc -u 8.8.8.8 53
Run Code Online (Sandbox Code Playgroud)
纳达!我只是想看看 DNS 的工作是否透明。(比如 http、SMTP 等)
Håk*_*ist 20
如您所见,DNS 主要使用 UDP,但实际上也通过 TCP 提供服务(通常用于大型响应和区域传输)。
这就是为什么您在尝试telnet. 您的连接被关闭是因为您没有以预期的方式与服务交互,而不是因为telnet使用 TCP。
重要的区别在于,与 HTTP 和 SMTP 是纯文本协议且易于直接使用不同,DNS 是一种二进制协议。
这意味着您将需要一些 DNS 客户端程序以任何合理的方式与名称服务器交互。
dig长期以来一直是 DNS 故障排除的事实上的标准,因为它在构建查询和以简洁的方式漂亮地打印响应中的所有信息方面都非常好。(BIND 代码库的一部分,包含在 ISC 的 Windows 版本中。)
drill是另一种具有类似功能且与dig.
nslookup众所周知,因为它从一开始就存在。除了在 Windows 上,它在很大程度上已被放弃,与前面提到的替代方案相比,它具有一些不受欢迎的怪癖和有限的功能。调试选项 ( set debug) 使其可用于紧急故障排除,因为它极大地提高了输出的完整性,尽管调试输出的格式还有很多不足之处。
Ste*_*ins 10
您可以使用该dig实用程序,如下所示:
dig @your.dns.server www.foo.bar
例子:
dig @8.8.8.8 www.google.com
如果要查看分步名称解析,可以执行以下操作:
dig +add +trace @8.8.8.8 www.google.com
此致!