首页 > 其他 > 详细

DNS

时间:2016-01-11 01:36:47      阅读:261      评论:0      收藏:0      [点我收藏+]

dnsdomain name service,协议:这种协议默认的端口是在53/udp53/tcp端口上通信。

我们一般访问互联网的网站一般输入的是域名,但大家想过没有,互联网通信主要靠的是ipip地址不容易记忆,之后就有了把ip转换成名称

早期互联网只有寥寥几台,到后来计算机发展渐渐多了起来,之后引用了一种机制,引用了名称解析,早期的名称解析,只是在计算机上有个文件数据库hosts里面存放这名称也称主机和ip的对应关系,在网页上输入名称计算机会遍历查找hosts文件看有没有对应的ip,每次更新都到互联网上的服务器上下载最新的hosts文件,最后每天出现几百台或几千台的情况,维护起hosts文件,就变的越来越困难了,文件也越来越大。

把这种情况层次化了,形成倒树形状显示,最上面的是根域,下面是的顶级域,在下面是二级域,三级域:

技术分享

 

全世界有十三个根服务器,有十几个顶级服务器 

顶级域

组织域:.com,.net,.org,.gov,edu,mil等等还有很多,

国家域:.iq, .tw, .hk, .jp, .cn等等...

这就是dns

dns查询:

迭代:

dns接到请求后他先查找本地数据库,如果没有的话就找根服务器,根据根服务器返回的信息如.com在找.com   根据.com返回的信息在找下去,找到找到并把信息返回给客户端,这个过程就是迭代

递归:

客户端向访问网站的话,先查找本地缓存,如果没有的话发送请求,这个过程就是递归

 

DNS名称解析方式:

名称 --> ip  :正向解析,上面显示是正向解析

ip-->  名称 :反向解析

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

DNS服务器类型:

负责解析至少一个域:

主名称服务器

辅助名称服务器

不负责域解析:

缓存名称服务器

一次完整的查询请求经过的流程

client  --> hosts文件  -->DNS本地缓存 -->发送DNS服务器递归请求 -->

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

不是自己负责解析域:先找服务器自己的缓存,没有的话迭代查找根服务器等等

从服务器返回的解析答案可能有两种:

第一种:肯定答案,有结果

第二种:不存在查询的内容,因此更不存在与其查询内容的对应值,

不存在的内容会缓存,有一定的缓存时间

服务器的返回答案有:

权威答案:由直接负责解析DNS服务器返回的答案

否定答案:从缓存中得到的答案

 

-DNS服务器

DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行

DNS服务器:从主DNS服务器那里或其他的从DNS服务器那里“复制”一份解析库;但只能进行读操作

“复制”操作的实施方式:

序列号:serial,也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增

刷新时间间隔:refresh,从服务器没多久到主服务器检查序列号更新状况

重试时间间隔:retry,从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔

过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务

否定答案的缓存时长:

主服务器“通知”从服务器随时更新数据;主服务器每更新数据时都会通知从服务器

 

从服务器同步主服务器区域传送,有两种:

全量传送:axfr,传送整个数据库

增量传送:ixfr,仅传送变量的数据

 

    区域(zone)和域(domain):

正向解析一般称为:正向区域

反向解析一般称为:反向区域

域是一种很笼统的概念,可以把整个DNS看成一个域,看到的只有服务器,每个域都有一个正向解析和反向解析

 

区域数据库文件:

资源记录:resource record,简称rr

记录有类型:AAAAAPTRSOACNAMEMX

 

SOA:start of authority:起始授权记录,一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;

NSname service ,域名服务记录;一个区域解析库可以有多个NS记录,其中一个为主的

Aaddress,地址记录,从FQDN --> IP ,仅支持ipv4地址

AAAA:从FQDN --> IP ,仅支持ipv6的地址

CNAME:canonical name,别名记录

PTR:pointer, IP -->FQDN

MX:mail exchanger,,邮件交换器

MX有优先级的概念:0-99,数字越小优先级越高

 

资源记录的定义格式:

语法:name[TTl]INRR_TYPEvalue

根据name 查询 value

SOA:

name:当前区域的名字:例如“magedu.com.,或“2.3.4.in-addr-apra.;

value:有多部分组成

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

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

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

例如:

magedu.com86400INSOAmagedu.com.admin.lgt.com.(

2017010801 ;serial

2H;refresh

10M;retry

1W;expire

1D;negativeanswerttl

)

注意:括号里分号代表注释

 

    NS:

name:当前区域的区域名称

value:当前区域的某DNS服务器的名字,例如ns.lgt.com;

注意:一个区域可以有多个NS记录

 

例如:

lgt.com.86400INNSns1.lgt.com.

lgt.com86400INNSns2.lgt.com.

MX:

name:当前区域的区域名称

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

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

例如:

lgt.com.INMX10mx2.lgt.com.

lgt.com.INMX20mx2.lgt.com.

A:

name:FQDN,例如www.lgt.com

value:IP地址

 

