原理:

    我们都知道,在"记忆"的角色上,人脑总是不如计算机,而人们对文字的印象又比数字高。因此,想要使用纯粹的TCP/IP来上网,实在不好记忆又很麻烦,为了适应人类的使用习惯,一个名为DNS的服务帮我们将主机名解析为IP好让大家只要记得主机名就能使用Internet,由于目前的IPv4已经接近分配完毕的阶段,因此128bits的IPv6会逐渐热门起来,如果背128位的IP上网想必是不可能的,可以想象它会越来越重要。

域名和服务概述

FQDN:Fully Qualified Domaim Name  完全限定的全球唯一的主机名    

    FQDN是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。

TLD:顶级域名

 一般顶级域名:gTLD

.com 公司、行号、企业

.org 不以盈利为目的的组织、机构

.edu 教育单位

.gov 政府单位

.net 网络通信

.mil 军事单位

国家顶级域名:ccTLD  

.iq伊拉克 

.tw台湾

.hk香港

.jp日本

.cn中国

DNS查询类型

客户机主机发送请求-->运营商    

                 -->存在,返回目标地址

   -->不存在--->(进行分布式DNS系统根节点,分布式运作向下迭代级别查询)-->根域-->顶级域-->二级域-->目标主机

     客户机:递归查询,只请求查询一次

     运营商:迭代查询,求爷爷告奶奶式请求   

DNS名称解析方式

正向解析:名称-->IP 域名转换为IP地址的操作

反向解析:IP-->名称 IP地址转换为域名的操作    

    ip地址为线索查询,最顶端位置名字:in-addr.arpa

          例:1.2.3.4 -->写成4.3.2.1.in-addr.arpa,网段3.2.1.in-addr.arpa(加上4就是地址)

    注意:二者的名称空间,非为同一个空间,即非为同一棵树,也不是同一个解析库。

DNS服务器类型

    负责解析至少一个域

         主名称服务器   (主胡同长)  

         辅助名称服务器 (副胡同长)

    不负责解析域的(只告诉你去×××)

         本地缓存名称服务器 ,运营商就是缓存服务器

DNS服务器解析流程

 首先查找本机HOSTS表,有就直接使用表中定义,无查找网络连接中设置的DNS 服务器由他来解析。

       Client --> hosts文件 --> DNS LocalCache (本地DNS缓存)--> DNS  Server (recursion,递归请求) -->

--->自己负责解析的域:直接查询数据库并返回答案;

--->不是自己负责解析域:Server Cache --> iteration(迭代方式查找分布式DNS系统根)

解析答案分类:

       1) 肯定答案:返回肯定答案

           否定答案:不存在查询的键,因此,不存在与其查询键对应的值;

       2)  权威答案:由直接负责的DNS服务器返回的答案;

           非权威答案:从缓存中读取的答案

DNS区域(zone)和域(domain)

区域是物理概念,域是逻辑概念

一个域由两个区域组成,magedu.com这个域,有正向解析区域和反向解析区域,但是域未必比区域大。(区域就是一个解析库zone)(域是一个概念模型domain)

FQDN --> IP 正向解析库区域

IP --> FQDN 反向解析库区域

区域数据库文件

资源记录:Resource Record, 简称rr;

记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:

 

语法:  name  [TTL]  IN   SOA  value

name:当前域的名字:例如"magedu.com.""2.3.4.in-addr.arpa"

