-DNS服务器的基本原理

域名简介:使用tcp/udp协议,默认使用53端口号

默认情况下,客户端发起的查询请求都是用UDP/53查询的。

默认情况下,从从服务器到主服务器传输数据用的是TCP/53。

tcp/953 :rndc监听到这个端口,远程域名服务控制器。

全球唯一的,所有的域名都是以“.”(根)开始的。

顶级域名:

(1) 国家顶级域名(cn—中国、uk—英国、us—美国等) (2) 国际顶级域名(.int)

(3) 通用顶级域名(.com—商业组织、.edu—教育机构、.org—非赢利性组织、.gov—政府部门、.biz—公司或企业)

二级域名:

(1) 类别域名(ac—科研机构、com—商业组织、edu—教育机构、gov—政府部门、net—网络服务机构、org—各     种非赢利组织) (2) 行政域名(bj—北京、sh—上海、nm—内蒙等)

组织内域名:

当一个组织拥有一个域的管理权后,它可以决定是够需要进一步划分层次。例如:CERNET网络中心将“.edu”               域划分为多个三级域,将三级域名分配给各个大学与教育机构。同时某大学也可以决定是否将自己得到的三级域划   分为多个四级域,将四级域分配给下属部门或主机。

在DNS服务器关系方面,只有上层DNS服务器知道下层服务器的位置,下层不知道上层位置。

查询过程:根域名服务器在全球的数量:逻辑上有13台,实际上有386台。

当客户端不知道DNS服务器位置,先查询计算机中的hosts文件,hosts文件中没有,查找本地DNS服务器的缓存(DNS服务器缓存由设置人员设置时间,最多为1天),缓存上没有,查找服务器数据文件,DNS服务器上的数据文件也没有,本地DNS服务器会直接请求根服务器,根服务器告诉你负责这个区域服务器的位置,然后,由请求的那个DNS服务器来查找,根服务器只告诉你该找那台服务器。直到查询到那个位置的DNS服务器,然后那个DNS服务器直接再交给管理查询客户端的那个DNS服务器!所以,配置DNS服务器要配置好根服务器的位置。

两种查询:

递归查询:本地请求,由我们所请求的DNS服务器(本地直接管理)直接返回的答案,叫权威答案。只需发送一次请求得到最终结果!!!

迭代查询:需要自己去发出n次查询才能得到结果的。

dns从数据存储来说是分布式的,从域名本身来说是树状结构。

dns工作在应用层,他是一个服务。

DNS服务器两种功能

正向解析:从FQDN(全称域名)====>IP

一个域名可以有多个IP

反向解析:从IP===>FQDN

一个IP可以有多个域名

注:DNS的高级功能,DNS轮循是指将相同的域名解析到不同的IP,随机使用其中某台主机的技术,该项技术可以智能的调整网站的访问量到不同服务器上,减轻网站服务器的压力,实现负载匀衡。

正反向解析是完全不同的两颗解析树,不必在同一个服务器上,正反向区域记录也没必要完全对应

在DNS服务器的缓存表中,每一个对应关系都称为一个 记录“record”。而记录本身所实现的功能不同,我们称为记录类型,

常用六种资源记录(RR):

1.A(addres)记录:正向解析的记录,将域名转换成IP地址的记录

A资源记录语法格式:完整主机名(FQDN)   IN   A   IP地址

2. 叫指针记录(PTR):反向解析的记录,将IP地址转换成域名的记录

这两类记录水火不相容,它们是不能放在同一个地方的。必须分开存放。

PTR资源记录语法格式: IP地址      IN      PTR      主机名(FQDN)

3. SOA(起始授权机构):该记录表明DNS名称服务器是DNS域中的数据表的信息来源,该服务器是主机名字的管理者,创建新区域时,该资源记录自动创建,且是DNS数据库文件中的第一条记录。一个区域解析库有且仅有一个SOA记录,且必须为解析库的第一条记录

SOA资源记录语法格式:

区域名(当前)  记录类型SOA   主域名服务器(FQDN)  管理员邮件地址  (序列号 刷新间隔 重试间隔 过期间隔 TTL)

SOA资源记录字段: 主域名服务器 :区域的主DNS服务器的FQDN

管理员:管理区域的负责人的电子邮件。在该电子邮件名称中使用英文句号“.”代替at符号“@”。

4. NS记录:是用来做授权的,向下授权。用于标识某一个区域内最高长官是谁,长官是谁。

在一个区域内只能有一个soa(最高长官),而ns可以有多个。

NS资源记录语法格式:   区域名  IN  NS  完整域名(FQDN)

