认识DNS

DNS全称是Domain Name System的简称,即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP/TCP协议之上,使用端口号53。


简介

DNS提供域名解析服务。当我们浏览网页时,在浏览器地址栏输入的是网址,而不是ip地址。浏览器如何找到相应的网页呢。这就是DNS的作用。无论是在Windows主机上面还是在linux主机上面,都设置得有DNS:

blob.png

[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根结构如下:

blob.png

 
当我们在浏览器的地址栏输入网址,诸如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,搭建一个环境,模拟整个访问,拓扑如下:

blob.png 
在所有的服务器上面的/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

(0)
上一篇 2016-12-07 20:39
下一篇 2016-12-08 00:46

相关推荐

  • 网络及TCP三次握手四次挥手

    批处理应用程序     FTP 、TFTP 、库存更新     无需直接人工交互     带宽很重要,但并非关键性因素 交互式应用程序     库存查询、数据库更新。     人机交互。     因为用户需等待响应,所以响应时间很重要,但并非关键性因素,除非要等待很长时间。 实时应用程序     VoIP 、视频     人与人的交互     端到端的延时至…

    2017-05-06
  • 0809vim编辑器作业

    1、如何设置tab缩进为4个字符? :set tabstop=4 首先在命令扩展模式下列出所以set设置的相关选项set all  找到一个跟tab相关的选项,上网查了下意思,tabstop表示的意思就是制表为,他的默认值设置的为8,我们目的是4,那么在命令扩展模式下设置:set tabstop=4就OK了 2、复制/etc/rc.d/init.d…

    Linux干货 2016-08-09
  • Linux的用户,组及文件权限管理

    Linux用户与组的创建,删除,属性修改,文件权限管理

    Linux干货 2018-02-24
  • file 命令

    文件类型:             – 普通文件             d 目录文件   &nb…

    2017-07-23
  • Linux基础(九)-shell编程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i nologin=0 declare -i login=0 while read l…

    Linux干货 2016-11-20
  • N22-第九周作业

    第九周    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;    #!/bin/bash    #    decl…

    Linux干货 2016-10-24