DNS服务器的基础应用及主从同步

DNS服务器的基础应用及主从同步

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

简而言之,DNS的出现是为了解决人们访问各个网站时的困难,因为如果每一个web服务器都是一个固定的外网IP的话,那么我们访问时必须要在浏览器中输入如的,这对于人类来说太难于记忆了(虽然计算机很喜欢数字),所以我们想了一种方法将一个网站的名称和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服务器之间的方式。

在一个完整的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服务器的类型:

1、主DNS服务器

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

2、从DNS服务器

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

序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;

刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;

重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;

过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务;

通知机制:主服务器在发生改变时会立即通知从服务器来同步解析库

3、缓存DNS服务器

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

解析答案:

肯定答案:解析到的确定结果

否定答案:请求的条目不存在等原因导致无法返回结果;

权威答案:直属服务器提供的答案

非权威答案:缓存或者非直属服务器提供的答案

4、转发DNS服务器

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

DNS服务器能够解析域名靠的是区域解析库,而区域解析库是由众多的资源记录(RR,Resource Record)组成的,RR由多种类型:

SOA: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

注意:

*.magedu.com. IN A 1.1.1.4

magedu.com. IN A 1.1.1.4

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;

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现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems 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进程;提供辅助性的管理功能;

[root@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进程这台服务器就是 一台缓存服务器,它如果可以访问物联网就可以解析任何互联网上的域名了,因为它能找到根。

[root@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服务器、正向区域,指定区域解析库文件

[root@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 #缺省域名解析

[root@bogon ~]# named-checkconf #检查配置文件

[root@bogon ~]# named-checkzone "czcedu.com" /var/named/czcedu.com.zone #检查区域解析库文件

zone czcedu.com/IN: loaded serial 2015071601

OK

[root@bogon named]# chown :named czcedu.com.zone #修改区域文件属组

[root@bogon named]# chmod 640 czcedu.com.zone #修改权限

[root@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

[root@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 };

[root@bogon named]# vim 172.16.10.in-addr.arpa.zone #定义反向区域解析库文件

1 $TTL 86400

2 @ IN SOA ns1.czcedu.com admin.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.

[root@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

[root@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服务器

[root@bogon named]# vim czcedu.com.zone

13 ns IN A 192.168.1.107

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏绿巨人专栏

Linux 技巧

当运行tmux时,实际上会运行一个tmux service,保持session的运行。

1682
来自专栏前端侠2.0

ng6中,在HTTP拦截器里,异步请求数据,之后再返回拦截器继续执行用户请求的方法研究

      我现在项目就是利用拦截器,在请求头里增加:'Authorization': this.storage.token 的请求头。

2122
来自专栏同步博客

会话劫持

  在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!当然,这只...

1303
来自专栏linux运维学习

linux学习第三篇:单用户模式与救援模式

单用户模式 1.      重新启动,在下列界面选项第一项按 e  ? 按e后进入此grub界面(启动工具) ? 2.      找到linux16所在行,将...

2688
来自专栏Jerry的SAP技术分享

SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router

起到负载均衡的消息服务器(Message Server)在图中没有得到体现。然后,消息服务器在我们每天用SAPGUI工作中扮演着重要的角色。

1713
来自专栏Python中文社区

记一次惊心的网站TCP队列问题排查经历

作者:刘晓明,互联网公司运维技术负责人,拥有10年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能。

1664
来自专栏散尽浮华

Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录

一、基础知识梳理 MUA (Mail User Agent)  MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主...

5444
来自专栏张善友的专栏

TCPView for Windows

TCPView是一个用来显示系统中所有的TCP和UDP端点(endpoint)列表的Windows程序,包括本地和远程的网络地址,以及TCP连接的状态。在Win...

2327
来自专栏公有云大数据平台弹性 MapReduce

Presto内存调优及原理(基础篇)

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。

1.9K10
来自专栏黑白安全

Nmap的使用

精细扫描,可以查看更详细的信息,如包含服务版本,操作系统类型,甚至还有traceroute..

1893

扫码关注云+社区

领取腾讯云代金券