设为首页 收藏本站
查看: 369|回复: 0

[经验分享] DNS服务器的基础应用及主从复制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-20 10:51:25 | 显示全部楼层 |阅读模式
域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。   简而言之,DNS的出现是为了解决人们访问各个网站时的困难,因为如果每一个web服务器都是一个固定的外网IP的话,那么我们访问时必须要在浏览器中输入如http://8.8.8.8的,这对于人类来说太难于记忆了(虽然计算机很喜欢数字),所以我们想了一种方法将一个网站的名称和ip地址关联起来这样使用起来就方便多了。比如访问www.google.com其实就是访问的8.8.8.8这个ip地址,这样我们只要知道google这个公司就可以轻易的记住它的web网站了。其中www.google.com叫做一个FQDN(Fully qualified domain name)即完全资格域名,在互联网上唯一标识一台服务器(在访问者看来),而FQDNàIP的转换叫做正向解析,IPàFQDN的转换叫做反向解析。反向解析的作用主要是解决邮件服务器拒绝垃圾邮件的,因为在互联网中多个FQDN可以指向同一个IP所以通过IP去找FQDN在互联网上是不现实的,这样就可以使用一个随意的IP地址来伪装成特定的FQDN,如果某IP发来的邮件与其注册的域名正、反向解析并不相匹配,那么邮件服务器会把此邮件定义为垃圾邮件处理。
      DNS进行解析时默认使用的是UDP的53号端口,使用的查询方式分为两种:递归查询和迭代查询。递归查询查询是客户端与DNS服务器之间的方式,迭代查询时DNS服务器之间的方式。
wKioL1WnxKSD0fC3AACSl9QU6Vw104.jpg
   在一个完整的FQDN当中,一共分为四个部分:主机名.二级域名.一级域名.,最后的一个点代表根域名服务器,全球一共有13组,从A-M编号,其中有些组在世界各地有多组镜像,根域名服务器顾名思义就是以它为起始进行查询,它知道每一个顶级域名服务器的地址,每一个顶级域名服务器知道其所管辖的二级域名服务器的地址,每一个二级域名服务器知道其管辖的每一个主机的地址,这个样经过层层迭代就可以确定一个FQDN的IP地址,然后前段DNS服务器将查询后的最终结果一次返回给客户端这就叫做递归查询。举个例子:
