BIND 在设置看似正确的记录后返回 SERVFAIL

BIND 在设置看似正确的记录后返回 SERVFAIL

编辑:更新代码

我使用 nslookup ercont.club 127.0.0.1 来确保它使用我的主机名服务器,并且与我的注册商无关。以下是文件:

db.ercont.club

;
; BIND data file for local loopback interface
;
    $TTL    604800
    @       IN      SOA     ercont.club. mail.ercont.club. (
                              4         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers - NS records
@        IN      NS      ns1.ercont.club.
@        IN      NS      ns2.ercont.club.

; name servers - A records
ns1.ercont.club.        IN      A       167.160.84.198
ns2.ercont.club.        IN      A       167.160.84.198

; - A records
ercont.club             IN      A       167.160.84.198

/etc/bind/zones/db.160.67

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ercont.club. mail.ercont.club. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
@        IN      NS      ns1.ercont.club.
@        IN      NS      ns2.ercont.club.

; PTR Records
198.84     IN      PTR     ns1.ercont.club.        ;
198.84     IN      PTR     ns2.ercont.club.        ;
198.84     IN      PTR     mail.ercont.club.       ;

和 /etc/bind/named.conf.options

acl "trusted" {
        167.160.84.198; # ns1 and ns2
};

options {
        directory "/var/cache/bind";
        recursion yes;
        allow-recursion { localhost; trusted; };
        allow-query { localhost; 167.160.84.0/8; };
        listen-on { 167.160.84.198; };
        allow-transfer { none; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

如果有人能帮我解决这个问题,那真是太好了。我是 bind 的菜鸟,这些问题真的让我很头疼,所以如果能得到帮助我将不胜感激。

答案1

首先,需要设置一个公共 DNS 服务器(例如购买域名的注册商),以指向您的 TCP/IP 地址(例如服务器或住宅网关公共 IP 地址)。这也可以通过第三方服务(例如通过 aws.amazon.com 服务的 route53)来完成。

但是,这个答案是为了涵盖从安装了 Bind9 的本地/私人机器解析域名(ercont.club)的主题。

该文件:/etc/bind/named.conf.options类似于以下内容,并且看起来是正确的。

acl "trusted" {
        167.160.84.198; # ns1 and ns2
};
options {
        directory "/var/cache/bind";
        recursion yes;
        allow-recursion { localhost; trusted; };
        allow-query { localhost; 167.160.84.0/8; };
        listen-on { 167.160.84.198; };
        allow-transfer { none; };
forwarders {
                8.8.8.8;
                8.8.4.4;
        };
dnssec-validation auto;
auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

文件:/etc/bind/named.conf.local应类似于以下内容:

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";

view "internal" {
        match-clients {
                localhost;
                167.160.84.0/8;
        };
# set zone 
        zone "ercont.club" {
                type master;
                file "/etc/bind/db.ercont.club";
                allow-update { none; };
        };
# set reverse zone lookup
        zone "160.67.in-addr.arpa" {
                type master;
                file "/etc/bind/db.160.67";
                allow-update { none; };
        };
        include "/etc/bind/named.conf.default-zones";
};

文件:db.ercont.club

; BIND data file for local loopback interface 
; 
$TTL 604800 
@ IN SOA ercont.club. mail.ercont.club. ( 
         3      ; Serial 
    604800      ; Refresh 
    86400       ; Retry 
    2419200     ; Expire 
    604800 )    ; Negative Cache TTL 
; name servers - NS records 
@    IN     NS    ns1.ercont.club. 
@    IN     NS    ns2.ercont.club.
@    IN     A       127.0.0.1
@    IN     A       167.160.84.198


; A records 
ercont.club.      A       167.160.84.198

保存文件之前,将序列号至少增加 1。

发出命令:sudo named-checkzone ercont.club db.ercont.club

如果区域 OK,则继续。如果不 OK,则检查并更正。

文件:/etc/bind/db.167.160

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ercont.club. mail.ercont.club. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
@        IN      NS      ns1.ercont.club.
@        IN      NS      ns2.ercont.club.
; PTR Records
198.84     IN      PTR     ns1.ercont.club.        ;
198.84     IN      PTR     ns2.ercont.club.        ;
198.84     IN      PTR     mail.ercont.club.       ;

保存文件之前,将序列号至少增加 1。发出命令:sudo named-checkzone 167.160.in-addr.arpa db.167.160

如果区域 OK,则继续。如果不 OK,则检查并更正。

发出命令:sudo service bind9 restart

验证服务是否正确启动,发出命令:sudo service bind9 status

在进行相应的转换之前,我们需要设置服务器以指向新的 DNS 服务器。如果这是仅服务器设置,没有桌面客户端;我们将需要查看文件:/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 167.160.84.198
        netmask 255.0.0.0
        gateway xxx.xxx.xxx.xxx
        dns-nameservers 167.160.84.198
        dns-search ercont.club

否则,如果您有桌面和网络管理器,请通过 GUI 界面进行更改,或修改文件:

/etc/NetworkManager/system-connections/Wired\ connection\ 1

更改有线\连接\ 1,作为网络管理器中显示的连接名称。

找到文件的[ipv4]部分,添加/修改以下两行:

[ipv4]
dns=ipofyourdnsserver;
dns-search=ercont.club;

保存修改并重新启动。

我希望这有帮助。

相关内容