我的设置如下
ServerA(vpn 服务器为 10.200.0.1)在 VPN IP 范围内运行 Bind9 服务。
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
};
dnssec-validation auto;
auth-nxdomain no;
listen-on {
10.200.0.1;
};
allow-query { any; };
};
controls {};
本地区域定义如下:
# named.conf.local
zone "domain.tld" {
type master;
file "/etc/bind/db.domain.tld";
};
区域 db.domain.tld 如下:
$TTL 6800
@ IN SOA servera.domain.tld. root.domain.tld. (
13 ; Serial
600 ; Refresh
86400 ; Retry
604800 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS servera.domain.tld.
; 10.200.0.0/24 - domain.tld
servera.domain.tld. IN A 10.200.0.1
root.domain.tld. IN A 10.200.0.1
x.domain.tld. IN A 10.200.0.2
它包含一些本地域(domain.tld)。当我在笔记本电脑(已连接到 VPN)上使用 nslookup 时,它可以按预期工作。
# nslookup
> server 10.200.0.1
Default server: 10.200.0.1
Address: 10.200.0.1#53
> x.domain.tld
Server: 10.200.0.1
Address: 10.200.0.1#53
Name: x.domain.tld
Address: 10.200.0.2
当我在本地(192.168.1.1)创建第二个绑定服务时,该服务通过 VPN 连接到 ServerA,并且仅在其中定义它/etc/bind/named.conf.options
:
options {
directory "/var/cache/bind";
forwarders {
10.200.0.1;
};
dnssec-validation auto;
auth-nxdomain no;
listen-on {
192.168.1.1;
};
allow-query { any; };
};
controls {};
并尝试将此服务用作外部 DNS 的转发 DNS,我没有得到在 serverA 中配置的所有域的答案,但所有公共 DNS 响应
# nslookup
> server 192.168.1.1
Default server: 192.168.1.1
Address: 192.168.1.1#53
> x.domain.tld
Server: 192.168.1.1
Address: 192.168.1.1#53
** server can't find x.domain.tld: NXDOMAIN
正如前面所说。两个 Bind 服务器都可以进行公共 DNS 查找,例如 google.com。但是,为什么 ServerB 没有从 ServerA 获取 domain.tld 的答案,而当我在同一网络中使用 nslookup 时,它可以工作。
因为 ServerA 不知道 ServerB,所以我没有配置任何上游 DNS 服务器。我想知道为什么 ServerB 不能查询 domain.tld,但可以查询 google.com 或其他公开内容。
PS:请注意,domain.tld(尤其是 .tld 是像“ .home”这样的私有 TLD),因此没有公共根服务器。
答案1
我想,我找到这个问题了。
当我将dnssec-validation
ServerB 更改为时no
,我得到了答案。
... 稍后添加更多信息,当我知道如何为 domain.tld 添加 DNSSec 时... 到那时再看看bind9 为本地域配置正向区域,仅为此区域配置不带 DNSSEC 的区域这目前不是我最好的解决方案,因为我想在不了解 ServerA 上托管的域的情况下配置 ServerB。