简述DNS服务器原理

一、简介

DNS,全称Domain Name System,域名系统,是一个记录域名和Ip地址相互映射的一个系统,能够将用户访问互联网时使用的域名地址转换成对应的IP地址,而不用使用者去记住数量众多的IP地址。通过域名得到域名对应的IP地址的过程被称为域名解析。DNS运行于UDP协议之上,使用的端口为53。

二、DNS原理简述

DNS域名解析过程(图片来源网络)

1、DNS域名

DNS在网络中存在着数量众多的域名,如.com、.org等,而域名系统中是以层级树状结构划分域名的,类似于下图:


域名的划分(图片来源网络)

位于域名系统的顶端为根域名,而后为一级域名.net、.com、.org等,再往下则为二级域名,如.qq、.ibm等。而位于域名系统最底层的为主机名,如www,finance等。一个合法的域名格式,应遵循FQDN(Full Qualified Domain Name)格式,以域名系统的级别从低到高,从左往右编写,如:www.qq.net.www.sina.org.

2、DNS的查询方式

DNS的查询方式有两种,分别为递归查询(recursion)和迭代查询(iteration)。

递归查询:客户端发起一个DNS解析请求,若本地DNS服务器若不能为客户端直接解析域名,则域名服务器会代替客户端(下级服务器)向域名系统中的各分支的上下级服务器进行递归查询,直到有服务器响应回答了该请求后,将该请求结果返回客户端。在此期间,客户端将一直处于等待状态。

迭代查询:客户端(下级服务器)发起一个DNS解析请求后,若上级DNS服务器并不能直接提供该DNS的解析结果,则该上级DNS服务器会告知客户端(下级服务器)另一个可能查询到该DNS解析结果的DNS服务器IP,客户端(下级服务器)再次向这个DNS服务器发起解析请求,如此类推,直到查询到对应的结果为止。

通常递归查询这种方式用于PC机与本地DNS服务器之间的查询,而递归查询则多用于DNS服务器之间的查询,如下图:


迭代与递归查询

3、DNS服务器的类型

DNS服务器的类型可以分为:主名称服务器、辅助名称服务器和缓存名称服务器。主名称服务器至少负责解析一个域内的域名,维护所负责解析的域的数据库,可对该域数据库进行读写操作;辅助名称服务器则负责从主名称服务器或其他辅助名称服务器中复制相关解析库,为主名称服务器缓解解析压力;而缓存名称服务器则不负责域名解析,仅仅作为缓存,加快解析速度。

4、DNS的正向解析与反向解析

在DNS服务器中逻辑上存在着两个区域,一个是正向解析区域,另一个是反向解析区域。正向解析区域即我们通常所说的域名解析,而反向解析指的是IP反向解析,即通过查询IP地址的PTR记录来得到该IP地址所指向的域名记录。而PTR记录为邮件交换记录的一种,另一种为A记录。A记录解析域名到IP地址,而PTR记录则负责解析IP地址到域名。

三、DNS服务的配置文件

在开始部署搭建DNS主从服务器前,我们先来学习下与DNS配置相关的配置文件。在Centos 系统中与DNS服务相关的配置文件包括:/etc/named.conf主配置文件、/etc/named.rfc1912.zones区域管理文件和/var/named/目录下的区域数据库文件。主配置文件/etc/named.conf和/etc/named.rfc1912.zones设置了DNS服务器能够管理哪些区域并且指定了这些区域对应的区域数据文件的存放路径和名称。
下面我们来学习相应的配置文件。

1、/etc/named.conf

主配置文件包含着三个段落,分别为全局配置段、日志配置段和区域配置段。如下示例:

options {
        listen-on port 53 { 127.0.0.1; }; #设置监控能与外部主机通信的IP地址
        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; };  #限制查询的来源为本地
        recursion yes;  #是否开启递归查询
        dnssec-enable yes;  #学习时建议关闭
        dnssec-validation yes;  #学习时建议关闭
        bindkeys-file "/etc/named.iscdlv.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 {  #根区域,包含着多个DNS顶级域信息
        type hint; 
        file "named.ca";
};
include "/etc/named.rfc1912.zones";  #把区域管理文件的内容包含进此文件
include "/etc/named.root.key";