value:由多部分组成

    (1)当前域的区域名称(也可以使用DNS服务器名称)

    (2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用点号代替

    (3)主从服务协调属性的定义以及否定答案的TTL

   (4)一个区域解析库只能有一个SOA,而且必须放在第一条

magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (				2017010801	; serial  序列号  				2H 			; refresh 刷新时间				10M 		; retry   重试时间				1W			; expire  终止时间				1D			; negative answer ttl 否定答案存活时间 )

NS:

用来记录域名解析服务器

name:当前区域的区域名称(回想区域概念,正向解析区域..说明它就是个域名解析服务器)

value:当前区域的某DNS服务器的名称,例如ns.magedu.com.一个区域可以有多个ns记录

语法:  name  [TTL]  IN   NS  value
magedu.com. 	86400 	IN 	NS  	ns1.magedu.com.    ns1和ns2就是用来解析magedu.com这个域的magedu.com. 	86400 	IN 	NS  	ns2.magedu.com.

A:

   就是地址的缩写,后面记录着的IP地址与前面的域名相对应;同一域名可有多个IP地址,同一IP地址可有多个域名。

   name:某FQDN,例如

   value:某IPv4地址 

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

AAAA:

   主机名与IPv6的对应关系

   name:FQDN

   value: IPv6

PTR:

   name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;

   value:FQND

4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com. 

CNAME:

   name:FQDN格式的别名;

   value:FQDN格式的正式名字;

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

MX:

   name: 当前区域的区域名称

   value:当前区域某邮件交换器的主机名;

   注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;

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

注意:

   (1) TTL可以从全局继承; 

   (2) @表示当前区域的名称;

   (3) 相邻的两条记录其name相同时,后面的可省略;

   (4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

BIND的安装配置

概念、与所需程序包

BIND:美国加州伯克利大学研制,后交给ISC组织运营    

bind是nds协议的一种实现

named:bind程序运行的进程名

程序包:

    bind-libs:被bind和bind-utils包中的程序共同用到的库文件

    bind-utils:bind客户端程序集,例如dig host nslookup

    bind:提供dns server程序,以及几个常用的测试程序

    bind-chroot:选装,为了安全起见,让named进程运行在沙箱模式下,测试建议不装

      概念:将某个目录指定为BIND程序的根目录,由于已经是根目录,所以BIND便不能离开该目录,CentOS6.X默认将BIND锁在/var/named/chroot

    rpm -ql bind 查看安装各个文件的路径

BIND的配置文件

搭建BIND有两个数据要处理:

        BIND本身的配置文件,主要规范主机的设置、zone file的所在、权限的设置等

        正反解数据库文件(zone file)记录主机名与IP对应关系

配置文件作用:

    BIND的配置文件为/etc/named.conf在这个文件里面可以规范zone file的完整文件名;也就是说zone file是由/etc/named.conf所指定的。所以zone file的文件名可以随意取。CentOS6.x默认目录:

主配置文件

rpm -ql bind 查看程序的配置文件、程序、库文件的路径/etc/named.conf 服务主配置文件    主配置文件组成:        /etc/named.iscdlv.key        /etc/named.rfc1912.zones  -->最重要        /etc/named.root.key

解析库文件

 

/var/named 区域解析库文件存放位置(即正反向解析库)

  一般名称为:zone_name.zone

注意:一台DNS服务器可同时为多个区域提供解析;

     必须要有根区域解析库文件:/var/named/named.ca

    应该有两个区域解析库文件:localhost和127.0.0.1的正反相解析

           分别是/var/named/named.localhost 正向解析库文件

                 /var/named/named.loopback  反向解析库文件

以上三个文件不是默认提供的,可手动自己添加进去

~]#cat /etc/sysconfig/named 是否启动chroot及额外的参数   ROOTDIR=/var/named/chroot/var/run/named 程序执行时默认放置pid-file在此目录内

注意:为了系统安全性考虑,一般发行商都已经自动的将BIND相关程序给chroot了,并记录在/etc/sysconfig/named里面

主配置文件格式:

     全局配置段:

         option{...}

     日志配置段

         logging{...}

     区域配置段

         zone{...}定义由本机解析或转发的区域

注意:每一个配置语句必须以分号结尾,否则即为语法错误

配置缓存名称服务器:

 

编辑配置文件/etc/named.conf

设置监听的端口和IP地址

   listen-on port 53;     CentOS-7默认不支持

listen-on port 53 {

172.18.164.2; }; 地址写要做为缓存服务器的IP地址

学习时建议关闭dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;

  //allow-query    {localhost} <--关闭仅允许本地查询 //可以注释

配置文件语法检查

   named-checkconf /etc/named.conf

启动服务

    systemctl restart named.service

查询哪个进程监听在TCP的53号端口

    netstat -tunlp   -->(named程序同时监听在UDP的53号端口)

通过测试工具测试没有问题,本地缓存NDS服务器就可以使用了

注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址

rndc默认监听在953端口

rndc原理      named控服务器制命令    名称解析服务器的远程名称解析工具,例如更新缓存、清除缓存。安装在tcp/953端口,但默认监听于127.0.0.1地址,因此仅允许本地使用bind程序安装完成后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接可启动服务    CentOS-6:system named start    CentOS-7:systemctl start named.servicerndc使用方法一:[root@localhost ~]# rndc status     [root@localhost ~]# systemctl start named  <--使用rndc命令之前必须启动服务[root@localhost ~]# rndc statusversion: 9.9.4-RedHat-9.9.4-29.el7 
 <--服务器的版本号CPUs found: 1      <--CPU一个有1颗worker threads: 1  <--工作线程有4个UDP listeners per interface: 1number of zones: 101debug level: 0xfers running: 0    <--有没有进行过xfersxfers deferred: 0soa queries in progress: 0 <--正在进行的SOA查询一个有多少个query logging is OFF   <--查询日志功能是关闭的recursive clients: 0/0/1000 <--递归查询客户端一共有多少个tcp clients: 0/100  <--TCP客户端一共有多少个最多有100个server is up and running <--说明服务器处于启动状态rndc使用方法二:[root@localhost ~]# rndc stop <--可以远程关闭named服务 等同于systemctl stop named.servicerndc使用方法三:[root@localhost ~]# rndc flush <--清空服务器缓存,适用于服务器内容变更,着急更新    类似于你注册域名,在后台修改信息后,两个小时之内才能生效,因为缓存是有时长的 [root@localhost ~]# rndc reload <-- 重新装载配置文件和区域数据库文件[root@localhost ~]# rndc reload zone <--重启某一个区域

DNS系统测试工具:

host

 

~]# host -a FQDN [server]

  -a:代表列出该主机所有的相关信息,包括IPTTL、与排错信息。

