如何在本地正确测试本地 DNS 服务器?

a.t*_*.t. 4 networking dns ip nslookup

语境

我打算用 Technitium 设置一个本地 DNS 服务器,并想验证本地 DNS 服务器在查询域时是否返回正确的响应。使用时不起作用nslookup mydomain.com。我希望这是因为无法从公共/互联网位置访问本地 dns 服务器。

为了排除这是由于我的本地 DNS 服务器无法正常工作(本地)引起的,我想验证至少本地 DNS 服务器在查询我的域时返回正确的 IP 地址。

尝试

本地 DNS 服务器127.0.0.1在端口的本地 IP 地址上运行,5379因此我尝试了以下命令,然后是它们各自的输出:

nslookup 127.0.0.1 somedomain.com
;; connection timed out; no servers could be reached

nslookup 127.0.0.1:5379 somedomain.com
nslookup: couldn't get address for 'somedomain.com': failure

nslookup http://127.0.0.1:5379 somedomain.com
;; connection timed out; no servers could be reached

nslookup https://127.0.0.1:5379 somedomain.com
;; connection timed out; no servers could be reached
Run Code Online (Sandbox Code Playgroud)

因此,要么测试命令nslookup 127.0.0.1:5379 somedomain.com是一种可能的方法来测试本地 DNS 服务器在查询某个域时是否返回正确的 IP 地址,而我没有正确设置本地 DNS 服务器,要么我使用了不正确的测试命令。

当查询域(来自托管 DNS 服务器的设备)时,如何测试本地 DNS 服务器的响应是否返回正确的 IP 地址?

use*_*686 9

您的 nslookup 语法是倒退的:服务器域名之后

nslookup example.com 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

您不能使用 Windows 的 nslookup 指定自定义端口。(虽然它有一个隐藏-port=选项,但不幸的是它被忽略了。)

URL 在这里不起作用:DNS 不是基于 HTTP 的。(有一个在 HTTP 内部携带 DNS 消息的规范,但它需要特殊的客户端和服务器。)

如果你有Linux或BSD的一些可用的(的Windows子系统的Linux将工作太),有一个更广泛的工具,例如digdrilldelv。例如:

host -p 5379 example.com 127.0.0.1

dig @127.0.0.1 -p 5379 example.com
Run Code Online (Sandbox Code Playgroud)