在编辑完成主配置文件后,可使用命令named-checkconf [/etc/named.conf]对主配置文件进行语法检查。

2、/etc/named.rfc1912.zones

此文件为区域管理文件,用以保存主机负责解析或转发的区域,为/etc/named.conf所调用。其常见内容如下:

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
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 {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "magedu.com" IN {
        type master;
        file "magedu.zone";
        allow-update { none; };
};

其中zone名称以in-addr.apra结尾的为反向解析区域,其命名格式为IP网段的反写.in-addr.apra,剩下的zone则为正向解析区域。其中区域内的可设置选项包括:

type:设置此区域的类型,包括master(主名称服务器)、slave(辅助名称服务器)、forward(转发域)、hint(根域名服务器);
file FILENAME:指定区域数据文件的相对路径,目录路径由主配置文件/etc/named.conf所指定;
allow-update:是否允许客户主机或服务器自行更新DNS记录,上述为不允许更新DNS记录;

3、区域数据文件

区域数据文件存放在/var/named目录下,文件大体分为正向解析区域文件和反向解析区域文件,通常该文件内容如下:

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.

第一行为设定TTL的值,定义区域数据文件里面的各项记录的宏。
第二行为SOA起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;上述@表示当前区域的名称。
往下第三到第七行定义了服务器同步信息的相关设置,其含义如下:

serial:表示配置版本的序列号,通常情况下,序列号sn遵循“年+月+日+编号”的格式,在修改了区域文件后需要手动修改序列号;
refresh:设置DNS服务器进行同步的间隔时间,只针对本区域文件总定义的NS记录的所有主机;
retry:表示同步更新失败之后,进行重试的间隔时间;
expire:表示同步更新失败之后,多长时间清楚对应的记录,又称过期时间;
minimum:指高速缓存否定回答的存活时间;

往下就是针对域名解析的设置,按照类型可划分为以下几类:
NS记录:表示当前区域中的某个DNS服务器的名字,一个区域可有多个NS记录,如:

magedu.com. 86400 IN NS ns1.magedue.com.
magedu.com. 86400 IN NS ns2.magedue.com.

MX记录:表示当前区域的某个邮件交换器的主机名;MX记录可以有多个,但每个MX记录之间应有一个数字表示其优先级,如:

magedu.com. IN  MX  10  mx1.magedu.com.
magedu.com. IN  MX  20  mx1.magedu.com.

A记录:表示主机名对应的IP地址,一个主机名可对应多个IP地址,如:

www.magedu.com IN   A   1.1.1.1
www.magedu.com IN   A   1.1.1.2
bbs.magedu.com IN   A   1.1.1.1

AAAA记录:ipv6的A记录;(暂不常用)

PTR记录:反向地址解析记录,用于将IP地址反解析成域名,常见于反向解析区域文件中,如:

80      IN      PTR     www.magedu.com.
70      IN      PTR     www.magedu..com.

CNAME记录:域名的别名记录,用于记录某个主机域名的别名,如:

web.magedu.com IN CNAME www.magedu.com.

在编辑完成相应的区域数据文件后,可使用named-checkzone DOMAIN ZONE_FILE命令检查相应的区域数据文件。

四、使用实例

1、创建正向解析区域文件

首先编辑主配置文件/etc/named.conf中的全局配置,设置监听服务器IP地址及允许DNS查询请求等设置:

[root@localhost named]# vim /etc/named.conf
listen-on port 53 { any; };
allow-query     { any; };
recursion no;
dnssec-enable no;
dnssec-validation no;

然后编辑/etc/named.rfc1912.zones文件,设置正向区域:

[root@localhost named]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        allow-update { none; };
};

随后在/var/named/目录下创建区域数据文件magedu.com.zone:

[root@localhost named]# vim /var/named/magedu.com.zone
$TTL 3600
@       IN      SOA     ns.magedu.com.  10XXXXXX83.qq.com. (
        20180421
        1D
        1H
        1W
        3H
)
@       IN      NS      ns.magedu.com.
magedu.com.     IN      MX      10      mx1.magedu.com.
magedu.com.     IN      MX      20      mx2.magedu.com.
mx1     IN      A       192.168.0.1
mx2     IN      A       192.168.0.2
ns      IN      A       192.168.0.188
qq      IN      A       114.114.114.114
www     IN      A       199.247.21.135
web     IN      CNAME   www

