我希望在我的本地测试服务器 (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
- ISC BIND 服务正在运行。
- Apache 正在运行。
- Dig @192.168.1.2 example.com - 显示预期结果。
- 将我的主 DNS 更改为 192.168.1.2
- 不使用任何代理。一切都在同一个盒子里运行。浏览器、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
),但不是通用解析服务器。为此,您需要一个递归名称服务器。
两种解决方案:
使 BIND 名称服务器对本地计算机进行递归。(基本上,这意味着
recursion yes;
在看法,或者确保您的 BIND 仅在本地 IP 地址上侦听。)请注意,让名称服务器同时具有递归性和权威性是一种不好的做法,但对于仅用于测试的个人机器来说,这不是什么大问题。告诉常规递归程序它必须转发请求
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; };