~]# host -l domain [server]

  -l:若后面接的domain 设置允许allow-transfer时,则列出该domain所管理的所有主机名对应数据

  server:如果想要利用非/etc/resolve.conf内的DNS主机来查询主机名与IP对应关系时,就可以利用这个参数,可不写

[object Object][object Object][object Object][object Object][object Object][object Object]

nslookup

~]nslookup [FQDN] [server]~]nslookup选项与参数:直接在nslookup后面加上 主机名或IP如果什么都不加则将进入nslookup的查询功能,可输入参数进行特殊查询    set type=any  :列出所有的信息,变更查询,不是仅有A,全部信息都列出来    set type=mx   :列出 mx 相关信息
举例说明:[root@localhost ~]# nslookup www.baidu.comServer:		172.18.0.1Address:	172.18.0.1#53  <--特别要注意DNS的IP是否正确 Non-authoritative answer:www.baidu.com	canonical name = www.a.shifen.com.Name:	www.a.shifen.comAddress: 61.135.169.121Name:	www.a.shifen.comAddress: 61.135.169.125  <--返回给你的IP地址[root@localhost ~]# nslookup>120.114.100.20  <--执行反解的查询...>www.baidu.com   <--执行正解的查询...>set type=any    <--变更查询,不仅有A,全部信息都列出来>www.baidu.com Server:		172.18.0.1 Address:	172.18.0.1#53 Non-authoritative answer: www.baidu.com	canonical name = www.a.shifen.com. Authoritative answers can be found from:  <--这是相关授权 DNS 说明baidu.com	nameserver = ns2.baidu.com. baidu.com	nameserver = ns4.baidu.com. baidu.com	nameserver = ns3.baidu.com. baidu.com	nameserver = dns.baidu.com. baidu.com	nameserver = ns7.baidu.com. dns.baidu.com	internet address = 202.108.22.220 ns2.baidu.com	internet address = 61.135.165.235 ns3.baidu.com	internet address = 220.181.37.10 ns4.baidu.com	internet address = 220.181.38.10 ns7.baidu.com	internet address = 119.75.219.82

dig