最后检查相关配置文件是否有错误:

[root@localhost named]# named-checkconf /etc/named.conf 
[root@localhost named]# named-checkzone magedu.com /var/named/magedu.com.zone 
zone magedu.com/IN: loaded serial 20180421
OK

如没有报错,重启加载启动named服务:

[root@localhost named]# systemctl restart named

在其他主机上验证解析结果:

[root@localhost ~]# nslookup
> server 192.168.0.188
Default server: 192.168.0.188
Address: 192.168.0.188#53
> set q=A     
> www.magedu.com
Server:     192.168.0.188
Address:    192.168.0.188#53

Name:   www.magedu.com
Address: 199.247.21.135
> mx1.magedu.com
Server:     192.168.0.188
Address:    192.168.0.188#53

Name:   mx1.magedu.com
Address: 192.168.0.1
> web.magedu.com
Server:     192.168.0.188
Address:    192.168.0.188#53

web.magedu.com  canonical name = www.magedu.com.
Name:   www.magedu.com
Address: 199.247.21.135
> qq.magedu.com
Server:     192.168.0.188
Address:    192.168.0.188#53

Name:   qq.magedu.com
Address: 114.114.114.114
> www.magedu.com
Server:     192.168.0.188
Address:    192.168.0.188#53

Name:   www.magedu.com
Address: 199.247.21.135

解析成功。

2、创建反向解析区域文件

在上述案例1的基础上,首先在/etc/named.rfc1912.zones中编辑添加反向区域:

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0.zone";
        allow-update { none; };
};

然后在/var/named目录下生成反向区域文件192.168.0.zone:

[root@localhost named]# vim /var/named/192.168.0.zone
$TTL 3600
@       IN      SOA     ns.magedu.com.  10XXXXXXX3.qq.com. (
        20180421
        1D
        1H
        1W
        3H
)
@       IN      NS      ns.magedu.com.
ns      IN      A       192.168.0.188
1       IN      PTR     mx1.magdu.com.
2       IN      PTR     mx2.magdu.com.
188     IN      PTR     ns.magedu.com.

随后使用命令检查相应的配置文件:

[root@localhost named]# named-checkconf /etc/named.conf 
[root@localhost named]# named-checkconf /etc/named.rfc1912.zones 
[root@localhost named]# named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.zone 
zone 0.168.192.in-addr.arpa/IN: loaded serial 20180421
OK

如无报错,则重新启动named服务:

[root@localhost named]# systemctl restart named

在其他主机上测试结果:

[root@localhost ~]# nslookup 
> server 192.168.0.188
Default server: 192.168.0.188
Address: 192.168.0.188#53
> set q=NS   
> 192.168.0.1
Server:     192.168.0.188
Address:    192.168.0.188#53

1.0.168.192.in-addr.arpa    name = mx1.magdu.com.
> 192.168.0.188
Server:     192.168.0.188
Address:    192.168.0.188#53

188.0.168.192.in-addr.arpa  name = ns.magedu.com.
> 192.168.0.2
Server:     192.168.0.188
Address:    192.168.0.188#53

2.0.168.192.in-addr.arpa    name = mx2.magdu.com.
> 

反向解析成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,888评论 0 7
  • DNS简介DNS解析关键概念BIND 一、DNS简介: (一)DNS服务 DNS:Domain Name Serv...
    哈喽别样阅读 1,795评论 0 2
  • 目录: 一些基本概念主机名DNS名称解析DNS 解析的后端存储名称解析总结 大规模域名解析的体系架构DNS 解析需...
    C86guli阅读 12,492评论 3 34
  • 什么是DNS及功能: DNS(Domain name server),是将IP地址转换为域名地址。当在互联网访问外...
    魏镇坪阅读 7,638评论 0 8
  • 今天来谈谈运动背后的目标,跑马拉松,许许多多人都通过跑马拉松去传播健康,让自己养成运动的习惯,也让自己保持运动的习...
    竹海星空阅读 197评论 0 0