一、DNS概述

DNS(Domain Name System)即域名系统、它使用层次结构的命名系统、将域名和IP相互映射

在整个互联网环境中连接了数以亿计的服务器以及个人主机、其中大部分网站都使用了域名形式的地址

域名就相当于我们的名字、而IP地址就相当于我们的身份证号码、很显然名字要身份证号码容易记得多

DNS在网络中的作用就是维护着一个地址数据库、其中记录了各种域名与IP地址的对应关系、以便为用户提供查询服务


1)DNS解析类型

DNS解析类型包括两种:

正向解析与反向解析、前者根据域名找IP、后者根据IP找域名  后者并不是很常用


2)DNS解析过程

1、 首先客户端先检查缓存以及本地host文件、如果这两个都没有则去请求本地DNS服务器

2、 本地DNS有则返回数据给客户端、没有则向根域服务器去请求

3、 根域服务器并不认识www.123.com、所以它只会返回.com服务器的地址给本地DNS服务器

4、 然后本地DNS服务器又去请求.com服务器、而.com服务器刚好记录了123.com服务器的地址

5、 之后本地DNS服务器又去请求123.com服务器、因为它有www.123.com 的记录、所以则返回它的地址给本地DNS

6、 最后本地DNS则会将返回请求的IP地址给客户端、并把这个保存在高速缓存中、如下图所示:

========================================================================================


3)DNS类型

根据所管理的区域不同、DNS也可分为不同的类型、在同一台DNS服务器中 对于不同区域来说、也拥有不同的身份

1、缓存域名服务器:目的在于提高查询速度和效率、自己没有控制的区域地质数据、部署时需要指定解析来源

2、主域名服务器:   维护一个特定区域的数据、是指定区域的权威服务器 部署时需要自行建立所负责的地址数据文件

3、从域名服务器:   与主一样、区别在于从的数据不是自己决定的而是来源于主、通常用于DNS服务器的热备份


4)DNS域名结构

1、根域:   根域位于域名空间的最高层、一般用一个“.”来表示

2、一级域:一般代表一种类型的组织机构或国家地区

  组织域包括:com、.org、.mil、.gov、.net、.edu

  国家域包括:cn、.hk、.tw、.us、.jp、.ir、.uk

3、二级域:用来标明一级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理、比如cn 顶级域名下面设置的二级域名 .com.cn、.edu.cn

4、子域:    二级域下所创建的各级域统称为子域、子域由字母[a-z]、数字[0-9]、与连接符"-"组成、各级域名之间用"."连接

5、主机:   主机为一台具体的计算机、位于域名空间的最下层、比如Web服务器:www.123.com、比如邮件服务器:mail.123.com


二、DNS部署

部署DNS可以使用bind软件、它不是唯一能够提供DNS服务的程序、但却是应用最为广泛的

1)安装Bind

提示:可以使用yum方式来进行安装、同时也可以使用源码包形式进行安装

[root@node1 ~]# yum -y install bind*

安装的时候会自动安装相应的依赖包、下面说明几个常用的:  

bind:            提供域名服务的主要程序

bind-utils:    提供DNS测试工具 如dig nslookup

bind-libs:     提供bind、bind-utils使用的库函数

bind-chroot: 提供伪装目录 以此提高安全性

=============================================

安装之后会自动增加一个名为named的系统服务

配置文件位于:/etc/named.conf

数据文件位于:/var/named

2)Bind服务的配置文件

配置文件包含两种类型:主配置文件、区域数据文件

其中主配置文件用于设置named服务器的全局配置部分与区域配置部分、而区域数据文件用于存放某个DNS区域的地址解析记录

1、全局配置部分

options {
        listen-on port 53 { 127.0.0.1; };						#设置监听地址及端口
        directory       "/var/named";							#区域数据文件默认存放位置
        dump-file       "/var/named/data/cache_dump.db";		#指定缓存数据库文件
        statistics-file "/var/named/data/named_stats.txt";		#状态统计文件位置
        allow-query     { localhost; };							#允许使用本DNS服务的网段
        recursion yes;											#允许使用递归查询

};

注意:如果不指定监听端口则默认在TCP和UDP接口中监听53号端口、不指定allow-query则默认相应所有客户请求

2、区域配置部分

区域配置参数使用 zone...{};配置格式、一台DNS可为多个区域提供解析、因此在named.conf中可以有多个zone配置端、区域类型包括正向和反向

#================================================
zone "mds.com" IN {													#正向区域
        type master;												#类型为主区域
        file "mds.com.zone";										#区域数据文件为benet.com.zone
        allow-transfer { 10.2.3.12; };								#允许下载数据的从服务器
};
#================================================
zone "3.16.172.in-addr.arpa" IN {									#反向区域
        type master;
        file "172.16.3.arpa";										#区域数据文件为10.2.3.arpa
        allow-transfer { 10.2.3.12; };
};
#================================================

