我的域名是 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 地址)