这更像是一个学习和了解 BIND/NAMED 的实验,但这是我所拥有的。
我将计算机的 DNS 设置为 Linux 服务器的 IP。我使用以下条目运行 BIND9:
$TTL 1 @ IN SOA 1.2.3.4. google.com. (
2013041602 ; Serial
1 ; Refresh
1 ; Retry
10000 ; Expire
1 ) ; Negative Cac
home 14400 IN A 1.2.3.4
* 14400 IN A 2.2.2.2
space 14400 IN A 1.2.3.4
1.2.3.4 = My Server IP
如果我 ping home.google.com,我家里的电脑上什么也收不到。如果我的 DNS 指向 BIND9 服务器,它不应该获取这些 DNS 记录吗?
这是在服务器上(Windows 有挖掘吗?)
我编辑了 /etc/resolv.conf 以使用我的 Linux 服务器作为 DNS。
dig home.google.com
; <<>> DiG 9.8.1-P1 <<>> home.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 2032
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;home.google.com. IN A
;; Query time: 0 msec
;; SERVER: 1.2.3.4#53(1.2.3.4)
;; WHEN: Wed Apr 17 10:00:59 2013
;; MSG SIZE rcvd: 43
NS查找:
Server: UnKnown
Address: 1.2.3.4
*** UnKnown can't find home.google.com: Server failed
命名配置文件
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
命名的.conf.选项:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
75.75.75.75;
75.75.76.76;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
命名的.conf.本地
zone "google.com" {
type master;
file "/etc/bind/db.google.com";
};
zone "2.3.4.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.192";
};
/etc/bind/named.conf.默认区域
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
答案1
你混合了两个非常不同的东西:DNS 服务器可以是解析器(从所有可能的域中接收名称,并通过询问世界上的权威名称服务器来解析它们)或权威服务器(向解析器提供关于您自己的区域的数据)。我强烈建议将两者分开(在不同的机器上)。否则,调试真的很痛苦。
对于域 google.com 的权威服务器来说,您的配置似乎没问题,只是 dig 的输出显示递归可用。您应该禁用它 ( recursion no;
)。
下一步是检查区域是否确实由名称服务器加载。请记住,Unix 系统管理员整天都在查看日志文件。检查日志文件中的命名启动消息,您可能会发现一条错误消息,解释为什么未加载区域(或者,使用 named-checkzone 测试区域)。