DNS全称是Domain Name System的简称,即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP/TCP协议之上,使用端口号53。
简介
DNS提供域名解析服务。当我们浏览网页时,在浏览器地址栏输入的是网址,而不是ip地址。浏览器如何找到相应的网页呢。这就是DNS的作用。无论是在Windows主机上面还是在linux主机上面,都设置得有DNS:
[root:named]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search roger.com
nameserver 172.16.253.113
通常在浏览器输入的网址类似于www.yahoo.com.cn,这就叫完整主机名,即FQDN。www就是web网站服务器的主机名,yahoo.com.cn就是域名,其中,域名是层级架构的,在最顶层的是根服务器,主要负责顶级域名的管理,所谓顶级域名(TLD)就像.com,.cn,.net,.gov等,顶级域下面管理的是二级域名,如yahoo.com,再往下就是三级域名,如mail.yahoo.com等以此类推。各类顶级域具有不同的意义,如下:
名称 | 意义 |
---|---|
com | 公司,行号,企业 |
org | 组织,机构 |
edu | 教育单位 |
gov | 政府单位 |
net | 网络通训 |
mil | 军事单位 |
整个DNS根结构如下:
当我们在浏览器的地址栏输入网址,诸如www.qq.com,那么它是怎么找到其对应的ip的呢:
1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
上面的查询方式我们可以总结为递归查询和迭代查询:
递归查询即我们将请求传递给设置的首选DNS后,它会一层一层的查询,直至把查询结果返回给我们,即使是返回的是一个查询未找到的结果。
迭代查询就是在查询的过程中,根返回相应的顶级域地址,顶级域返回的是二级域地址,一层一层的找,这就是迭代查询;
资源记录(Resoursr Record,简写为RR)
资源记录是组成了DNS各域记录。这些记录的类型有:A,AAAA,PTR,SOA,NS,CNAME,MX等,其中
SOA就是开始验证(Start Of Authority)的缩写;
NS就是DNS服务器(NameServer)的缩写,后面记录的数据是DNS服务器的意思;
A就是Address的缩写,后面记录的是对应的IPv4地址;
AAAA对应的是IPv6地址;
PTR是指向(PointTeR)的缩写,后面记录的是数据就是反解到的主机名;
CNAME是主机别名,一个主机名可以有多个别名,但IP地址是一样的;
MX是邮件服务器Mail eXchanger;
资源记录定义的格式为:
name []TTL] IN rr_type value
注意:
TTL就是time to live,表示该记录别其他DNS服务器查询到后被保留到对方服务器上的缓存当中并保持多少秒,个从全局继承;
@可以用于应用当前区域的名字;
同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮流方式响应;
同一个名字也可以能有多个不同的定义的名字;通过多个不同的名字指向同一个值进行定义;仅表示通过多个名字可以找到同一个主机而已;
上面每种资源类型的定义方式如下:
SOA:
name:当前区域的名字,例如qq.com;
value:有多部分组成
1、当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
2、记录当前区域管理员的邮箱地址,但是地址中不能使用@符号,一般用”.”替换;
3、主从服务协调属性的定义以及否定的答案的一般统一TTL;
例如:
$ORIGIN .
$TTL 86400 ; 1 day ##全局TTL定义
roger.com IN SOA ns1.roger.com. admin.roger.com. (
15 ; serial ##序列号
86400 ; refresh (1 day) ##刷新时间
3600 ; retry (1 hour) ##重试时间
604800 ; expire (1 week) ##过期时间
3600 ; minimum (1 hour) ##否定答案的TTL值
)
以上5个参数的第一个序列号外其他四个的单位默认为秒,当然也可以指定单位如:D(天),M(分钟),H(小时),W(周)。
NS记录:
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如:ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
MX记录:
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内, MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A记录:
name: 某主机的FQDN,例如www.magedu.com.
value: 主机名对应主机的IP地址
例如:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 4.4.4.4
$GENERATE 1-254 HOTS$ A 1.2.3.$
*.magedu.com. IN A 5.5.5.5 \
agedu.com. IN A 6.6.6.6
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
AAAA:
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反过来写, 1.2.3.4,要写作4.3.2.1;而有特定后缀: in-addr.arpa.,所以完整写法为: 4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
如1.2.3为网络地址,可简写成:4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写;
CNAME:
name: 别名的FQDN
value: 真正名字的FQDN
例如:
www.magedu.com. IN CNAME websrv.magedu.com
安装调试DNS
安装
DNS服务软件包的名字的bind,直接使用yum安装即可,安装完成后,会在/etc/下面生成named开头的多个配置文件:
[root:slaves]# ls /etc/named*
/etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key
[root:slaves]# ls /var/named/
data dynamic named.ca named.empty named.localhost named.loopback slaves
创建一台DNS服务器
第一步:编辑配置文件,添加如下的配置:
[root:slaves]# vim /etc/named.rfc1912.zones
...
19 zone "roger.com" IN{ ##创建一个域名为roger.com
20 type master; ##设置为主DNS
21 file "roger.com.zone"; ##该域名的配置文件名字,保存在/etc/named.conf指定的位置
22 allow-update { 172.16.250.106; }; ##允许更新的主机
23 };
24
25 zone "253.16.172.in-addr.arpa" IN{ ##反解析库,下面的配置一样同上
26 type master;
27 file "named.172.16.253";
28 allow-update { 172.16.250.106; };
29 };
30
...
/etc/named.conf文件内容如下:
[root:named]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; }; ##定义了服务器监听的在哪个ip的53端口上,可以注释掉,就是监听主机上所有IP的53端口
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";
allow-query { localhost; }; ##仅本机允许查询,可以注释掉,就是默认都可以查询
allow-transfer { 172.16.100.101; }; ##定义允许完全查询的主机,如没有可以添加
recursion yes; ##定义递归查询
dnssec-enable no; ##DNS安全开关,注释掉就默认为yes,下面一样
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
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";
然后在指定的位置创建并编辑文件如下:
[root:named]# cd /var/named/
[root:named]# cat roger.com.zone ##正向解析域
$ORIGIN .
$TTL 86400 ; 1 day
roger.com IN SOA ns1.roger.com. admin.roger.com. (
15 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
NS ns1.roger.com.
NS ns2.roger.com.
A 172.16.253.113
MX 10 mail1.roger.com.
$ORIGIN roger.com.
ftp A 172.16.253.114
ftp2 A 172.16.252.100
$TTL 7777 ; 2 hours 9 minutes 37 seconds
ftp3 A 172.16.100.123
A 12.12.12.12
A 12.12.12.14
A 12.12.12.15
ftp4 A 12.12.12.13
$TTL 86400 ; 1 day
mail1 A 172.16.253.114
ns1 A 172.16.253.113 ##本机DNS
ns2 A 172.16.100.101 ##另外一台DNS,如果将其配置为从服务器,可以实现同步更新资源记录,如果不设置,从服务器只能通过刷新时间(refresh (1 day))主动从主服务器获取
websrv A 172.16.253.115
www CNAME websrv
[root:named]# cat /var/named/named.172.16.253 ##反向解析域
$TTL 1D
@ IN SOA ns1.roger.com. admin.roger.com. ( 02 1H 30M 1D 1D )
@ IN NS ns1.roger.com.
113 IN PTR ns1.roger.com.
113 IN PTR ns2.roger.com.
114 IN PTR mail1
114 IN PTR ftp
115 IN PTR websrv
115 IN PTR www
配置完成后重新启动DNS服务,并且正向反向查询:
[root:named]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
[root:named]# dig roger.com @127.0.0.1 ##如将本机的DNS设置为本机,可以不写@127.0.0.1,其他机器上查询就写@IPDNS
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62595
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
## aa代表权威回答
;; QUESTION SECTION:
;roger.com. IN A
;; ANSWER SECTION:
roger.com. 86400 IN A 172.16.253.113
;; AUTHORITY SECTION:
roger.com. 86400 IN NS ns2.roger.com.
roger.com. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
ns2.roger.com. 86400 IN A 172.16.100.101
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 6 17:01:30 2016
;; MSG SIZE rcvd: 111
[root:named]# dig -x 172.16.253.113 @127.0.0.1 ##反向查询一定要有-x ,否则就像诶成dig -t PTR 113.253.16.172.in-addr.arpa. @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 172.16.253.113 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14533
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;113.253.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
113.253.16.172.in-addr.arpa. 86400 IN PTR ns2.roger.com.
113.253.16.172.in-addr.arpa. 86400 IN PTR ns1.roger.com.
;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 6 17:01:53 2016
;; MSG SIZE rcvd: 120
也可以用其他的主机进行查询:
[root:~]# dig roger.com @172.16.253.113
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> roger.com @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3221
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;roger.com. IN A
;; ANSWER SECTION:
roger.com. 86400 IN A 172.16.253.113
;; AUTHORITY SECTION:
roger.com. 86400 IN NS ns2.roger.com.
roger.com. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
ns2.roger.com. 86400 IN A 172.16.100.101
;; Query time: 0 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:06:49 CST 2016
;; MSG SIZE rcvd: 122
[root:~]# dig -x 172.16.253.115 @172.16.253.113
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 172.16.253.115 @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65349
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;115.253.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
115.253.16.172.in-addr.arpa. 86400 IN PTR www.253.16.172.in-addr.arpa.
115.253.16.172.in-addr.arpa. 86400 IN PTR websrv.253.16.172.in-addr.arpa.
;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
;; Query time: 1 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:07:23 CST 2016
;; MSG SIZE rcvd: 138
到此,DNS服务器搭建完成。
搭建DNS从服务器
在另外一台服务器上面在/etc/named.rfc1912.zones里面编辑如下内容:
...
18
19 zone "253.16.172.in-addr.arpa" IN { ##反向解析与
20 type slave; #类型为从服务器
21 file "slaves/named.172.16"; ##资源库文件保存为/var/named/下面的位置
22 masters {172.16.253.113;}; ##定义主服务器
23 };
24
25 zone "roger.com" IN { ##正向解析域
26 type slave; #类型为从服务器
27 file "slaves/roger.com.zone"; ##资源库文件保存为/var/named/下面的位置
28 masters { 172.16.253.113; }; ##定义主服务器
29 allow-update { 172.16.250.106; }; ##定义了谁可以通过nsupdate命令远程更新
30 };
...
编辑完成后,重启named服务,就可以看见备份过来的资源库了:
[root:slaves]# ll
total 12
-rw-r--r-- 1 named named 415 Dec 6 17:02 named.172.16
-rw-r--r-- 1 named named 669 Dec 6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1580 Dec 6 15:05 roger.com.zone.jnl
[root:slaves]# pwd
/var/named/slaves
如果主服务器的资源库被修改了,从服务器会自动同步:
##在其它主机上通过nsupdate命令远程更新
root:~]$ nsupdate
> server 172.16.253.113
> zone roger.com
> update add ftp4.roger.com. 6666 IN A 12.12.12.16 ##格式需严格匹配,否则会报错
> send
>
###在主服务器上库马上有改变
[root:named]# ll
total 40
drwxrwx--- 2 named named 4096 Dec 6 10:17 data
drwxrwx--- 2 named named 4096 Dec 6 16:48 dynamic
-rw-r----- 1 named named 211 Dec 6 14:19 named.172.16.253
-rw-r----- 1 root named 3171 Jan 11 2016 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost
-rw-r----- 1 root named 168 Oct 11 22:16 named.loopback
-rw-r--r-- 1 named named 669 Dec 6 15:09 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec 6 17:20 roger.com.zone.jnl ##被更改资源库
drwxrwx--- 2 named named 4096 May 11 2016 slaves
##从服务器上的库
[root:slaves]# ll
total 12
-rw-r--r-- 1 named named 415 Dec 6 17:02 named.172.16
-rw-r--r-- 1 named named 669 Dec 6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec 6 17:20 roger.com.zone.jnl ##被同步的库
上面的实验是主服务器配置了从服务器的相关ip信息,所以在主服务器有更新时,会主动的将更新的库推送上从服务器上面。如果在主服务器上面没有配置从服务器的相关信息,要想更新,只能通过从服务器的主动拉的动作,才能将资源库文件保存到从服务器上面,并且不能做到实时同步,只能根据资源记录里面的刷新时间来更新。
为了安全,不能让未授权的服务器获得资源记录,可以在/etc/named.conf文件中添加一行语句:
18 allow-transfer { 172.16.100.101; }; ##括号中的ip为允许获取资源内容的ip,如有多个,用分号隔开,如允许任何人则为any;none表示没有一个主机被允许。
子域
上面我们讲了,DNS整个结构就是一个倒置的树,在查询的时候,要实现跌倒查询,父域必须知道子域,子域不必知道父域,这就是子域授权。
要想实现子域授权,只需要在父域的配置文件将添加子域的对应ip和域,例如上面的例子,在roger.com域授权子域,只需在roger.com的RR配置文件里面指定子域,如shanghai:
shanghai NS ns3
ns3 A xxx.xxx.xxx.xxx
这样就子域授权好了:
实验
为了验证上面的学习内容,做如下实验。
我们要访问一个域名为www.shanghai.roger.com,搭建一个环境,模拟整个访问,拓扑如下:
在所有的服务器上面的/etc/name.conf配置文件中设置为如下:
...
10 options {
11 // listen-on port 53 { 127.0.0.1; }; ##注释掉
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 // allow-query { localhost; }; ##注释掉
...
28 */
29 recursion yes;
30
31 dnssec-enable no; ##改为no
32 dnssec-validation no; ##改为no
33
34 /* Path to ISC DLV key */
...
A、根域的设置:
##在/etc/named.conf中注释掉以下信息
...
50 //zone "." IN {
51 // type hint;
52 // file "named.ca";
53 //};
...
##在/etc/named.rfc1912.zones中创建一个域
...
33 zone "."{
34 type master;
35 file "root.zone";
36 };
...
##在/var/named/下面创建文件root.zone并编辑成如下内容
1 $TTL 1D
2 @ IN SOA ns1 admin.com. ( 01 1D 1D 1D 1W )
3 @ NS ns1
4 ns1 A 172.16.252.81
5 com. NS ns2
6 ns2 A 172.16.253.113
##修改root.zone的文件属性为以下属性
-rw-r----- 1 root named 117 Dec 6 20:19 root.zone
## 完成后重启服务
B、顶级域.com的设置
##添加.com域
vim /etc/named.rfc1912.zones
...
24 zone "com"{
25 type master;
26 file "com.zone";
27 };
...
##在/var/named下面创建com.zone并编辑为如下内容:
[root:named]# cat com.zone
$TTL 1D
@ IN SOA ns1.com. admin.com. ( 1 1D 1H 1D 1D )
NS ns1
ns1 A 172.16.253.113
roger NS ns2
ns2 A 172.16.100.101
##设置com.zone属性如下:
[root:named]# chgrp named com.zone
[root:named]# chmod 640 com.zone
[root:named]# ll
total 44
-rw-r----- 1 root named 118 Dec 6 19:57 com.zone
##重启服务
C、二级域名roger.com的设置
[root:named]# vim /etc/named.rfc1912.zones
...
24
25 zone "roger.com" IN {
26 type master;
27 file "roger.com.zone";
28 };
29
30 zone "localhost" IN {
...
[root:named]# cat /var/named/roger.com.zone
$TTL 86400 ; 1 day
roger.com. IN SOA ns1.roger.com. admin.roger.com. (
16 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
@ NS ns1.roger.com.
ns1 A 172.16.100.101
www CNAME web
web A 172.16.100.101
ftp A 172.16.100.101
* A 172.16.100.101
[root:named]# ll
total 32
...
-rw-r----- 1 root named 352 Dec 6 19:38 roger.com.zone
##重启服务
D、电信服务器的配置
安装完bind软件包后,将指定”.“的文件named.ca里面的内容修改成:
[root:~]# cat /var/named/named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 172.16.252.81 ##根域IP地址
##测试能否找到www.roger.com
[root:~]# dig www.roger.com @127.0.0.1
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22996
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com. IN A
;; ANSWER SECTION:
www.roger.com. 84917 IN CNAME web.roger.com.
web.roger.com. 84917 IN A 172.16.100.101
;; AUTHORITY SECTION:
roger.com. 84917 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 84917 IN A 172.16.100.101
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 06 21:10:00 CST 2016
;; MSG SIZE rcvd: 110
##能够解析到
最后,在用户的机器上使用
[root:~]# dig www.roger.com @172.16.200.200 ##可以将172.16.200.200设置为该主机的DNS,就可以不加后面的@...,本次只能实验。
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @172.16.252.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28905
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com. IN A
;; ANSWER SECTION:
www.roger.com. 84818 IN CNAME web.roger.com.
web.roger.com. 84818 IN A 172.16.100.101
;; AUTHORITY SECTION:
roger.com. 84818 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 84818 IN A 172.16.100.101
;; Query time: 1 msec
;; SERVER: 172.16.252.5#53(172.16.252.5)
;; WHEN: Tue Dec 06 21:11:39 CST 2016
;; MSG SIZE rcvd: 110
##解析完成
注意:在整个实验中,每台服务器的”.“文件都应该指向根服务器(172.16.252.81),建立的域配置文件要使用root的属主,named的属组,权限为640,设置好防火墙。
原创文章,作者:王更生,如若转载,请注明出处:http://www.178linux.com/62960