一、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. 初识Activiti工作流

    一.背景介绍 公司最近接了一个监狱AB门系统的项目,在对项目进行调研时,发现客户的关注点主要是在AB门流程这块,项目大部分功能都是审批流程和单据流动状态等.而之前公司的项目关于流程主要都是在表中设置状 ...

  2. FFT 入门

    推荐博客 :https://oi.men.ci/fft-notes/ 卷积的理解 : https://www.zhihu.com/question/22298352?rf=21686447 题目链接 ...

  3. PTA - 拓扑排序

    一个项目由若干个任务组成,任务之间有先后依赖顺序.项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务.现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工 ...

  4. 一起来学习XPATH,来看看除了正则表达式我们还能怎么抓取数据

    参考学习的网站链接http://www.w3school.com.cn/xpath/xpath_intro.asp 首先理清楚一些常识 以此为例 <?xml version="1.0& ...

  5. PairProgramming 个人第三次作业

    Github地址:主仓库 https://github.com/Yanyixiao/PairProgramming.git Partner博客园地址: https://www.cnblogs.com/ ...

  6. ArcGIS10.2安装教程

    1,首先要下载Arcgis 10.2软件,很大大约有2个多G.下载后分别全部解压. 2,首先,安装相应的LicenseManager,双击Arcgis 10.2打开安装界面,选择安装. 3,开始安装L ...

  7. [总结]ACM模拟总结

    1.心态一定要稳,千万不要慌. 2.内部交流要多点,说不定就讨论出有用的性质了. 3.题目细节一定要想清楚. 4.一道题绝对不能让多个人来写. 5.英语要好好学.

  8. linux--->ab测试工具使用

    ab测试工具使用 ab简介 是apache自带的压力测试工具.其原理是ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的,因此,它既可以用来测试ap ...

  9. Python变量、方法、类的命名规则

    1. 变量命名总结: - 1.单下划线开头变量:protected - 2.双下划线开头变量:private - 3.双下划线开头,双下划线结尾:系统内置变量 2. 函数命名总结: - 1.私有方法: ...

  10. Stopping service [Tomcat] Disconnected from the target VM, address:XXXXXX解决方案

    原文出处:https://blog.csdn.net/u013294097/article/details/90677049 Stopping service [Tomcat] Disconnecte ...