~]# dig [options] FQDN [@server]选项与参数:@server:如果不以/etc/resolv.conf 的设置来做为DNS查询,可以此填入其他的IPoptions:    +trace:就是从根开始追踪解析过程    +notrace:不从根开始追踪    +[no]recurse:进行递归解析    -t type:查询的数据主要有MX、NX、SOA等类型    -x:查询反解信息,非常重要    -t axfr 域名 [@server] 模拟完全区域传送,主从复制使用
[object Object][object Object][object Object][object Object]



配置解析一个正向区域:

 以magedu.com域为例

 

步骤一:定义区域

     在主配置文件中或主配置文件辅助配置文件中实现

       zone "ZONE_NAME" IN {

            type {master|slave|hint|forward};  <--分别代表主服务器、从服务器、根服务器、转发服务器

            file "ZONE_NAME.zone";  <--指明区域数据文件在什么地方;在/var/named目录下

};  

重要:在/etc/named.conf 中只定义了一个域hint;指向的named.ca在/var/named/named.ca;里面存储着13台根DNS服务器;如果想定义其他的域可以在配置文件下方的/etc/named1912.zones ,如果有说明遵循rfc1912规范。rfc:请求驻进文档。所以我们编辑/etc/named.rfc1912.zones

spacer.gif        

zone "magedu.com" IN {

      type master;                 <--这就新增了一个正向区域

      file "magedu.com.zone";      <--此文件在/var/named目录下

};                                

步骤二:建立正向区域数据文件

     在/var/named目录下建立区域数据文件

    /var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named

~]#vim /var/named/magedu.com.zone

$TTL 3600   <--宏定义缓存时间为1个小时

@    IN    SOA    ns1.magedu.com.    dnsadmin.magedu.com. (   <--@表示引用步骤一所定义的区域名称"magedu.com"建立区域数据文件第一条必须是SOA;格式规范详见目录SOA

2017010808 序列号

1H   刷新时间1个小时

10M  重试时间10分钟

3D   过期时间3天

1D   否定回答的TTL值1天 )   <--此时SOA就已经编辑完成了

    IN    NS    ns1.magedu.com.    <-- 第一位@不写表示同上;ns1.magedu.com.可以简写为ns1,它会自动补充步骤一所定义的magedu.com这个域,也可以在行首宏定义:$ORIGIN magedu.com.而后简写它会自动补充。

    IN    NS     ns2

    IN    MX  10 mx1  <--如果有邮件服务器可以定义;

ns1 IN    A    172.18.164.2  <--定义ns1解析库服务器的A记录

mx1 IN    A    172.18.164.3  <--定义邮件服务器A记录

www IN    A    172.18.164.4<--为公司在互联网上被访问的服务器提供解析,IP地址就是被访问服务器的地址

web IN    CNAME    WWW <-- web是www的别名

bbs IN    A    172.18.164.5

bbs IN    A    172.18.164.6  <--两个IP地址对应同一个名字,在被解析的时候,两个IP轮流被访问

步骤三:让服务器重载配置文件和区域数据文件

  • ~]#chown :named /var/named/magedu.com.zone <--修改区域数据文件的属组为named

  • ~]#chmod o= /var/named/magedu.com.zone <--将其他用户的读权限删除

~]#named-checkconf  <--步骤二做语法检测

~]#named-checkzone magedu.com /var/named/magedu.com.zone<--检查magedu.com.zone这个区域的语法,前面是区域名 后面是文件

~]#rndc status <--查看number of zones,此时没有reload所以应为101

~]#rndc reload <--重载整个区域的内容,此时number of zones为102;此处也可以通过重启named服务达到重载效果

~]#cat /etc/resolv.conf <-- 查看DNS指向是否已经改为本机

~]#dig -t A www.magedu.com  @172.18.164.2 <--通过刚刚新建的DNS服务器来解析刚刚创建的

~]#host -t A magedu.com <--测试查看magedu.com的A记录

~]#host -t MX magedu.com <--测试查看MX记录

注册域名后,在后台修改ns记录,指向你的这台缓存服务器的IP地址,就可以负责某区域解析了



配置解析一个反向区域

 

步骤一:定义区域

 在主配置文件中或主配置文件辅助配置文件中实现

