我的網域是 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.conf
with 的名稱伺服器
dig ns1.example.com. @127.0.0.1
(或您正在測試的名稱伺服器的 IP 位址)