5.MX记录(邮件交换器):它规定了域名的邮件服务器要么处理,要么向前转发有关该域名的邮件.处理邮件是指将其传送给其地址所关联的个人,向前转发邮件是指通过SMTP协议将其传送给其最终目的地.为了防止邮递路由,MX记录除了邮件交换器的域名外还有一个特殊参数:优先级值.优先级值是个从0 到99的无符号整数,它给出邮件交换器的优先级别.,一般只出现在正向解析记录里面的。(数值越小,优先级越大)

MX记录记录了发送电子邮件时域名对应的服务器地址。电子邮件发送使用的是SMTP应用层协议。

例如要发送邮件到abc@qq.com的时候,其中的域名部分为qq.com,MX记录描述了发送电子邮件时应该发往那个服务器。

可以使用dig命令查询MX记录:dig qq.com mx

MX资源记录语法格式:

区域名      IN      MX      优先级(数字)      邮件服务器名称(FQDN)

6.CNME:别名记录,也被称为规范名字:这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“r0WSPFSx58.”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称

CNAME资源记录语法格式:  别名   IN   CNAME   主机名

区域与域:

域(domain):逻辑概念: 是一个专业术语 它是用来划分和管理一组客户端的.

区域(zone):物理概念。

子域授权:子域授权:其实就是将一个比较大的域再分割成小区域,每个小区域可以交由一组或多组服务器管理,这些服务器只解析其管辖范围内的域名,超出其范围的解析请求一般会转发给父域或直接转发给根域。

正向区域的子域授权:使用胶水记录(glue record),也就是在父域中添加一条NS记录和一条A记录即可。

DNS服务器类型

主DNS服务器(primary name server):它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。

辅助DNS服务器(secondary name server):它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为"区文件复制"。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。

高速缓存服务器(caching-only server):可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。

转发服务器:是指当本DNs服务器无法对DNs客户端的解析请求进行本地解析时,可以允许本地DNs服务器转发DNS客户端发送的查询请求到其他的DNs服务器。此时本地DNs服务器又称为转发服务(不缓存数据)。

配置基本DNS服务器

一台域名服务器可以解析多个域名。.

在Linux中用来提供DNS服务的软件包叫"bind"-------名称服务器进程,安装后的这个进程叫'"named",这个进程提供的协议叫"DNS"。

安装DNS需要的软件包-----------前两个是默认安装上的,使用yum安装。

bind-utils------客户端工具

bind-libs-------通用库

bind------主软件包

bind----chroot---伪根目录。

caching-nameserver-----提供主配置文件(named.conf)的模板

DNS文件

/etc/named.conf  --->bind进程的工作属性,以及区域定义。

/etc/rndc.key     --->远程域名服务控制器,(秘钥文件)

配置信息:/etc/rndc.conf

/var/named/   --->区域数据文件

/etc/rc.d/init.d/named    --->脚本文件, 控制服务启动关闭:

start :启动服务

stop :关闭服务

restart :重启服务

reload :重新读取配置文件和数据文件,不用停止服务

configtest :测试配置文件是否有语法错误。

/var/named/  :

named.ca : 存放的是13台根域名服务器

named.localhost : 专门将localhost解析为127.0.0.1

named.loopback : 专门将127.0.01解析为localhost

type字段指定区域的类型,对于区域的管理至关重要,一共分为六种:

Master:主DNS服务器:拥有区域数据文件,并对此区域提供管理数据

Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器。

Slave:辅助DNS服务器:拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据。

Stub:stub区域和slave类似,但其只复制主DNS服务器上的NS记录而不像辅助DNS服务器会复制所有区域数据。

Forward:一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或者forwarders是空表,那么这个域就不会有转发,消除了options语句中有关转发的配置。

Delegation-only:用于强制区域的delegation .ly状态。

(1.)配置主程序文件------named.conf

/etc/resolv.conf   --->配置自己DNS服务器的指向,自己配置后,指向自己的IP地址!!!

bind的主配置文件/etc/named.comf t他的属主为root。属组为named

options {

listen-on port 53 { 127.0.0.1; };   --->监听在那一个端口(0.0.0.0 :53 监听所有IP地址的53端口),

listen-on-v6 port 53 { ::1; };    --->监不监听ipv6的端口,那个端口

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;    --->

dnssec-lookaside auto;    --->

/* Path to ISC DLV key */     --->

bindkeys-file "/etc/named.iscdlv.key";    --->

managed-keys-directory "/var/named/dynamic";    --->

};

手动编辑完配置文件一定要改组:chown :named   /etc/named,conf

该权限:chmod  644  文件名

(2.)创建根域名服务器

使用命令:dig  -t  NS(名称类型)  . (根域名服务器)

