使用 BIND9 作为 LAN 的 DNS 服务器

使用 BIND9 作为 LAN 的 DNS 服务器

我正在尝试在 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/2410.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”

相关内容