例如:

www.lgt.comINA1.1.1.1

www.lgt.comINA1.1.1.1

 

PTR:

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

value:FQND

例如:

4.3.2.1.in-addr.arpa.INPTRwww.lgt.com.

    CNAME:

    name:FQDN格式的别名

    value:FQDN格式的正式名字

例如:

web.lgt.com.INCNAMEwww.lgt.com.

 

BIND的安装配置

BIND: Berkeley Internet Name Domain,  ISC.org

dns: 协议

bind: dns协议的一种实现

namedbind程序的运行的进程名


程序包:

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

bind-utilsbind客户端程序集,例如dig, host, nslookup等;


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

bind-chroot:选装,让named运行于jail模式下;

bind

主配置文件:/etc/named.conf 

或包含进来其它文件;

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

解析库文件:

/var/named/目录下;

一般名字为:ZONE_NAME.zone


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

  (2) 必须要有根区域解析库文件: named.ca

  (3) 还应该有两个区域解析库文件:localhost127.0.0.1的正反向解析库;

正向:named.localhost

反向:named.loopback


rndcremote name domain contoller

953/tcp,但默认监听于127.0.0.1地址,因此仅允许本地使用;


bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;

CentOS 6: service  named  start

CentOS 7: systemctl  start  named.service


主配置文件格式:

全局配置段:

options { ... }

日志配置段:

logging { ... }

区域配置段:

zone { ... }

那些由本机负责解析的区域,或转发的区域;


注意:每个配置语句必须以分号结尾;


缓存名称服务器的配置:

监听能与外部主机通信的地址;

listen-on port 53;

listen-on port 53 { 172.16.100.67; };


学习时,建议关闭dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;


关闭仅允许本地查询:

//allow-query  { localhost; };


检查配置文件语法错误:

named-checkconf   [/etc/named.conf]


测试工具:

dig, host, nslookup


dig命令:

dig  [-t RR_TYPE]  name  [@SERVER]  [query options]


用于测试dns系统,因此其不会查询hosts文件;


查询选项:

+[no]trace:跟踪解析过程;

+[no]recurse:进行递归解析;


注意:反向解析测试

dig  -x  IP


模拟完全区域传送:

dig  -t  axfr  DOMAIN  [@server]


一、配置一个DNS正向解析:

 

1、首先先安装DNS的主程序包bind

配置好yum,可用yum -y install bind

2、配置主配置文件或辅配置文件:

/etc/named.conf主配置文件的最下面写有include /etc/named.rfs1921.zones如下图;

代表主配置文件包含/etc/named.rfs1921.zones文件,称为辅配置文件,我们通常不在主配置文件中填写配置,而是在辅配置文件中写:

 

技术分享

在配置文件中添加自己的ip172.16.143.9,后面测试用,记得把图片中最后一行加上//

技术分享

3、配置正向区域:

a) 下图中的第一行 除了引号中的内容其他的是标准的固定格式,引号中定义的是区域域名

b) 第二行:定义区域的类型有,DNSmaster)、从DNSslave)、根DNS服务器(hint)、转发DNSforward)。

c) 输入数据库文件名字,默认在/var/named/目录下查找

d) 每行结束必须以 ;结尾。

 

技术分享

4、定义数据库文件

a) cd /var/named 目录中创建一个以刚才指定的数据库名字为文件名,在进行编辑:

技术分享

上面;后面的都是注释,有两个NS1A记录,能实现负载均衡,这里的管理员邮箱不能写@,这里的@有特殊意义,把@替代成”.

5、好了之后检查配置文件及数据库:

a) named-checkconf :这个命令默认检查主配置文件 ;没有信息说明没有错误

b) named-checkzone 区域域名  文件名 :例如 named-checkzone lgt.com /var/named/lgt.com.zone  

技术分享

6、修改新增加的数据文件的权限:

a) chgrp named /var/named.lgt.com.zone :把数据文件属组更改成named

b) chmod o=  /var/named.lgt.com.zone  :把数据文件其他用户改成没有任何权限

c)  重载配置文件: rndc reload 或 systemctl reload named

7、测试是否能解析

a)  dig -t A www.lgt.com :测试正向解析,出现以下情况说明解析成功

技术分享

也可以测试地址记录dig  -t  NS  lgt.com  出现下面的情况说明成功

技术分享

二、配置DNS反向区域:

在配置文件中添加自己的ip172.16.143.9,后面测试用,记得把图片中最后一行加上//

 

技术分享

 

1、和上面一样都是配置/etc/named.rfs1921.zones,配置如下;

技术分享

注释:

第一行”“中内前三个ip要倒着写,ip后面是反向解析的固定格式

第二行和第三行和正向解析一样,请参考上面的写

2、反向解析的数据文件

技术分享

3、好了之后检查配置文件及数据库:

c) named-checkconf :这个命令默认检查主配置文件 ;没有信息说明没有错误

d) named-checkzone 区域域名  文件名 :例如 named-checkzone 143.16.172.in-addr.arpa /var/named/172.16.143.zone  