zone "ZONE_NAME" IN {

     type {master|slave|hint|forward};  <--分别代表主服务器、从服务器、根服务器、转发服务器

     file "ZONE_NAME.zone";  <--指明区域数据文件在什么地方

};  

 注意:反向区域的名字,反写的网段地址 .in-addr.arpa 即:164.18.172.in-addr.arpa

步骤一:定义区域解析库文件      主要记录为PTRvim /etc/named.rfc1912.zones          <--编辑位置同正向解析库文件zone "164.18.172.in-addr.arpa" IN {           type  master;                    <--定义一个反向区域解析库文件      file "172.18.164.zone";};
 

步骤二:建立反向区域数据文件

重要:在/var/named创建一个区域数据库文件即步骤一的file" ",权限640、属主root属组named

区域名称为164.18.172.in-addr.arpa.   <--注意区域数据库文件和区域名称是相反的

vim 172.18.164.zone    

$TTL 3600    <--定义缓存时间为1个小时

$ORIGIN 164.18.172.in-addr.arpa.  <--在这里可以简写IP,而不能简写ns1.magedu.com

@        IN        SOA        ns1.magedu.com.     nsadmin.magedu.com. (   <--格式和正向区域数据文件一样

                    2017010801

                    1H  刷新时间1小时

                    10M 重试时间10分钟

                    3D  过期时间3天

                    12H 否定回答的TTL值12小时 )

         IN         NS        ns1.magedu.com.  <--此处ns1后面不可以省略

注意:反向区域数据文件中不需要标记MX记录,你的每一个A记录只需要有PTR记录就可以

2       IN         PTR    ns1.magedu.com. <--此处2后面会自动补充$ORIGIN定义的值

3       IN         PTR    mx1.magedu.com.

4       IN         PTR    

5       IN         PTR    bbs.magedu.com.

6       IN         PTR    bbs.magedu.com. <--此5行内容与正向区域库文件步骤二相呼应

步骤三:让服务器重载配置文件和区域数据文件~]#chgrp named 172.18.164.zone~}#chmod o= 172.18.164.zone~]#named-checkconf 为步骤二做语法检测~]#named-checkzone 164.18.172.in-addr.arpa  /var/named/172.18.164.zone <--前面的164.18.172.in-addr.arpa是区域名,要与步骤二$ORIGIN定义的宏定义保持一致~]#rndc reload ~]#rndc status <--发现number of zones 变为103~]#dig -x 172.18.172.2 <--测试反向解析示例


配置主从DNS服务器

从服务器有一个同主服务器一模一样的区域解析库

  注意:从服务器是区域级别的概念,如果一台服务器上有三个区域("正反解析区域")都是主的,当我们配置一台服务器做为从服务器时,它是针对服务器上的某个区域的从服务器,从服务器上只有某一个区域的副本。

    如果一台主机即配置了正向区域解析又配置了反向区域解析,想通过从服务器备份时,都需要在从服务器上做配置。

       也可以两台服务器,A服务器做正向区域的主、B服务器做反向区域的从;A左反向区域的从、B做正向区域的主,因为他们是区域级别的概念,所以非常灵活

        在公司当中我们让一台服务器正向反向都是主,一台服务器正向反向都是从,我们如何让他们都提供服务呢

配置一个正向解析的从区域

步骤一定义一个从区域    ~]#ssh root@172.18.164.3 <--连接CentOS-6服务器    ~]#yum install bind -y    ~]#vim /etc/named.conf后续配置和缓存服务器配置方式一样 <--目录查询缓存服务器配置vim /etc/named.rfc1912.zoneszone  "magedu.com"  IN {     type slave;   <--类型为从服务器      file "slaves/magedu.com.zone";     masters { 172.18.164.2; };  <--告诉它主服务器是谁}; ~]#named-checkconf <--检查主配置文件语法
步骤二返回172.18.164.2主服务器~]#vim /var/named/magedu.com.zone  <--编辑区域数据文件ns2    IN    A    172.18.164.3 <--添加一个A记录指向从服务器172.18.164.3~]#named-checkzone magedu.com /var/named/magedu.zone<--检查magedu.com.zone这个区域数据库文件的语法注意:如果从服务器启动了,在修改主服务器数据库文件后要将序列号版本号+1~]#rndc reload <--重载数据库文件~]#rndc status <--确认server is up and running
 