需要注意的地方如下:

每个zone都是可选的、包括 根域;回环域;反向域、具体根据实际需求而定

反向区域的名称由倒序的网络地址和.in-addr.arpa组合而成

file用于指定实际的区域数据文件、文件可自定义、allow-transfer参数也可放在全局配置里

提示:修改完之后可使用"named-chekconf"对named.conf配置文件进行语法检查、如果配置文件没有问题则不给出任何提示、反之我们需要根据给出的提示信息进行排错

3、区域数据文件

区域数据文件位于:/var/named目录、每个区域数据文件对应一个DNS解析区域

在区域数据文件中包括:TTL配置项、SOA记录、地址解析记录、注释信息以分号;开始

(1)TTL配置及SOA记录部分  

$TTL 1D												#有效解析记录的生存时间
@       IN SOA  mds.com. admin.mds.com. (			#SOA标记、域名、管理邮箱
        				2002						#更新序列号、可是10位以内的整数
        				1D							#刷新时间、重新下载地址数据的间隔
        				1H							#重试延时、下载失败后的重试间隔
        				1W							#失效时间、超过改时间无法下载则放弃
        				3H )						#无效解析记录的生存周期

上面的配置:

单位默认为秒、也可以使用 M(分)、H(时)、W(周)、D(天)等单位

@表示当前的DNS区域名 相当于mds.com、而admin.mds.com表示域管理员邮箱

SOA记录中的更新序列号用来同步主、从服务器的区域数据 当从服务器判断区域数据时

若发现主服务器中的序列号与本地区域数据中的序列号相同、则不会进行下载

(2)地址解析记录部分

        IN      NS      node1.mds.com.
        IN      MX 10   mail.mds.com.
node1   IN      A       10.2.3.11
www     IN      A       172.16.3.11
mail    IN      A       172.16.3.12
ftp     IN      A       172.16.3.13
test    IN      CNAME   www

以上配置中、四种常见的地址解析记录如下:

NS域名服务器:记录当前区域的DNS服务器的主机地址

MX邮件交换:   记录当前区域的邮件服务器的主机地址、10表示 当有多个MX记录时 选择邮件优先级、数字越大优先级越低

A地址:             记录正向解析条目

CNAME别名:  记录正向解析条目的其它名称

===========================================================

在反向区域中、不会用到A记录、而是用PTR指针记录、如下所示:

11      IN      PTR     www.mds.com.
12      IN      PTR     mail.mds.com.

使用PTR时、第一列只需指明对应IP地址的主机地址部分即可 例如 11和12

系统在查找地址记录时会自动将当前反向域的网络地址作为前缀

例如:11 IN PTR www.mds.com.、表示IP为172.16.23.11 主机的 域名是www.mds.com

要注意的是:当使用完整的FQDN时、务必记得在后面带上点号

===========================================================

修改完之后、可执行named-checkzone对区域文件进行检查、依次指定 区域名称和数据文件名作为参数

如果没有错误系统将给出OK信息、反之则根据提示排错、如下所示:

[root@node1 named]# named-checkzone mds.com mds.com.zone
zone mds.com/IN: loaded serial 2002
OK

===========================================================

如果需要进行泛域名解析则:* IN A IP 即可

最后不要忘了、更改两个区域数据文件的属主和属组、不然可能解析不了 如下所示

[root@node1 named]# chown named:named mds.com.zone
[root@node1 named]# chown named:named 172.16.3.arpa

三、部署缓存域名服务器

1)建立配置文件

缓存域名服务器一般架设与公司内外、目的在于提高域名解析速度 减少对互联网访问的出口流量

此次做缓存域名服务器我的IP为192.168.1.182、解析的时候只需将客户端的首选DNS设置此IP地址即可

安装我就不再赘述、如下所示 这是缓存域名服务器的配置文件

options {
        listen-on port 53 { 192.168.1.182; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        allow-query     { any; };
        recursion yes;
};

这样配置的话就部署了缓存域名服务器、但是它会去向根域名服务器请求查询

我们有时候为了提高解析效率 也可不向根区域查询、而是将来自客户端的查询请求

转发给国内某运营商的DNS服务器、比如 223.6.6.6、202.96.134.133、114.114.115.115、119.29.29.29

然后缓存服务器收到返回的结果后再传递给客户端、只需注释根和在全局中设置forwarders参数即可实现转发功能

options {
/////省略部分内容
forwarders { 202.96.134.133; 223.6.6.6; 114.114.115.115; };
};

最后重启named服务即可、重启时候查看端口是监听正常、默认为UDP和TCP的53号端口

[root@node1 ~]# netstat -anput | grep named
tcp        0      0 192.168.1.182:53        0.0.0.0:*               LISTEN      2095/named
udp        0      0 192.168.1.182:53        0.0.0.0:*                           2095/named

最后将首选DNS设置为此IP地址即可验证

2)验证缓存域名服务器