技术分享

 

7、修改新增加的数据文件的权限:

a) chgrp named /var/named.lgt.com.zone :把数据文件属组更改成named

b) chmod o=  /var/named.lgt.com.zone  :把数据文件其他用户改成没有任何权限

c) 重载配置文件: rndc reload 或 systemctl reload named

8、测试是否能解析

a)反向解析命令:dig -x 172.16.143.9

技术分享

 

三、配置从服务器

从服务器只是区域级别的概念,从服务器只是你指定的从服务,是一对一

一台服务器可以配置能一主一从,DNS服务器可以接受网络中请求,和本地请求

1、在另一台服务器上安装bind程序,开启服务

2、在配置文件中定义区域

/etc/named.conf如下图,花括号两边必须有空格,图片中最后一行注释掉

//代表注释;

技术分享

/etc/named.rfc1912.zones配置从服务器区域:

技术分享

上面:第一行”“中要写主DNS服务器域名

第二行类型写 从服务器

第三行指同步过来的数据放到那里

第四行:指定主DNS服务器

从服务器是同步主服务器数据文件到本服务器上的,因此它的目录必须具有写权限,只能放在/var/named/slaves

 

3、检查配置文件

named-checkconf

4、在主DNS数据文件中添加NS记录,NS转换A记录 指向从服务器ip,修该完后序列号加1

技术分享

5、在主DNS服务器上检查数据文件

named-checkzone lgt.com /var/named/lgt.com.zone

技术分享

6、先重读主DNS服务器配置文件,在重读从服务器配置文件,出现下图中的文件表示

成功

技术分享

7、修改权限

如果测试不成功的话,可以先把文件删掉,在让主服务器传送一份

四、配置反向从服务器

1、使用前面的正向从服务器,在其上面配置一个反向从服务器

2、配置反向区域配置文件:

技术分享

3、在主数据文件中添加NS记录,NSA记录IP指向从服务器ip:和上面一样,每次修改 序列号加1  修改权限

技术分享

 

4、测试主服务数据文件

技术分享

 

5、测试从服务器

named-checkconf

6、重载配置

先重载主服务器,在重载从服务器,如下图传送成功

 

技术分享

7、测试

dig -x  172.16.143.10

技术分享

注意:确保区域数据文件中为每个从服务配置NS记录,并将在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,其此A后面的地址为真正的从服务器的IP地址

手动测试从主DNS到从DNS区域传送是否成功:

dig  -t  axfr  lgt.com @172.16.143.9

dig  -t  axfr  143.16.172.in-addr.arpa  @172.16.143.9

注意:时间要同步:

ntpdate 时间服务器ip

例如:ntpdate 172.16.0.1 

五、子域授权

子域:子域是一个独立的区域,要想使用必须经过上级授权,比如顶级域,要想使用,必须经过根域的授权。

1、正向解析区域授权子域的配置:

a) 先在主域配置授权NS记录

在主域的数据文件中添加一条子域的NS记录和对应子域的ip地址

完后要在序列号后面加如下图:

技术分享

 

b)子域上先安装bind程序

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

技术分享

d)开启服务

2、定义一个区域

技术分享

3、/var/named/创建数据文件:opt.lgt.com.zone

技术分享

 

4、检查文件:named-checkzone opt.lgt.com /var/named/opt.lgt.com.zone

named-checkconf

5、重读配置文件,修改权限

rndc reload

chgrp namd /var/named/opt.lgt.com.zone

chmod o= /var/named/opt.lgt.com.zone

6、定义转发域:

a) 区域转发:仅转发对某种特定区域的解析请求

技术分享

 

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

only:只转发

b) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器

技术分享

 

检查配置文件,重读配置文件

c) 重读配置文件,测试

named-checkconf

rndc reload     

dig-tAwww.lgt.com

测试之前必须做到:防火墙关闭,服务器时间一样,把/etc/named.conf//allow-query     { localhost; };前用两//注释掉或删除

测试:

在子域测试是否能解析主域:

dig-tAwww.lgt.com 

在主域中测试是否能解析子域:

dig-tAwww.opt.lgt.com

注意:被转发的服务器必须能为当前服务器做递归

六、bind中的安全相关的配置;

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

示例:

aclmynet {

172.16.0.0/16

127.0.0.0/8 };

bind 有四个内置的acl

none:没有一个主机

any:所有主机

local:本机

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

访问控制指令:

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

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

allow-recursion {} :允许那些主机向当前DNS服务器发起递归查询请求

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

例子:在主DNS服务器设置acl禁止除从服务器之外的主机传送本机数据

1)先在/etc/named.conf里的写上:

acl  zhuji {

172.16.143.10; };

2)在副配置区域中调用它,可以写为全局配置;对全局生效

allow-transfer { zhuji; };

重载配置文件

3)测试:

dig-taxfr lgt.com

 

DNS

原文:http://kening.blog.51cto.com/10985929/1733582

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!