然后把查询的结果导入到文件中并改名:dig  -t  NS  .  >......(文件路径)

改组...chown  :named   文件名

(3.)正向解析文件(A记录)

先是宏定义

$TTL  600  (定义生命周期)

$ORIGIN. (定义当前区域的名称,注意要有.)

语法格式:name(()完整域名)     TTL(已定义,省略)  IN   资源记录类型    对应数值(IP地址)

(4.)反向解析文件(PTR记录)

语法格式:数值(IP地址) TTL  IN  资源记录类型    完整域名

(5.)NS记录文件

语法格式: 域名    TTL  IN  NS   这个域中DNS服务器的名称(可以有多个)

DNS服务器名称   TTL  IN  A  IP地址

例: ss.com.  600  IN   NS   ns1.ss.com.

ns1.ss.com.  600  IN   A   1.1.1.1

ss.com.  600  IN  NS   ns2.ss.com.

ns2.ss.com.  600  IN   A   1.1.1.2

(6.)MX记录文件:一般只出现在正向解析文件中

语法格式:域名  TTL  IN  MX   优先级(0-99) 主机名

主机名 TTL  IN  A    IP地址

(7.)SOA记录文件

语法格式:域名  TTL  IN  SOA   主DNS服务器  管理员的邮箱地址

20160116----序列号/版本号(主服务器发生改变时,从服务器检查序列号更新数据,一般只有10位)

20M---刷新时间(从服务器多长时间到主服务器上检查一次数据是否更新)

时间表示:M--分钟  D--天 W--周  H--小时

解析域名:  dig  -t  NS  .....    解析IP:dig  -x  IP地址

显示查询次序:dig  +trace  -t  A 域名

显示解析过程:dig  +trace  -t  A  完整域名   @ 交给谁去解析

区域传送: dig  -t   axfr(完全区域传送)   域名   --->得到对方区域内的所有数据缓存

IXFR(增量区域传送)   序列号  --->得到变化后的数据文件,查看产生了几条纪录。

验证语法错误命令:service  namad  configtest

named-checkconf

配置主从DNS服务器

1.修改主服务器配置文件

options {

directory       "/var/named";

allow-recursion  {  192.168.1.1;  }; --->用于定义递归对象,我只给这个地址的主机递归,可以是网段!(前提自己要查询没有缓存)

};

注意!区域传送可以查到你自己服务器的DNS服务器缓存,并且能判断出dns服务器的解耦,所以,不能让别人都能够传送区域文件。

只能允许自己的从服务器传送数据文件,别人不可以!

可以定义全局,对每个区域都生效

options {

directory       "/var/named";

allow-transfer  { 172.168.1.12; };  --->用于定义允许谁发起递归传送数据请求

allow-recursion { 192.168.0.0; };

};

也可以只定义某个区域(根区域不需要规定!)

zone "sun.com"  IN  { type master;

file "named.sun";

allow-transfer  { 172.168.1.12; }; -->用于定义允许谁发起递归传送数据请求

};

zone "1.168.192.in-addr.arpa"   IN     {  type master;

file "named.1";

allow-transfer  { 172.168.1.12; };     -->用于定义允许谁发起递归传送数据请求

};

本地区域不需要传送,所以禁止传送数据(根区域不需要规定!)

zone "localhost" IN {       type master;

file "named.localhost";

allow-transfer  { none; };         -->本地区域文件不需要传送,所以禁止!

};

2.修改从服务器配置文件

从主dns服务器上复制文件:scp   目标IP地址 : 文件路径     要放到那个地方

1.1 安装bind服务

1.2  /var/named/slaves/  : 同步主dns服务器的文件放在这里

1.3 编辑从服务器主配置文件

zone  "sun.com"  IN  { type slave;    --->类型改为从服务器

masters { 192.168.1.1; };   ---> 指向主服务器是哪一个

file "slaves/named.sun"; --->文件路径改为slave目录下的

allow-transfer  { none; };   --->不需要别人从我这里请求区域文件传送

};

注意!这里可以正反向都为从服务器,可以正向为主,反向为从,也可以反向为主,正向为从。

DNS视图

智能DNS:能够根据客户端来源所属的网络,进行判断,并且返回给一个我们事先定义好的IP地址。

视图(View):形成脑裂,不同网段IP解析不同的服务器地址!

注意:一旦定义了视图,那么所有区域都必须定义在视图中

根区域只需要定义在需要递归的视图中就可以了

主配置文件格式:

options {

directory       "/var/named";

};