查询 www.czcedu.org
    客户端发送查询报文" www.czcedu.org "至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
    如果记录老化或不存在,则
    DNS服务器向根域名服务器发送查询报文" www.czcedu.org ",根域名服务器返回 .org 域的权威域名服务器地址,这一级首先会返回的是顶级域名的权威域名服务器。
    DNS服务器向 .org 域的权威域名服务器发送查询报文" www.czcedu.org ",得到 .czcedu.org 域的权威域名服务器地址。
    DNS服务器向 .czcedu.org 域的权威域名服务器发送查询报文" www.czcedu.org ",得到主机 www 的A记录,存入自身缓存并返回给客户端。
    我们看到了DNS服务器的作用,但是如果我们全网内的解析工作都交给一台DNS服务器的话那么一旦它宕机将无法通过FQDN访问互联网,所以我们要对DNS服务器进行备份,接下来我们就说一下DNS服务器的类型:
  • 主DNS服务器

    • 维护所负责解析的域内解析库服务器;解析库由管理维护

  • 从DNS服务器
    序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;
    刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;
    重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
    过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务;
    通知机制:主服务器在发生改变时会立即通知从服务器来同步解析库

    • 从主DNS服务器或其它的从DNS服务器那里"复制"(区域传递)一份解析库;这时使用的是TCP的53端口。

  • 缓存DNS服务器
    解析答案:
    肯定答案:解析到的确定结果
    否定答案:请求的条目不存在等原因导致无法返回结果;
    权威答案:直属服务器提供的答案
    非权威答案:缓存或者非直属服务器提供的答案

    • 及上图中的与client直接联系的DNS服务器,用于缓存已经确定的查询结果以加快DNS解析速度。

  • 转发DNS服务器

    • 将客户端的查询请求全部或部分转发给某特定的DNS服务器

    DNS服务器能够解析域名靠的是区域解析库,而区域解析库是由众多的资源记录(RR,Resource Record)组成的,RR由多种类型:
    OA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
    A:internet Address,作用,FQDN --> IP
    AAAA: FQDN --> IPv6
    PTR: PoinTeR,IP --> FQDN
    NS: Name Server,专用于标明当前区域的DNS服务器
    CNAME:Canonical Name,别名记录
    MX: Mail eXchanger,邮件交换器
    每种资源记录定义的格式:
    语法:name[TTL]IN rr_type value
        注意:
        (1) TTL即客户端的到解析结果的缓存时长,可从全局继承;
        (2) @可用于引用当前区域的名字;
        (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;
        (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;
        SOA:
        name: 当前区域的名字,例如"magedu.com.";
        value: 有多部分组成
        (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
        (2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com;
        (3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
    例如:
    magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
    2015042201  ;序列号
    2H          ;刷新时间
    10M;重试时间
    1W;过期时间
    1D;否定答案的TTL值
    )
    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.
    注意:
    (1) 对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  1.1.1.2
    mx1.magedu.com. IN    A   1.1.1.3
    mx2.magedu.com.  IN   A   1.1.1.3
    避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;

         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-addra.arpa.
             value:FQDN
             例如:
                                               4.3.2.1.in-addr.arpa.   IN   PTR         www.magedu.com
                                               简写成:
                                                        4    IN  PTR          www.magedu.com.

                                               注意:网络地址及后缀可省略;主机地址依然需要反着写;
         CNAME:
                name:别名的FQDN
                value:正工名字的FQDN;
           例如:
                                               web.magedu.com.      IN          CNAME          www.magedu.com
OK,DNS协议我们已经大致讲清楚了,接下来我们看一下DNS服务到的实现,使用最广泛的的开源实现方式是使用BIND软件包。BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(InternetSystems Consortium)负责开发与维护。BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(InternetSystems Consortium)负责开发与维护。
安装bind包有很多个组件,我们这里就安装bind.x86_64、bind-libs.x86_64、bind-utils.x86_64这三个包,至于其它包的功能大家自行查看吧,篇幅原因就不详细解释了。使用简单的yum安装就可以了默认base源中就有。安装好之后会生成一些关键性的文件:
  服务脚本:/etc/rc.d/init.d/named
  主配置文件:/etc/named.conf,/etc/named.rfc1912.zones, /etc/rndc.key
  解析库文件:/var/named/ZONE_NAME.ZONE
  根区域文件:/var/named/named.ca
   rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1:953/tcp来连接named进程;提供辅助性的管理功能;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
[iyunv@bogon ~]# vim /etc/named.conf
  
10 options {
11         listen-on port 53 { 192.168.19.135;127.0.0.1; 192.168.80.129; };      #配置监听的端口和ip
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     { any; };    #允许查询请求的主机
18         recursion yes;         #是否允许递归查询
19         //forward first;
20         //forwarders { 192.168.19.134; };
21
22         dnssec-enable no;
23         dnssec-validation no;
24 //      dnssec-lookaside auto;
25
26         /* Path to ISC DLV key */
27 //      bindkeys-file"/etc/named.iscdlv.key";
28
29 //      managed-keys-directory"/var/named/dynamic";
30 };
31
32 logging {
33         channel default_debug {
34                 file"data/named.run";
35                 severity dynamic;
36         };
37 };
38
39 zone "." IN {              #定义根区域
40         type hint;        #根提示,就是找不到了就从根开始找
41         file "named.ca";
42 };
43
44 include"/etc/named.rfc1912.zones"; #包含区域文件
45 include"/etc/named.root.key";
#到此处如果我们没有自定义named.rfc1912.zones中的任何内容那么启动named进程这台服务器就是一台缓存服务器,它如果可以访问物联网就可以解析任何互联网上的域名了,因为它能找到根。
[iyunv@bogon ~]# vim /etc/named.rfc1912.zones
  
13 zone"localhost.localdomain" IN {
14         type master;
15         file "named.localhost";
16         allow-update { none; };
17 };
18
19 zone "localhost"IN {
20         type master;
21         file "named.localhost";
22         allow-update { none; };
23 };
24
25 zone"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN {
26         type master;
27         file "named.loopback";
28         allow-update { none; };
29 };
30
31 zone"1.0.0.127.in-addr.arpa" IN {
32         type master;
33         file "named.loopback";
34         allow-update { none; };
35 };
36
37 zone"0.in-addr.arpa" IN {
38         type master;
39         file "named.empty";
40         allow-update { none; };
41 };
42          #以上定义的都是本地回环地址的正向和反向区域
48 zone "czcedu.com." IN {
49        type master;
51        file "czcedu.com.zone";
52 };       #定义主DNS服务器、正向区域,指定区域解析库文件
[iyunv@bogon ~]# vim /var/named/czcedu.com.zone     #编写区域解析库文件
  
  1 $TTL 86400       #缓存值
  2 $ORIGIN czcedu.com.    #区域名称变量
  3 @       IN     SOA     ns1.czcedu.com.admin.czcedu.com. (              #@表示使用ORIGIN变量,如果没有定义则使用区域名称
  4                                        2015071601
  5                                         1H
  6                                         10M
  7                                         1W
  8                                         1D )
  9 @       IN     NS      ns1.czcedu.com.  #这里可以写全区域名称,但结尾必须加“.”
10         IN     NS      ns2 #也可以省略但不能加“.”
11         IN     MX 10   mail
12         IN     MX 20   mx
13 ns1     IN     A       172.16.10.1
14 ns2     IN     A       172.16.10.2
15 mail    IN     A       172.16.10.3
16 mx      IN     A       172.16.10.4
17 www     IN     A       172.16.10.5
18 ftp     IN     CNAME   www
19 *       IN      A      172.16.10.5        #泛域名解析
20 czcedu.com      IN     A       172.16.10.5     #缺省域名解析
[iyunv@bogon ~]# named-checkconf #检查配置文件
[iyunv@bogon ~]# named-checkzone "czcedu.com"/var/named/czcedu.com.zone         #检查区域解析库文件
zone czcedu.com/IN: loaded serial 2015071601
OK
[iyunv@bogon named]# chown :named czcedu.com.zone     #修改区域文件属组
[iyunv@bogon named]# chmod 640 czcedu.com.zone     #修改权限
[iyunv@bogon named]# dig -t A www.czcedu.com 192.168.1.106  #测试DNS服务器工作是否正常
  
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6<<>> -t A www.czcedu.com 192.168.1.106
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:28588
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2,ADDITIONAL: 2
  
;; QUESTION SECTION:
;www.czcedu.com.                          IN     A
  
;; ANSWER SECTION:
www.czcedu.com.                  86400       IN     A      172.16.10.5     #与我们服务器中定义的相同
  
;; AUTHORITY SECTION:
czcedu.com.            86400       IN     NS    ns1.czcedu.com.
czcedu.com.            86400       IN     NS    ns2.czcedu.com.
  
;; ADDITIONAL SECTION:
ns1.czcedu.com.             86400       IN     A      172.16.10.1
ns2.czcedu.com.             86400       IN     A      172.16.10.2
  
;; Query time: 4 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:11:12 2015
;; MSG SIZE  rcvd: 116
  
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id:41184
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
  
;; QUESTION SECTION:
;192.168.1.106.                          IN     A
  
;; AUTHORITY SECTION:
.                          10784       IN     SOA a.root-servers.net. nstld.verisign-grs.com.2015071600 1800 900 604800 86400
  
;; Query time: 4 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:11:12 2015
;; MSG SIZE  rcvd: 106
[iyunv@bogon named]# vim /etc/named.rfc1912.zones #定义反向区域
48 zone "10.16.172.in-addr.arpa." IN {
49         type master;
50         file "172.16.10.in-addr.arpa.zone";
51 };
[iyunv@bogon named]# vim 172.16.10.in-addr.arpa.zone      #定义反向区域解析库文件
  
  1 $TTL 86400
  2 @       IN     SOA     ns1.czcedu.comadmin.czcedu.com (
  3                                        2015071601
  4                                         1H
  5                                         5M
  6                                         1W
  7                                         1D )
  8         IN     NS      ns1.czcedu.com.
  9         IN     NS      ns2.czcedu.com.
10         IN     MX 10   mail.czcedu.com.
11         IN     MX 20   mx.czcedu.com.
12 1       IN     PTR     ns1.czcedu.com.
13 2       IN     PTR     ns2.czcedu.com.
14 3       IN     PTR     mail.czcedu.com.
15 4       IN     PTR     mx.czcedu.com.
16 5       IN     PTR     www.czcedu.com.
[iyunv@bogon named]# dig -x 172.16.10.5 #检测反向区域解析是否正常
  
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6<<>> -x 172.16.10.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:18889
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2,ADDITIONAL: 2
  
;; QUESTION SECTION:
;5.10.16.172.in-addr.arpa.    IN     PTR
  
;; ANSWER SECTION:
5.10.16.172.in-addr.arpa. 86400  IN     PTR  www.czcedu.com.
  
;; AUTHORITY SECTION:
10.16.172.in-addr.arpa.         86400       IN     NS    ns1.czcedu.com.
10.16.172.in-addr.arpa.         86400       IN     NS    ns2.czcedu.com.
  
;; ADDITIONAL SECTION:
ns1.czcedu.com.             86400       IN     A      172.16.10.1
ns2.czcedu.com.            86400       IN     A      172.16.10.2
  
;; Query time: 3 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:37:57 2015
;; MSG SIZE  rcvd: 138
#建立主从服务器及区域传送,主IP:192.168.1.106;从IP:192.168.1.107
[iyunv@bogon named]# vim /etc/named.rfc1912.zones #定义从服务器
48 zone "10.16.172.in-addr.arpa." IN {        #反向区域
49         type slave;               #类型为slave
50         masters { 192.168.1.106; };   #指定主服务器地址
51         file"slaves/172.16.1.in-addr.arpa.zone";  #区域传输文件放置到slaves目录下
52 };
53
54 zone"czcedu.com." IN {        #正向区域
55         type slave;
56         masters { 192.168.1.106; };
57         file"slaves/czcedu.com.zone";
58 };
#不过在主服务区域解析库其中必须定义从服务器为一个DNS服务器
[iyunv@bogon named]# vim czcedu.com.zone
13 ns      IN      A      192.168.1.107



好了,这里DNS的基本配置就完成了,还有子域授权及view我们下次再介绍。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-88628-1-1.html 上篇帖子: linux挂载ntfs 下篇帖子: NFS共享存储优化及实战 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表