![Windows shell 与 Linux 中的 DNS 输出(名称服务器信息)](https://linux22.com/image/1530848/Windows%20shell%20%E4%B8%8E%20Linux%20%E4%B8%AD%E7%9A%84%20DNS%20%E8%BE%93%E5%87%BA%EF%BC%88%E5%90%8D%E7%A7%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BF%A1%E6%81%AF%EF%BC%89.png)
我的 Windows 10 PC 上运行着适用于 Linux 的 Windows 子系统 (WSL,又名“Windows 上的 Ubuntu 上的 Bash”),我注意到在nslookup
该环境中使用时得到的输出与传统 Windows shell (cmd.exe 或 PowerShell) 时得到的输出略有不同。具体来说,这与默认用于执行查询的名称服务器有关。因此,如果我进行如下简单查找:
nslookup example.com
Windows 和 Linux 版本的命令都会输出两行有关名称服务器的信息(显然,除了有关域的 DNS 信息之外)。在 Windows shell 中,我获取了名称服务器的 IP 和名称:
Server: name.of.name.server
Address: xxx.xxx.xxx.xxx
在 WSL 中,输出中的这两行都包含名称服务器 IP(未输出名称服务器的名称),但第二行#53
由于某种原因附加了:
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
如果我使用选项,则没有任何区别-query=any
,我仍然无法在 Linux 中获取名称服务器的名称。如果我使用以下命令,情况也是如此dig
:
dig example.com any
有关名称服务器的信息位于输出的底部附近,如下所示:
;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx)
再次,那些 x 代表名称服务器 IP,它是括号中的相同 IP(减去#53
)。
我很好奇这是否是 WSL 的问题,所以我通过 SSH 连接到了几个不同的实际 Linux 服务器。我得到的结果基本相同。显然,每个服务器使用的名称服务器的 IP 是不同的,但奇怪的是,尽管这是两个完全不同的服务器(一个在加利福尼亚,另一个在犹他州),但#53
输出中都有这个神秘的信息。
所以我有两个问题:是什么#53
意思,我怎样才能让名称服务器的名称显示在输出中,就像在 Windows 版本的中一样nslookup
?是的,如果我将名称服务器 IP 复制并粘贴到nslookup
Linux 中的单独命令中,我会得到服务器的名称,但我希望能够在一个命令中获取该信息以及我正在查询的域的 DNS 信息。我想知道是否有我不知道的选项可以做到这一点。在 Linux 中做到这一点并不是非常重要,nslookup
只是dig
会很好,所以我对需要编写脚本或类似复杂内容的解决方案不感兴趣。
答案1
53 是端口号,DNS 查询的标准,因此它只是显示 IP 地址和端口。
至于名称服务器,我现在在家,所以我的默认名称服务器是我的路由器。在 Linux 下,它确实会报告为 IP 地址,但我认为 Windows 版本的 nslookup 可能会使用 WINS 返回名称(如果可用),因为我的返回结果为非常奇怪的home.gateway.home.gateway