我正在尝试在 DEBIAN 上使用 BIND9 配置 LAN DNS 服务器。
语境:网络掩码:255.255.0.0,网络 IP:10.1.xxx.xxx
我拥有一个公共域示例.com,由外部 NS 管理,我的目标是管理所有子域lan.example.com,例如地址 node1.lan.example.com 是 IP 为 10.1.1.1 的计算机
当前配置
/etc/bind/named.conf:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
/etc/bind/named.conf.选项:
options {
directory "/var/cache/bind";
forwarders {
EXTERNAL_DNS_NAMESERVERS;
};
dnssec-validation auto;
recursion yes;
allow-query { 10/24; 127.0.0.1; };
allow-recursion { 10/24; 127.0.0.1; };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
listen-on port 53 { 127.0.0.1; 10.1.0.2; } ;
};
/etc/bind/named.conf.local:
zone "lan.example.com" {
type master ;
allow-query { 10/24; 127.0.0.1; };
file "/etc/bind/zone.lan.example.com" ;
};
zone "0.1.10.in-addr-arpa" {
type master ;
notify no ;
allow-query { 10/24; 127.0.0.1; };
file "/etc/bind/zone.0.1.10.in-addr.arpa" ;
} ;
zone "2.1.10.in-addr-arpa" {
type master ;
notify no ;
allow-query { 10/24; 127.0.0.1; };
file "/etc/bind/zone.2.1.10.in-addr.arpa" ;
} ;
/etc/bind/named.conf.默认区域:
zone "." {
type hint;
file "/etc/bind/db.root";
};
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";
};
/etc/bind/zone.lan.example.com:
; zone.lan.example.com BIND9 configuration file.
;
$TTL 604800
@ IN SOA ns.lan.example.com. root.localhost. (
201212041 ; serial no. (increment by +1 after every edit!)
604800 ; refresh
86400 ; retry after failure
2419200 ; expired
604800); TTL negative cache
;
@ IN NS ns.lan.example.com.
@ IN A 127.0.0.1
;
; A records - Local machines and addresses:
; Servers:
router IN A 10.1.0.1 ; Router
ns IN A 10.1.0.2 ; NS Server
server IN A 10.1.0.2 ; Server
media IN A 10.1.0.3 ; Media Server
;
; Workstations:
node1 IN A 10.1.1.1 ; node1
问题:
client 10.1.0.1#50808: query (cache) 'a.root-servers.net/A/IN' denied
client 10.1.0.2#59641: query (cache) 'example.com/A/IN' denied
client MY_EXTERNAL_IP#37853: query 'server.lan.example.com/A/IN' denied
client MY_EXTERNAL_IP#56367: query (cache) 'superuser.com/A/IN' denied
当我尝试在名称服务器 ns.lan.example.com 上挖掘 server.lan.example.com 时,一切正常,但如果我尝试从另一台机器执行此操作,则会失败。
我该如何解决这个问题?
提前致谢
答案1
您已将 BIND 配置为允许来自 的查询10/24
。我不确定 BIND 是否接受该网络掩码,但如果接受,则它将扩展为或,这10.0.0.0/24
10.0.0.0/255.255.255.0
不匹配 10.1.0.1
/24
。(你跟混淆了吗?)10.0.0.0/8
根据您的说明网络掩码:255.255.0.0,网络IP:10.1.xxx.xxx,正确的网络应该是。10.1.0.0/16
答案2
前面的答案解决了初始提交者的问题,但对于另一种更通用的方法,您可以使用内置 ACL“localnets”和“localhost”,例如:
allow-recursion { localnets; } ;
localhost 的含义非常明显(除了 127.0.0.1 或 ::1 之外,它还包括 BIND 正在使用的每个网络接口的配置地址(因此 127.0.0.1 加上分配给本地主机的所有地址。)
localnets 基于您的本地接口配置并从其地址和网络掩码派生而来。
如果您的服务器有一个接口不是在私有地址空间中,但可以路由到互联网,那么你可能不想使用“localnets”