我整天都在研究这个问题,现在和刚开始的时候一样困惑。我有一个 Ubuntu 10 系统。在桌面上,我运行着 Firefox 和 bash shell。Firefox 可以查看和浏览任何网站(我以 apache.org 为例)。另一方面,bash shell 无法对 apache.org 执行 ping、dig、nslookup 或其他任何操作。
dig apache.org
在 bash shell 中执行的操作让我
; <<>> DiG 9.7.0-P1 <<>> apache.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21462
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;apache.org. IN A
;; AUTHORITY SECTION:
. 900 IN SOA exc1-XXXXXX-0101.XXXXXX.com.au. hostmaster.XXXXXX.com.au. 3 3600 900 3600000 900
;; Query time: 1 msec
;; SERVER: XXX.XXX.219.153#53(XXX.XXX.219.153)
;; WHEN: Tue Jan 18 17:15:30 2011
;; MSG SIZE rcvd: 104
(删除)
我已经重启了很多次,重建了 resolv.conf,检查了代理设置,bind 正在运行等等。坦率地说,我不明白出了什么问题。
为什么 Web 浏览器可以工作,而 Bash 却不工作?当它们在同一个用户的同一个会话中并行运行时!
谢谢。德里克
答案1
这些线条……
;; 标志:qr aa rd ra;查询:1,答案:0,权限:1,附加:0 -------------^^
和
;; 权威部分: . 900 IN SOA exc1-XXXXXX-0101.XXXXXX.com.au. hostmaster.XXXXXX.com.au. 3 3600 900 3600000 900
...表明您正在使用(通过配置/etc/resolv.conf
)考虑以下因素的 DNS 服务器本身权威的全部的DNS 树。
查看授权部分:SOA(授权起始点) 记录是.
(DNS 根)。根据 SOA 记录,主名称服务器为exc1-XXXXXX-0101.XXXXXX.com.au.
,其管理员可通过 进行联系[email protected].
。
因为答案有一个aa
(权威答案) 标志,服务器正在考虑本身它刚刚给出的答案的权威来源,并且不会查询任何其他服务器,无论您尝试什么名称。
如果你最近安装了bind9
或类似的 DNS 服务器,请确保你没有意外地将其设置为提供.
至于 Firefox,它有自己的小型 DNS 缓存,就像大多数浏览器一样。(我猜这要么是因为 Windows 是唯一默认在系统范围内缓存名称查找的操作系统,要么是因为 Firefox 使用自己的 DNS 库。)
答案2
为什么 ping 失败?你能把输出粘贴到这里吗?也许 apache.org 正在阻止或丢弃 ping 数据包。你还没有证明该错误与 DNS 有关。
您是否使用了代理?
运行后的输出是什么getent hosts apache.org
?
您的名称服务器在您的本地网络上吗,还是您的 ISP 的名称服务器?
您的 DNS 也可能曾是工作正常,Firefox 缓存了一些 DNS 条目,现在您的 DNS 服务器已损坏。如果您访问今天没有访问过的网站,会发生什么情况?