为什么要解析这个单词地址?

为什么要解析这个单词地址?

我正在运行 Ubuntu 12.04。在我的工作网络上,有一个单词地址(我们称之为foobar)正在响应 ping 和 HTTP 请求,仅来自我的机器。该地址不是 TLD,只是通用的、与项目相关的缩写。

所述地址不应该响应:我的文件中没有 foobar 条目。apache的或 中/etc/hosts没有对 的引用,我的文件中也没有,如下所示:foobarhttpd.confsites-availablesites-enabledresolv.conf

nameserver 127.0.0.1
search redacted.mycompany.com

起初我以为它重定向到localhost,但如果我在浏览器上打开它,它会显示 nginx 欢迎页面,并且我在我的机器上运行着 apache。

嗅探loeth0显示流量确实来自网络。重新启动resolvconf服务并不能解决问题。如果我运行:

service resolvconf stop
resolvconf --wipe-runtime-directories
service resolvconf start

然后foobar停止解析,但如果我重新启动机器,它就会再次解析

Pingfoobar会得到来自 的回复foobar.redacted.mycompany.com,这是一个真实地址,除了我自己的机器外,其他机器都可以正常使用。Tracerouting 或mtr'ingfoobar显示距离目的地有 5 个跳数,与 tracerouting 或 mtr'ing 相同foobar.redacted.mycompany.com

以下是该命令的输出dig foobar

; <<>> DiG 9.8.1-P1 <<>> foobar
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 52484
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;foobar.                IN  A

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar  8 14:32:02 2013
;; MSG SIZE  rcvd: 22

此问题在 Firefox (19.0) 和 Chrome (24.0.1312.56-0ubuntu0.12.04.1) 上均有发生。按下CTRL+F5不会改变任何内容。我在同一子网上测试过的其他两台同事的机器上没有发生这种情况

答案1

您要知道,域名系统的整个客户端是完全任意的;按照惯例,程序应该通过系统的 C 库来解析主机名,但从技术上讲,如果它们愿意,它们可以完全绕过该机制,要么通过运送自己的 C 库(静态编译或其他方式),要么使用完全自定义的 DNS 查找系统(使用或不使用 DNS 协议)。

假设一个标准的 Ubuntu 安装,运行链接到系统 C 库的程序,你有 eglibc(它是 GNU libc 的一个小分支),并且告诉 gethostbyname() 和其他 C 库 DNS 解析函数要访问哪个 DNS 服务器的文件的默认路径是 /etc/resolv.conf。

nameserver 127.0.0.1表示“使用 DNS 协议向 127.0.0.1 询问有关 DNS 查询的信息”——我假设您有一个本地缓存 DNS 服务器,出于性能原因,它会转发到上游 DNS 服务器,例如dnsmasqbind(执行 DNS 查询时,在您自己的计算机上查询服务器要比访问网络快得多!)

search redacted.mycompany.com意思是“当尝试解析 foo 时,如果它不能直接解析,则在末尾添加字符串 .redacted.mycompany.com 并重试;如果有效,则返回该结果”。

我认为这是“设计使然”的,但我不知道为什么它不能在同事的机器上运行,除非他们没有这条线路search

相关内容