DNS正反解析、主从复制、子域授权、安全相关配置

原理:

我们都知道,在"记忆"的角色上,人脑总是不如计算机,而人们对文字的印象又比数字高。因此,想要使用纯粹的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,例如www.magedu.com.

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使用方法一:[[email protected] ~]# rndc status     [[email protected] ~]# systemctl start named  <--使用rndc命令之前必须启动服务[[email protected] ~]# rndc statusversion: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>  <--服务器的版本号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使用方法二:[[email protected] ~]# rndc stop <--可以远程关闭named服务 等同于systemctl stop named.servicerndc使用方法三:[[email protected] ~]# rndc flush <--清空服务器缓存,适用于服务器内容变更,着急更新    类似于你注册域名,在后台修改信息后,两个小时之内才能生效,因为缓存是有时长的	[[email protected] ~]# rndc reload <-- 重新装载配置文件和区域数据库文件[[email protected] ~]# rndc reload zone <--重启某一个区域

DNS系统测试工具:

host


~]# host -a FQDN [server]

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


~]# 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 相关信息
举例说明:[[email protected] ~]# 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地址[[email protected] ~]# nslookup>120.114.100.20  <--执行反解的查询...>www.baidu.com   <--执行正解的查询...>set type=any    <--变更查询,不仅有A,全部信息都列出来>www.baidu.com Server:		172.18.0.1Address:	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.220ns2.baidu.com	internet address = 61.135.165.235ns3.baidu.com	internet address = 220.181.37.10ns4.baidu.com	internet address = 220.181.38.10ns7.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

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服务器来解析刚刚创建的www.magedu.com

~]#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    www.magedu.com.

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 [email protected] <--连接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  <--可以查看到从服务器在执行重载命令之后,所做的动作

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

~]#dig -t A www.magedu.com @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 <--此时查看状态 ,此处缺一张图

此时返回172.18.164.3从服务器

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

~]#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 [email protected] <--返回从服务器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服务器中定义区域解析条目

例:www.magedu.com <--二级域

www.fin.magedu.com <--三级域<--子域

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

步骤一:

连接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 [email protected]    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 www.magedu.com @172.18.164.8 <--使用子域服务器解析父域

    www.magedu.com    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 www.magedu.com @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做压力测试

    时间: 2024-10-12 16:46:42

    DNS正反解析、主从复制、子域授权、安全相关配置的相关文章

    基于BIND实现的DNS正反解析及主从DNS的配置

    测试环境 准备2台虚拟机,一台为主DNS,IP地址为:192.168.103.161.另一台为从DNS,IP地址为:192.168.103.162两台都装好bind,所需包有:bind,bind-utils,bind-libs 主DNS的配置文件 配置主文件/etc/named.conf,如下所示 // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // se

    DNS(三)--子域授权和视图

    实验题目: 1.子域授权(委派) 2.视图 实验环境: 1.vmware虚拟机 2.linux子机两台 3.XP测试机 实验过程: 一.子域授权 在现实生活中我们世界互联网中的每个主机并不是在同一个域内,而是通过不同的依据将将其划分到不同的"小域"中,犹如一个倒立的树状结构,由一点出发,一层层的向下分成了多个分支,而这些分支就是其上级域的子域,其上级域就是相对的父域,子域是从父域中划出来的一个域,子域中的主DNS服务器负责这个子域中的地址解析,从而减轻了父域中DNS服务器的压力,这不仅

    DNS高级应用:子域授权、转发和view的实现方法

    DNS高级应用:子域授权.转发和view的实现方法 在上面的功能实现之前我们先来复习一下DNS 一些配置的基本格式: ACL: acl string { address_match_element; address_match_element; ... }; ZONE : #主服务器 zone string optional_class {         type  master ;         file quoted_string;         ...         }; #从服务

    DNS的主从、子域授权和转发服务器

    DNS的主从.子域授权和转发服务器 主从DNS 注意: 1.全局配置options{} 里面的内容,其中 listen-on port 53 {any or local:}:或者直接注释掉,或删掉 allow-query {any or local:}: dnssec-enable no: dnssec-validation no: 2.防火墙和selinux关闭 3.主从同步分别采用push和pull. push就是master主动告知,采用的是区域传送 全量传送:axfr,传输整个数据库 增

    dns视图功能和子域授权

    dns视图 DNS视图:通过视图功能可以实现内网.外网解析出不同的ip地址.即解析同一个域名时,对于不同网段的客户机查询出不同的ip地址.警告:在使用DNS视图功能的 DNS服务器上要在/etc/named.conf中删除或注释掉根域的配置信息,注释掉named.rfc1912.zones和root.key这些代码.否则会出错.DNS视图代码:/etc/named.confacl dianxin { 定义访问控制列表名称为dianxin电信 192.168.10.0/24; 指定网络地址和子网掩

    DNS的工作原理、正反解析及子域委派

    domain name server ----- 域名解析服务 DNS的工作原理:   正向解析 通过域名解析ip   反向解析 通过ip解析域名 BIND: Dns服务,程序包名bind,程序名named. 程序包,bind,bind-libs,bind-utils Bind-chroot:/var/named/chroot 服务脚本:/etc/init.d/named/start restart reload 主配置文件:/etc/named.conf,/etc/named.rcf1912.

    DNS服务器介绍(一)——创建DNS正反解析区域

    背景介绍 DNS服务作为互联网上一个基础服务承担着将用户请求的名称转换成对应的IP或将IP转换为名称的功能.DNS实际上是将互联网上所有主机的FQDN以"."分割成若干个区域,每一个区域都有特定的主机来进行管理.以正向解析为例:当用户发起对www.contoso.com名称的解析请求时,本地DNS服务器会先查询缓存内是否有该名称的IP,如果没有此时就分为两种情况: 当客户端向本地的DNS服务器发起请求时(1),如果本地DNS服务器不允许递归查询,他会立即向客户端反馈找不到该名称对应的I

    DNS正反解析及主从同步的实现

    主DNS服务器:172.16.249.138 辅(slave)服务器:172.16.249.177 ~]# cat /etc/redhat-release CentOS release 6.6 (Final) ~]# uname -r 2.6.32-504.el6.x86_64 用户一次完整的DNS查询请求: Client客户端发起查询请求 --> /etc/hosts会首先查询自己的本地hosts文件是否有DNS定义,如果有返回结果,否则继续请求查询 --> DNS Service通过DNS

    Linux学习笔记之 &nbsp; DNS原理介绍、DNS搭建、主从复制、子域授权和视图

    相关理论介绍: 什么是DNS? DNS( Domain Name System)是"域名系统"的英文缩写,是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网.DNS 使用TCP和UDP端口53.当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符. DNS域名空间: 整个DNS架构是一颗倒置的树状层次结构,这个树状结构称为DNS域名空间(DNS domain namespace).自顶而下依次是根域,顶级域,二级域,