如何制作 DNS 区域文件

如何制作 DNS 区域文件

我的域名是 easydata.ir,我为我的域名创建了一个区域文件,但是当我使用命令“dig”时它返回:

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> ns1.easydata.ir
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 41395
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;ns1.easydata.ir.               IN      A

;; Query time: 136 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jan 22 00:17:20 EST 2020
;; MSG SIZE  rcvd: 44

所以我把我的配置文件放进去,请告诉我如何正确设置它。

$TTL 86400;
@ IN SOA ns1.easydata.ir. root.easydata.ir. (
  2013042201 ;Serial
  3600 ;Refresh
  1800 ;Retry
  604800 ;Expire
  86400 ;Minimum TTL ) ; add nameservers
@ IN NS ns1.easydata.ir. 
@ IN NS ns2.easydata.ir. ;IN MX 10 mail.easydata.ir.
ns1 IN A 198.143.181.237
ns2 IN A 198.143.181.237
www IN A 198.143.181.237
ftp IN A 198.143.181.237

Hera 是我的 /etc/named.conf 文件。请告诉我它是否正确。

options {
        listen-on port 53 { 127.0.0.1; 198.143.181.237;};
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { localhost; 87.107.219.167; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone "easydata.ir" IN {
                type master;
                file "easydata.ir.zone";
                allow-update { none; };
        };

答案1

快速浏览一下相关域名,可以发现委派情况如下:

;; AUTHORITY SECTION:
easydata.ir.            1440    IN      NS      ns1.easydata.ir.
easydata.ir.            1440    IN      NS      ns2.easydata.ir.

;; ADDITIONAL SECTION:
ns1.easydata.ir.        1440    IN      A       198.143.181.237
ns2.easydata.ir.        1440    IN      A       198.143.181.237

(旁注:ns1 和 ns2 显然具有相同的 IP,因此两个条目的存在NS毫无意义,因为显然仍然存在单点故障。)

但是,查询198.143.181.237会导致带有状态的响应REFUSED(即,名称服务器配置为不允许查询此区域,或者该区域根本不存在)。

$ dig @198.143.181.237 easydata.ir NS +norec

; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @198.143.181.237 easydata.ir NS +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 49376
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 921222c5e444e2602d3491645e282d41475c2ae33ad32e29 (good)
;; QUESTION SECTION:
;easydata.ir.                   IN      NS

;; Query time: 106 msec
;; SERVER: 198.143.181.237#53(198.143.181.237)
;; WHEN: Wed Jan 22 11:08:49 UTC 2020
;; MSG SIZE  rcvd: 68

$

检查配置(named.conf或使用其中引用的文件include),特别是相关zone是否已经进入,以及是否有allow-*zone或部分中的指令options将禁止查询。

特别是您的配置中的这一行看起来有问题,因为它严重限制了谁可以查询您的名称服务器:

allow-query     { localhost; 87.107.219.167; };

注释掉或者完全删除该行可能是最干净的解决方案。

答案2

假设您已经拥有主名称服务器,它是其代表的域的权威来源,并且您更改了named.conf来建立您的域(假设为Example.com),您需要:

  • 创建两个新文件 - 正向和反向区域文件,将它们放在 /var/named 目录中。此位置由 named.conf 配置文件中的“directory”指令指定。

创建正向区域文件

正向区域文件包含“A”记录,该记录将区域(又称域)中的主机名称与其各自的 IP 地址配对。它还可能包含 CNAME 记录(即 A 记录中真实主机名的别名)和邮件服务器的 MX 记录。

您必须创建一个基本的正向区域文件 /var/named/example.com.zone,并向其中添加以下几行。您的区域文件应类似于以下示例:

; Authoritative data for example.com zone
;
$TTL 1D
@   IN SOA  serv.example.com   root.serv.example.com. (
                                       2020012201      ; serial
                                       1D              ; refresh
                                       1H              ; retry
                                       1W              ; expire
                                       3H )            ; minimum

$ORIGIN         example.com.
example.com.            IN      NS      serv.example.com.
epc                     IN      A       127.0.0.1
server                  IN      A       192.168.2.1
www                     IN      CNAME   server
mail                    IN      CNAME   server
test1                   IN      A       192.168.2.24
t1                      IN      CNAME   test1

; Mail server MX record
example.com.            IN      MX      10      mail.example.com.

第一个非注释行是 TTL,在本例中是所有记录的 TTL(D 代表天)。SOA(授权开始)行中的说明符同样明显。

NS 记录必须包含主机的 FQDN(完全限定域名)。文件中还必须有一个 A 记录,其中包含主机的有效 IP 地址。为了进行测试,您应该使用本地主机 IP 地址 127.0.0.1。否则,请使用真实 IP 地址。

您应该使用今天的日期(即执行此操作的当天)并附加一个从 01 开始的计数器作为序列号。上面的序列号是 2020.01.22 的第一次更改。每当区域文件更改时,序列号都会递增。如果有辅助名称服务器将此服务器用作主服务器,则除非序列号递增,否则它们不会更新。

现在您需要将正向区域文件添加到named.conf

但是,在您的 DNS 服务器开始工作之前,您需要在 /etc/named.conf 中创建一个指向新区域文件的条目。在顶级提示区域的条目下方但在“include”行之前添加以下几行。

zone "example.com" IN {
        type master;
        file "example.com.zone";
};
  • 重新启动命名
  • 使用 dig 和 nsloookup 命令进行测试:

    挖掘 test1.example.com

    dig mx example.com

    nslookup test1.example.com

    访问 www.amd.com

请注意,只要 /etc/resolv.conf 文件中提供了 Example.com 的域和搜索条目,除 nslookup 命令外,这些命令都需要使用 FQDN。如果没有,则只需在所有测试中使用 FQDN。

此后,如果需要,您就可以开始使用根名称服务器了。

答案3

在您的挖掘输出中,您会看到您获得的响应来自 Google 公共解析器

;; SERVER: 8.8.8.8#53(8.8.8.8)

当你测试自己的名称服务器和 DNS 区域时,你需要指示dig查询自己的名称服务器,而不是使用/etc/resolve.conf来自

dig ns1.example.com. @127.0.0.1

(或者您正在测试的名称服务器的 IP 地址)

相关内容