-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. 解决github clone慢的问题

    github clone非常慢,解决方法,首先要有vpn 参考 https://www.zhihu.com/question/27159393 第一种方法 这种是没有vpn的方法,测试从10k到 几十 ...

  2. 2018-2019-2 网络对抗技术 20165230 Exp9 :Web安全基础

    目录 实验目的 实验内容 Webgoat前期准备 出现的问题 (一)SQL注入攻击 命令注入:Command Injection 数字型注入:Numeric SQL Injection 日志欺骗:Lo ...

  3. 提取文件中的每一个mask,并将mask命名为文件名字

    import cv2 as cv import random import glob import os from PIL import Image import shutil def get_sam ...

  4. prometheus自定义监控指标——入门

    grafana结合prometheus提供了大量的模板,虽然这些模板几乎监控到了常见的监控指标,但是有些特殊的指标还是没能提供(也可能是我没找到指标名称).受zabbix的影响,自然而然想到了自定义监 ...

  5. POJ-最大连续子序列和

    给定一个整数序列,找到一个具有最大和的连续子序列(子序列最少包含一个元素),返回其最大和. 实例输入: -2, 1, -3, 4, -1, 2, 1, -5, 4 实例输出: 6(连续子序列4, -1 ...

  6. 阉割的List

    实在忍不住,模仿STL写了个阉割版的List,还没加迭代器,等搞完STL源码再说吧. #pragma once #include <stdexcept> namespace vlyf { ...

  7. - Git常用命令 基础 总结 MD

    目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...

  8. 阿里云RDS数据库sql server 导入数据并添加作业小结

    在阿里云购买ECS服务器和RDS数据库时,要注意网络类型要一致,最好都是VPC,否则ECS不能在内网访问RDS,只能从外网访问:在RDS控制台左侧,数据库安全性的IP白名单中添加ECS外网IP:在数据 ...

  9. Eclipse集成Git做团队开发:代码管理

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  10. GIt 错误与常用命令

    命令和一些其他的属性等 *)在使用git commit -m “description" 这个描述会加在上次提交后所有add的文件后面,所以也可能产生不符合这个描述的文件后面也跟了这个描述, ...