无法在浏览器上运行 example.com 的本地版本

无法在浏览器上运行 example.com 的本地版本

我希望在我的本地测试服务器 (Win XP) 上运行 example.com。为此,我能够设置 BIND 并为 example.com 配置区域。本地 DNS 服务器和本地 Apache Web 服务器都运行良好。但是,当我在浏览器上尝试 example.com 时,它会带我到原始 example.com,而不是本地版本。

那么我在这里遗漏了什么?为什么 example.com 不能指向 Apache 中的本地版本。

example.com 的区域记录

$TTL 3h
example.com. IN SOA ns1.example.com. ns2.example.com. (
                          1        ; Serial
                          3h       ; Refresh after 3 hours
                          1h       ; Retry after 1 hour
                          1w       ; Expire after 1 week
                          1h )     ; Negative caching TTL of 1 hour

;
; Name servers
;
example.com.  IN NS  ns1.example.com.

;
; Addresses for the canonical names
;
localhost      IN A     127.0.0.1
ns1            IN A     192.168.1.2
  1. ISC BIND 服务正在运行。
  2. Apache 正在运行。
  3. Dig @192.168.1.2 example.com - 显示预期结果。
  4. 将我的主 DNS 更改为 192.168.1.2
  5. 不使用任何代理。一切都在同一个盒子里运行。浏览器、DNS 和 Apache。

要做什么才能使本地 example.com 正常工作?

更新:我尝试过 -nslookup example.com得到了以下回复 -

;; Got recursion not available from 192.168.1.2, trying next server
Server:         4.2.2.2
Address:        4.2.2.2#53

Non-authoritative answer:
Name:   example.com
Address: 208.77.188.166

对于 nslookup 192.168.1.2 我得到 -

;; Got recursion not available from 192.168.1.2, trying next server
;; Got recursion not available from 192.168.1.2, trying next server
Server:         4.2.2.2
Address:        4.2.2.2#53

** server can't find 2.1.168.192.in-addr.arpa.: NXDOMAIN

因为Dig example.com,我得到了-

; <<>> DiG 9.6.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 494
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;example.com.                   IN      A

;; AUTHORITY SECTION:
example.com.            3600    IN      SOA     ns1.example.com. ns2.example.com. 1 10800 3600 604800 3600

;; Query time: 15 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Sat Jul 04 17:05:05 2009
;; MSG SIZE  rcvd: 73

答案1

您的网络浏览器是否可能使用某些代理而不是直接互联网连接?

可能不是——但仍然值得一问。

你的窗户nslookup当您在使用 Web 浏览器的计算机上启动它时,它是否说 192.168.1.2 是唯一的 DNS 服务器?当您输入 example.com 作为查询时会发生什么?

[编辑:我瞎了..这个应该可以解决问题] 添加

@ IN A 91.206.245.2
www IN A 91.206.245.2

到您的绑定区域文件,更改序列号并重新加载绑定。

答案2

您刚刚安装和配置的 DNS 服务器 (BIND) 是权威性名称服务器。这很好,但你不能将其用作递归名称服务器,这就是您在“将我的主 DNS 更改为 192.168.1.2”时所做的。因此,nslookup 会尖叫“无法从 192.168.1.2 获得递归,正在尝试下一个服务器”。

一个权威性名称服务器是...权威的一些域名(此处为example.com),但不是通用解析服务器。为此,您需要一个递归名称服务器。

两种解决方案:

  1. 使 BIND 名称服务器对本地计算机进行递归。(基本上,这意味着recursion yes;看法,或者确保您的 BIND 仅在本地 IP 地址上侦听。)请注意,让名称服务器同时具有递归性和权威性是一种不好的做法,但对于仅用于测试的个人机器来说,这不是什么大问题。

  2. 告诉常规递归程序它必须转发请求example.com到您的机器。我不能说更多,这取决于谁管理它、它运行什么软件等。

答案3

我同意 pQd 的观点,你也可以运行如下工具wireshark看看哪里出了问题。

答案4

当我尝试从同一台机器执行 nslookup 时,出现了此错误。我的错误named.conf.options如下所示:

acl mynetwork {
  fdxx::/112;
};
recursion yes;
allow-recursion { mynetwork; };

我不确定为什么,因为我认为 nslookup 请求无论如何都会通过我的 ipv6 网络。但添加 localhost 和 localnets 为我解决了这个问题:

acl mynetwork {
  fdxx::/112;
  localnets; localhost;
};
recursion yes;
allow-recursion { mynetwork; };

相关内容