view dianxin  {

match-clients  {192.168.1.2;};    :只要是这个网址的客户端来解析,解析的配置文件是sun1.com

zone  "sun.com"  IN {  type master;

file "sun1.com";

};

};

view    wangtong  {

match-clients  {any;};   :只要不是上面定义的IP地址 ,都给他下面定义的配置文件sun2.com

zone "sun.com"   IN    {

type master;

file "sun2.com";

};

};

若是想再重新定义一个新的域名,只需要在每个view中再添加记录就可以了。别忘了创建解析文件!

网上免费的智能DNS:www.dns.la   DNSPod

CentOS6.7搭建部署DNS服务 (详解主配置文件)的更多相关文章

  1. CentOS6.7搭建部署FTP服务 (详解主配置文件)

    FTP传输 三种解析: username -->UID  :/etc/passwd    将用户名转换成UID的库. hostname--->        IP   :DNS服务,/et ...

  2. CentOS6.7搭建部署DHCP服务 (详解主配置文件)

    DHCP服务 dhcp:动态主机配置协议.从bootp演变而来,引进了租约.续租功能,成为了现在的DHCP. 需要就分配,不需要就回收. 工作过程: 1.当获得地址是,有租约期限,当你关机时,IP地址 ...

  3. 使用BIND搭建内部DNS服务

    ​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌ ...

  4. DNS服务详解

    DNS服务 目录: 一.DNS原理 二.DNS服务的安装与配置 三.DNS信息收集 一.DNS原理 1.hosts文件与DNS服务器 1.1hosts文件 目录:C:\WINDOWS\system32 ...

  5. DNS解析原理与Bind部署DNS服务

    DNS是什么? DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址.反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提 ...

  6. 部署DNS服务

    DNS,全称Domain Name System,即域名解析系统. DNS帮助用户在互联网上寻找路径.在互联网上的每一个计算机都拥有一个唯一的地址,称作"IP地址"(即互联网协议地 ...

  7. Centos 搭建named dns服务无法解析外网地址

    搭建了DNS服务器来解析自定义的域名,但是在遇到非自定义的域名时,不会去自动解析.使用nslookup 会提示 ** server can't find xxxx: NXDOMAIN 网上找了说要配置 ...

  8. Linux环境下部署svn服务详解

    说明 环境: 操作系统:centos 8.0 IP:39.100.228.13 安装 用ROOT账号登录,在控制台执行以下命令,一直默认安装就好可以了. [root@localhost ~]#yum ...

  9. CentOS6.7安装部署Nginx(详解主配置文件)

    keepalived + nginx   :实现高可用 nginx: web服务器 反向代理,也支持缓存(缓存在磁盘上) 支持FastCGI tengine:淘宝官方在nginx原有的代码的基础上对n ...

随机推荐

  1. elasticsearch 基于 rollover 管理按时间递增的索引 合并 删除

    https://www.elastic.co/cn/blog/managing-time-based-indices-efficiently Anybody who uses Elasticsearc ...

  2. 【Activiti学习之八】Spring整合Activiti

    环境 JDK 1.8 MySQL 5.6 Tomcat 8 idea activiti 5.22 activiti-explorer是官方提供的一个演示项目,可以使用页面管理Activiti流程.ac ...

  3. Docker底层基石namespace与cgroup

    Docker底层基石namespace与cgroup   容器本质上是把系统中为同一个业务目标服务的相关进程合成一组,放在一个叫做namespace的空间中,同一个namespace中的进程能够互相通 ...

  4. jvm jdk jre 关系

    JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...

  5. Python【每日一问】26

    问: [基础题]:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数 [提高题]:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第 10 次落地时,共经过多 ...

  6. 连上Microbit板

    我们是在自己电脑上,用Mu编程,最终程序要烧录到Microbi板子的控制芯片中去,还记得这款芯片是哪家公司生产的?是多少位的?呵呵. 因此,我们要把板子和电脑连起来,用常见的一大一小的USB线就可以了 ...

  7. IDEA中Tomcat部署时war和war exploded区别

    原理说明 war模式:将WEB工程以包的形式上传到服务器 :war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器: 含义解释 war模式这种可以称之为是发布模式,看名字也知道, ...

  8. Windows docker k8s asp.net core

    在上一篇文章 Ubuntu 18 Kubernetes的Install and Deploy 我们在ubuntu在部署了k8s集群, 今天来看看windows下怎么搞. 主要点有: 1) window ...

  9. xcode红色文件夹或文件解决方法

    文件夹或文件变红是找不到文件导致,解决方法如下: 选中红色的文件或者文件夹,在最右边出现菜单里面有个Location,下一行有个文件夹按钮,点击选择正确的文件路径或者文件就可以了.

  10. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...