我尝试在 Ubuntu 中设置绑定 DNS。
我有两台机器(VMware):
机器 A 是客户端:
IP: 192.168.1.1 (host-only)
hostname: example.com
机器B是DNS服务器:
IP: 192.168.1.2 (host-only)
/etc/bind/named.conf.local:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
//reverse zone
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
/etc/bind/db.example.com:
$TTL 604800
@ IN SOA example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS example.com.
@ IN A 192.168.1.1
@ IN AAAA ::1
/etc/bind/db.192:
$TTL 604800
@ IN SOA 1.168.192.in-addr.arpa. root.example.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS example.com.
1 IN PTR example.com.
当我在客户端使用 nslookup 时:
nslookup example.com
Server: 192.168.1.2
Address: 192.168.1.2#53
Name: example.com
Address: 192.168.1.1
nslookup 192.168.1.1
Server: 192.168.1.2
Address: 192.168.1.2#53
** server can't find 1.1.168.192.in-addr.arpa: NXDOMAIN
你能修好它吗?
答案1
首先,您在 named.conf.local 中声明您的区域是example.com
。因此 B 主机名不能是example.com
。它可能some-hostname
在example.com
类似foo.example.com
但不是example.com
,因为它意味着您的区域是com
并且 B 的主机名是 ,example
这与您提供的配置不一致。
有錯誤/etc/bind/db.example.com
。
@ IN NS example.com.
这行用于指定域名服务器。这里你刚才说:
@(expand to example.com)'s name server is `example.com`
应该是
@ IN NS "B's hostname".example.com
然后指定与 NS 记录相关的 A 记录(即您的名称服务器 IP 地址):
hostname IN A 192.168.1.1
IN AAAA ::1
但这仍然是错误的配置。你之前说过你的名称服务器是 B,IP 为 192.168.1.2,对吧?所以上面的语句应该是
hostname IN A 192.168.1.2
这对于中的 SOA 记录也是一样的db.example.com
:
@ IN SOA example.com. root.example.com.
应该 :
@ IN SOA "B's hostname".example.com. root.example.com.
SOA里的记录db.192
应该完全一样db.example.com
,不用写1.168.192.in-addr.arpa.
。
然后你的 NS 和 PTR 记录又不正确了,它们应该是:
@ IN NS "B's hostname".example.com.
2 IN PTR "B's hostname".example.com.
我希望我没有遗漏任何东西,但最后一条建议是 Bind9 包含两个脚本named-checkzone
和named-checkconf
。前者可以检查区域文件(即db.192
和db.example.com
),后者可以检查 Bind9 配置(即named.conf.local
)。
如果你有兴趣更好地了解 Bind9(和 DNS),你应该看看Zytrax Pro DNS 和绑定它通过大量示例很好地解释了配置选项。