步骤三

返回172.18.164.3从服务器

~]#rndc reload

~]#systemctl status named.service  <--可以查看到从服务器在执行重载命令之后,所做的动作

V_I9D@1`MZJ@B$8F)U$IZQ6.png

~]#cd /var/named/slaves  <--可以发现magedu.com.zone区域数据库文件已经传递到从服务器的此目录中

~]#dig -t A @172.18.164.3  <--使用从服务器解析发现解析成功

 

步骤四

返回172.18.164.2主服务器,添加区域数据文件从而可以对从服务器进行测试

~]#vim /var/named/magedu.com.zone

序列号+1

pop3    IN    A    172.18.164.7

~]#rndc reload pop3.magedu.com  <--将来区域特别多的时候,就要学会重启某一个区域

~]#systemctl status named.service <--此时查看状态 ,此处缺一张图

spacer.gif

此时返回172.18.164.3从服务器

~]#systemctl status named.service <-- 来这里确认从服务器有没有接收到通知

spacer.gif

~]#dig -t A pop3.magedu.com @172.18.164.3 <--使用从服务器对pop3进行解析,如果解析成功说明更新成功;成功的标志在于pop3的IP是不是在与前面定义的一致

配置一个反向解析的从区域:

配置方式与正向从服务器配置方式一致,此处注释略简

步骤一:连接172.18.164.3从服务器vim /etc/named.rfc1912.zones <--编辑从服务器的主配置文件zone "164.18.172.in-addr.arpa" IN {      type  slave      <--说明是从服务器      file "slaves/172.18.164.zone";   <--指明区域数据文件在什么地方      masters { 172.18.164.2; };   <--告诉它主服务器的IP地址};~]#named-checkconf <--检查语法
 

步骤二:

连接172.18.164.2主服务器,编辑反向解析区域数据文件,为从服务器添加新条目

vim /var/named/172.18.164.zone

      序列号+1

      IN       NS        ns2.magedu.com.  <--ns记录必须得有

3      IN       PTR        ns2.magedu.com.  <--为ns2填加一个反解记录,不是必须的

~]#named-checkzone 164.18.172.in-addr.arpa  /var/named/172.18.164.zone  <--检查语法

~]#rndc reload

步骤三:连接172.18.164.3从服务器~]#rndc reload  <--重载区域数据文件~]#dig -x 172.18.164.2 @172.18.164.3 <--使用从服务器解析主服务器
 

步骤四:

在主服务器反向区域库文件中添加pop3对从服务器进行测试

vim /var/named/172.18.164.zone    <--编辑反向区域数据库文件

         序列号+1

7    IN    PTR    pop3.magedu.com.  <--添加pop3的反解记录

~]#rndc reload  

~]#systemctl status named.service   <--详细参数的含义,可以查看上题步骤四

~]#ssh root@172.18.164.3 <--返回从服务器172.18.164.3

~]#dig -x 172.18.164.7 @172.18.164.3 <--使用从服务器来反向解析pop3

   ---------------------至此反向解析的从区域已经制作成功----------------------------------

手动进行区域传送

  区域传送:

       全量传送:axfr,传送整个数据库,一般在第一次传送

       增量传送:lxfr,仅传送变化的数据

dig -t axfr magedu.com @172.18.164.2 <--手动去传送主服务器的正向区域库文件,如果不成功可能防火墙dig -t axfr 164.18.172.in-addr.arpa @172.18.164.2 <--手动去传送主服务器的反向区域库文件    这种传送方式是特别不安全的,通过这两条记录就可以查看出公司的拓扑结构,所以我们的主服务器只能给从服务器做传送,其他服务器想要传送都要拒绝。方法:制作访问控制!!!在尾部有相关说明

时间控制

重要:主从两台服务器时间要同步

        ntpdate命令:连接到互联网上的一个时间服务器

子域授权

 

二级域是我们的三级域就可以随意定义,联系公司各个部门,都应该有自己的服务器,因为公司上万人让一台DNS服务器去解析压力会很大,分成部门每个部门一台子域DNS解析服务器,就轻松很多,过程就是在父DNS服务器中定义区域解析条目

例: <--二级域

    <--三级域<--子域

正向解析区域授权子域的方法:    

步骤一:

连接172.18.164.2 父服务器

vim /var/named/magedu.com.zone <--编辑正向区域库文件,且只能编辑正向新加一个资源记录

      序列号+1

fin    IN    NS    ns1.fin   <--为子域名加一台ns服务器,这句话意思是fin.magedu.com 这台服务器对应着ns1.fin.magedu.com

ns1.fin IN   A    172.18.164.8 <--该A记录就是新加的子域服务器的IP地址

注意:如果子域服务器还有从服务器,这里也可以把从服务器定义进来

~]#rndc reload

 

步骤二:

新开辟一台服务器,做为一个子域服务器,它本身必须是服务器(此处关系较为复杂,多想想)

首先配置一个缓存DNS服务器

yum install bind -y  <--安装bind

vim /etc/named.conf

...{ 127.0.0.1; 172.18.164.8; }   <--此处写明允许listen一个外部的主机

...    <--此处和缓存服务器过程一样略...

~]#systemctl start  named.service

~]#ss tunlp   <--查看53号端口是不是被named进程所占用

vim /etc/named.rfc1912.zones    <--新增一个区域主配置文件

zone "fin.magedu.com" IN {

     type master;

     file "fin.magedu.com.zone";        <--此文件在/var/named/下

};

vim /var/named/fin.magedu.com.zone

$TTL 3600 $ORIGIN fin.magedu.com. @       IN      SOA     ns1.fin.magedu.com.     nsadmin.fin.magedu.com. (                2016011010                1H                10M                3D                1D )        IN      NS      ns1 ns1     IN      A       172.18.164.8 www     IN      A       172.18.164.8

     

<---至此子域服务器就定义好了

步骤三:连接到父域服务器172.18.164.2vim /var/named/fin.magedu.con.zone  <--在父域服务器上为子域添加正向解析数据库文件$TTL  3600$ORIGIN fin.magedu.com.@    IN    SOA    ns1.fin.magedu.com.    nsadmin.fin.magedu.com (           2018010801           1H             10M           1D           2H )      IN    NS     ns1ns1   IN    A      172.18.164.8    <--此处指向子域DNS服务器www   IN    A      172.18.164.8 ~]#chmod o= fin.magedu.com.zone    ~]#chgrp named fin.magedu.com.zone~]#named-checkzone fin.magedu.com /var/named/fin.magedu.com~]#rndc reload ~]#dig -t A www.fin.magedu.com @172.18.164.8 <--使用子域服务器测试解析~]#dig -t A www.fin.magedu.com @172.18.164.2 <--使用父域解析子域服务器

定义转发域:  

 

因为子域无法解析父域的服务器,因为子域只是负责父域中的某一块儿,所以他要通过根去解析,此时我们不想让他通过根去解析父域中的内容,因为本来就是自家的事儿;

区域转发:仅准发特定区域的解析请求

    zone "ZONE_NAME" IN {

         type forward;  <--转发  

        forward {first|only};  <--转发方式

        forwarders { SERVER_IP; } <--转发给谁

},

first:首先转发,转发器不响应时自行迭代查询

only:只转发,转发器不响应就一直等着

 

区域转发步骤一:

连接子域服务器:172.18.164.8

vim /etc/named.rfc1912.zones  <--编辑子域服务器的主配置文件

zone "magedu.com" IN {

    type forward;   <--类型为转发

    forward only;   <--只转发,转发器不响应就等着

    forwarders { 172.18.164.2; 172.18.164.3; }; <--即可以转发主域又可以转发从域

};

~]#named-checkconf

~]#rndc reload

~]#dig -t A @172.18.164.8 <--使用子域服务器解析父域

       3600   IN    A     172.18.164.2  <--子域成功解析父域

注意:此时只能解析父域服务器上的数据文件,并不去、也不能解析百度,因为父域服务器中没哟定义百度,如果想解析百度需要定义全局转发,只要子域中没有的就让父域去解析

全局转发步骤一:连接子域服务器172.18.164.8vim /etc/named.conf <--编辑子域服务器的主配置文件,的options选项forward only;forworders { 172.18.164.2; }; <--此两项添加到options中,含义只要子域服务器不负责,统统转发给父域服务器,计算机会先找zone中有没有定义区域转发,如果没有就找options

bind中的安全相关的配置:

    acl:访问控制列表;把一个或多个地址归并为一个命名集合,随后通过此名称即可对此集合内的所有主机实现统一调用。

    

 

示例:

递归就只应该对本地客户端递归,不能为互联网上的其他主机递归

acl mynet {

   172.16.0.0/16;

   127.0.0.0/8;

};

bind有四个内置的acl

   none:没有一个主机

   any:任意主机

   local:本机

   localnet:本机所在的IP所属的网络

访问控制指令一:

   allow-query {}; 允许查询的主机;白名单

   allow-transfer {}; 允许向哪些主机做区域传送,默认为向所有主机;但应该配置为仅允许从服务器;

dig -t A @172.18.164.2 <--此时默认任意一台主机执行此命令都会被164.2所解析,但是这样及其不安全我们应该如何做呢? 

步骤一

~]#vim /etc/named.rfc.1912.zone <--编辑父域主DNS服务器的辅助配置文件即172.18.164.2

allow-transfer { slaves; }; <--在正向解析配置文件zone "magedu.com" IN  中添加slaves访问控制列表;有从服务器就指向slaves没有就为none

~]#vim /etc/namd.conf <--编辑主配置文件

acl slaves {

    172.18.164.3;

    127.0.0.1;     <--注意如果父域主DNS服务器想要解析自己出了在这里定义还要在options中监听127.0.0.1

    172.18.164.4;     <--添加所有可以通过父域主DNS服务器解析地址 的子域服务器的IP或从服务器的IP

};

对于从DNS服务器172.18.164.3来说就要将/etc/named.rfc.1912.zones 中各个区域配置文件添加上allow-transfer { none; };   <-- 从服务器不需要为任何主机解析地址

访问控制指令二:

allow-recursion {};允许哪些主机向当前DNS服务器发起递归查询请求;默认为全部允许,定义在了/etc/named.conf中的options下的recursion yes <--表示谁都允许,如果只想给本地主机递归可以自己定义

步骤一:

vim /etc/named.conf

acl mynet {

    172.16.0.0/16;    <--这表明只给这个网络中的所有主机递归

    127.0.0.0/8;

};

将resursion yes 替换为 allow-recursion { mynet; };

-------至此即可实现只给这两个网络中的主机递归的效果了-------

访问控制指令三:

allow-update {}; DDNS,是否允许动态更新区域数据库文件中的内容

如果不是专门做DDNS,默认都是allow-update { none; };

vim /etc/named.rfc.1912.zone <--编辑从区域服务器

allow-update { none; };放置在区域配置文件下方

此时再使用:

dig -t axfr magedu.com @172.18.164.3  就无法将数据库传送过来了,服务器才能保证安全

智能DNS的实现

内网主机访问线上的web服务器,需要解析到外网,然后又回到内网,这样是没必要的。

    同一个主机名解析不同用户的请求,可以让他得到不同的地址。如果是来自于内网的我们就解析成172.18.164.2 ,如果是来自互联网的我们就解析成1.1.1.1

在天朝DNS服务器中,一般都有两个IP地址,一个是电信的一个是联通的;我们想要实现电信用户就自动解析为电信的IP地址,联通用户就解析成联通的IP地址,这样速度会很快

在配置文件中定义 view 视图

   格式:       view internal {         <--面向于内网访问           match-clients { 172.16.0.0/8; }; <--这个网络中的所有主机只能通过内网访问           zone "magedu.com" IN {                type master;                file "magedu.com/internal";    };};
 

view enternal {                  <--面向于外网的访问

         match-clients { any; }; <--这个网络中的所有主机只能通过外网访问

   zone "magedu.com" IN {

          type master;

          file magedu.com/external

   };

};

重启服务

也可以:定义一个acl把联通地址全写进去

       定义一个acl把电信地址全写进去

whois有什么用

对named做压力测试