我应该如何解释Docker busybox容器中nslookup中的“找不到...”?

时间:2018-10-05 10:36:51

标签: docker nslookup

我不明白我得到的输出。

如果我运行:docker run --rm busybox nslookup google.com,我会得到:

Server:     192.168.65.1
Address:    192.168.65.1:53

Non-authoritative answer:
Name:   google.com
Address: 2a00:1450:4009:806::200e

*** Can't find google.com: No answer

... 有时-有时它会包含相同的结果,只是有所不同:

Address: 216.58.198.174

我不明白:

  • 为什么它返回两个不同的报告,有时会在几秒钟之内返回
  • 为什么nslookup成功返回地址后会说Can't find google.com

如果我直接在计算机上运行nslookup google.com,则输出始终为:

Server:     192.168.0.1
Address:    192.168.0.1#53

Non-authoritative answer:
Name:   google.com
Address: 216.58.208.142

Can't find google.com: No answer的意义是什么?为什么nslookup在Docker容器中运行时似乎随机给出不同的结果?

1 个答案:

答案 0 :(得分:3)

我今天也有这个错误。据我所知,可能是nslookup中的1.29+版本的busybox附带的回归。它与nslookup处理从查询中获得的响应的方式有关。有时,AAAA记录在A记录之前返回,而在其他时候则相反。不幸的是,该版本的nslookup只能抢先出现并显示它。因此,在您的情况下,如果对“ google.com”进行查询,那么如果AAAA记录排在第一位,则得到2a00:1450:4009:806 :: 200e,而当A记录到达那里时,您得到216.58.198.174。 / p>

如果指定-type=a-type=aaaa,则行为会更加一致,并且不会显示错误消息。

$ docker run --rm busybox nslookup -type=aaaa example.com
Server:     208.67.222.222
Address:    208.67.222.222:53

Non-authoritative answer:
Name:   example.com
Address: 2606:2800:220:1:248:1893:25c8:1946

另一个建议是恢复到busybox 1.28。

docker run --rm busybox:1.28 nslookup example.com

要了解更多信息,请访问:https://github.com/docker-library/busybox/issues/48https://bugs.busybox.net/show_bug.cgi?id=11161#c4