如何製作 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,在本例中是所有記錄的一天(D 代表天)。 SOA(授權開始)行中的說明符同樣明顯。

NS 記錄必須具有主機的 FQDN(完全限定網域名稱)。文件中還必須有一條 A 記錄,其中包含主機的有效 IP 位址。為了進行測試,您應該使用本機主機 IP 位址 127.0.0.1。否則,為真實 IP 位址。

您應該使用今天(如執行操作的當天)日期並附加一個從 01 開始的計數器作為序號。以上序號為2020年1月22日第一次變更。每當區域文件更改時,序號就會遞增。如果有輔助名稱伺服器將此名稱伺服器用作主名稱伺服器,則除非序號遞增,否則它們不會更新。

現在您需要將轉送區域檔案新增至named.conf

然而,在 DNS 伺服器開始工作之前,您需要在 /etc/named.conf 中建立一個指向新區域檔案的項目。在頂級提示區域條目下方、「include」行之前新增以下行。

zone "example.com" IN {
        type master;
        file "example.com.zone";
};
  • 重新啟動命名
  • 使用 dig 和 nslookup 指令進行測試:

    挖 test1.example.com

    挖掘 mx example.com

    nslookup test1.example.com

    挖掘 www.amd.com

請注意,只要 /etc/resolv.conf 檔案中提供了 example.com 的網域和搜尋條目,就必須對這些指令使用 FQDN(nslookup 指令除外)。如果不是,只需使用 FQDN 進行所有測試。

此後,您應該準備好開始使用根名稱伺服器(如果需要)。

答案3

在您的挖掘輸出中,您會看到您收到的回應來自 Google 公共解析器

;; SERVER: 8.8.8.8#53(8.8.8.8)

當您測試自己的名稱伺服器和 DNS 區域時,您需要指示dig查詢您自己的名稱伺服器,而不是使用來自/etc/resolve.confwith 的名稱伺服器

dig ns1.example.com. @127.0.0.1

(或您正在測試的名稱伺服器的 IP 位址)

相關內容