四、部署主域名服务器  

主域名服务器通常架设与互联网环境、为了分担域名查询压力、提供数据备份 同时也会部署从域名服务器

此次环境如下:

主域名服务器:10.2.3.11

从域名服务器:10.2.3.12

网站服务器域名为:www.kawa.com、邮件服务器域名为:mail.kawa.com 对应的IP地址分别为:172.16.23.11、12

1)建立配置文件

#=========================================================================
options {
        listen-on port 53 { 10.2.3.11; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        allow-query     { any; };
        recursion yes;
};
#=========================================================================
zone "kawa.com" IN {
        type master;
        file "kawa.com.zone";
        allow-transfer { 10.2.3.12; };
};
#==========================================================================
zone "23.16.172.in-addr.arpa" IN {
        type master;
        file "172.16.23.arpa";
        allow-transfer { 10.2.3.12; };
};
#==========================================================================

2)建立区域数据文件

[root@node1 ~]# cd /var/named/
[root@node1 named]# cp named.localhost kawa.com.zone
[root@node1 named]# cp named.localhost 172.16.23.arpa
[root@node1 named]# chown named:named kawa.com.zone
[root@node1 named]# chown named:named 172.16.23.arpa

1、正向数据文件

$TTL 1D
@       IN SOA  kawa.com. manager.kawa.com. (
                                        0
                                        1D
                                        1H
                                        1W
                                        3H )
        IN      NS      ns1.kawa.com.
        IN      NS      ns2.kawa.com.
        IN      MX 10   mail.kawa.com.
ns1     IN      A       10.2.3.11
ns2     IN      A       10.2.3.12
www     IN      A       172.16.23.11
mail    IN      A       172.16.23.12
*       IN      A       172.16.23.255

2、反向数据文件

$TTL 1D
@       IN SOA  kawa.com. manager.kawa.com. (
                                        0
                                        1D
                                        1H
                                        1W
                                        3H )
        IN      NS      ns1.kawa.com.
        IN      NS      ns2.kawa.com.
11      IN      PTR     www.kawa.com.
12      IN      PTR     mail.kawa.com.

3)验证主域名服务器

最后重启named服务进行验证即可 systemctl restart named

[root@node2 ~]# nslookup
> www.kawa.com
Server:		10.2.3.11
Address:	10.2.3.11#53

Name:	www.kawa.com
Address: 172.16.23.11
#=====================================================================================
> mail.kawa.com
Server:		10.2.3.11
Address:	10.2.3.11#53

Name:	mail.kawa.com
Address: 172.16.23.12
#=====================================================================================
> abcd.kawa.com
Server:		10.2.3.11
Address:	10.2.3.11#53

Name:	abcd.kawa.com
Address: 172.16.23.255
#=====================================================================================
> 172.16.23.11
Server:		10.2.3.11
Address:	10.2.3.11#53

11.23.16.172.in-addr.arpa	name = www.kawa.com.
#=====================================================================================
> 172.16.23.12
Server:		10.2.3.11
Address:	10.2.3.11#53

12.23.16.172.in-addr.arpa	name = mail.kawa.com.
#=====================================================================================

五、部署从域名服务器

延续上面的案例、在已经部署好主域名服务器的基础之上继续部署从域名服务器

1)建立配置文件

配置的时候大致相同、只是不需要再设置allow-transfer

#=========================================================================
options {
        listen-on port 53 { 10.2.3.12; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        allow-query     { any; };
        recursion yes;
};
#=========================================================================
zone "kawa.com" IN {
        type slave;							#类型指定为从
        masters { 10.2.3.11; };				#指定主服务器IP地址
        file "slaves/kawa.com.zone";		#指定下载区域文件所保存的目录
};
#=========================================================================
zone "23.16.172.in-addr.arpa" IN {
        type slave;
        masters { 10.2.3.11; };
        file "slaves/172.16.23.arpa";

};
#==========================================================================

随后我们重启named服务、然后到相应的目录查看是否已经下载了区域数据文件、需要有写入权限

[root@node2 ~]# ll /var/named/slaves/
总用量 8
-rw-r--r-- 1 named named 321 6月  14 16:12 172.16.23.arpa
-rw-r--r-- 1 named named 414 6月  14 16:12 kawa.com.zone

2)验证从域名服务器

将首选DNS的IP地址设置为 10.2.3.12然后在客户端上测试解析、如下所示:

[root@node1 ~]# nslookup
>
> www.kawa.com
Server:		10.2.3.12
Address:	10.2.3.12#53

Name:	www.kawa.com
Address: 172.16.23.11
#=========================================================================
> mail.kawa.com
Server:		10.2.3.12
Address:	10.2.3.12#53

Name:	mail.kawa.com
Address: 172.16.23.12
#=========================================================================
> 12345.kawa.com
Server:		10.2.3.12
Address:	10.2.3.12#53

Name:	12345.kawa.com
Address: 172.16.23.255
#=========================================================================
> 172.16.23.11
Server:		10.2.3.12
Address:	10.2.3.12#53

11.23.16.172.in-addr.arpa	name = www.kawa.com.
#=========================================================================
> 172.16.23.12
Server:		10.2.3.12
Address:	10.2.3.12#53

12.23.16.172.in-addr.arpa	name = mail.kawa.com.
#=========================================================================

【只是为了打发时间】

域名解析服务-DNS的更多相关文章

  1. 《linux就该这么学》第十四节课:第13章,部署DNS域名解析服务(bind服务)

    (借鉴请改动)  第十二章收尾  12.2.nfs网络文件系统 RHEL7默认安装了nfs,配置文件在  /etc/export  写入格式:共享目录    允许的客户端(参数)  ro        ...

  2. 使用unbound提供DNS域名解析服务

    使用unbound提供DNS域名解析服务 # 作者:Eric # 微信:loveoracle11g # 先配yum仓库 [root@server1 ~]# cd /etc/yum.repos.d/ [ ...

  3. DNS域名解析服务

    一.DNS的体系结构: DNS:域名解析系统 DNS由根域.顶级域和子域构成.根域主要负责管理顶级域,顶级域主要负责管理其下面子域. .代表DNS的根域. .com..edu等代表顶级域. shou. ...

  4. DNS域名解析服务(bind)

    DNS(Domain Name System,域名系统): 用于管理和解析域名与IP地址对应关系的技术. 简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的I ...

  5. DNS域名解析服务以及Bind服务程序

    一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名解析服务( ...

  6. DNS域名解析服务(重点)

    一 .DNS  系统的作用 1.DNS 服务器概述 DNS 系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名:与 IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正 ...

  7. DNS域名解析四种配置实验 ---Linux DNS域名解析服务

    DNS域名解析服务一.BIND域名服务基础1) DNS的定义2)域名结构3)DNS系统的作用① 正向解析:根据域名查找对应的IP地址② 反向解析:根据IP地址查找对应的域名③ DNS系统的分布式数据结 ...

  8. 第三章、DNS域名解析服务

    DNS 1DNS简介 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS ...

  9. 第13章 使用Bind提供域名解析服务

    章节简述: 本章节将让您理解DNS服务程序的原理,学习正向解析与反向解析实验,掌握DNS主服务器.从服务器.缓存服务器的部署方法. 够熟练配置区域信息文件与区域数据文件,以及通过使用分离解析技术让不同 ...

随机推荐

  1. linux入门系列5--新手必会的linux命令

    上一篇文章"linux入门系列4--vi/vim编辑器"我们讨论了在linux下如何快速高效对文本文件进行编辑和管理,本文将进一步学习必须掌握的linux命令,掌握这些命令才能让计 ...

  2. mock造数据

    前端开发,需要和后台联调:很多时候,前端开发并不需要等后台完全写好接口在去联调,自己可以写死数据,渲染数据,加样式.后台人员有时会很忙,他没有时间写好返回所有的数据等等,特别是新开一个项目,从零开始的 ...

  3. Scala实践13

    1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...

  4. HTML中使用Vue+Dhtmlxgantt制作任务进度图

    HTML中使用Vue+Dhtmlxgantt制作任务进度图 Dhtmlxgantt官网: https://dhtmlx.com/docs/products/dhtmlxGantt/ 参考文章 甘特图配 ...

  5. 洛谷 P1658 购物

    题目链接 题目描述 你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个.为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值. 题目分析 题目要求组合出1到X之间的任意值 ...

  6. SpringSecurity 默认表单登录页展示流程源码

    SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程, 涉及 1.FilterSecurityIntercep ...

  7. Java单体应用 - 开发工具 - 01.IntelliJ IDEA

    原文地址:http://www.work100.net/training/monolithic-tools-intellij-idea.html 更多教程:光束云 - 免费课程 IntelliJ ID ...

  8. BZOJ 3513 idiots

    题目传送门 分析: FFT一手统计两根棍子相加的方案 然后一个值2S可能会被同一根S自己乘自己得到 然后要减去 其次,A+B和B+A会被算成两种方案,所以还要除以2 然后不太好算合法的方案数,但是非法 ...

  9. 开发工具篇:Git和Github

    开发工具篇:Git和Github Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repositor ...

  10. 基于Flask框架搭建视频网站的学习日志(一)

    ------------恢复内容开始------------ 基于Flask框架搭建视频网站的学习日志(一)2020/02/01 一.Flask环境搭建 创建虚拟环境 初次搭建虚拟环境 搭建完虚拟环境 ...