DNS and BIND

DNS服务器,为了获取目标IP地址,从而达到目标区域的服务器;DNS服务器可以手动指定IP地址从而将IP地址转化为域名进行访问,也可以通过域名转化为IP地址进行访问;就像我们平常使用的www.baidu.com,就是可以通过域名解析成IP地址进行访问的;那么这类域名是如何找到这个域名所表示的主机呢;我们通过访问域名或IP地址得出对应的IP地址或域名来进行访问,那这些海量的数据都是保存在哪,若都是保存在一个服务器中,这些海量的数据,要通过一个服务器去查找那效率是非常底下且不实用的;所以加州大学的伯克利分校就提出了名称域这一概念;设置一个根域,由根域去管理下属的第一级顶级域,如com,org,edu,gov,mil,net等组织域;cn,tw,hk,jp,iq等地理域;以及反向域in-addr.arpa;这个反向域其实就是原本的根,但为了突出根的独一无二,而把他单独划为一个顶级域,由这些顶级域去管理下属的第二级域空间,第二级域空间去管理第三极域空间,依次往下;

当客户端想要去访问一个域名,首先就要去查看他所在域空间的服务器中是否有该域名,若没有,则查看该服务器中的缓存信息;若还是没有,服务器需要向客户端递归传回无法提供的信息;不管结果如何都要向客户端给一个“交代”;当当前域的服务器无法满足客户端要求时,服务器会直接把客户端的要求发向根域,由根域进行查找,根域会通过域名尾部的顶级域判断该域名的顶级域是什么,再传给该顶级域;如百度的顶级域为com,则传给第一级顶级域com,com再去查找下属的域名,查找到baidu这个域名后,再去查找baidu这个域名下的www主机,当找到后,将信息回馈给客户端;这种返回给根域的查询方式叫做迭代;客户端发出请求后能够收到的只有两种结果,一种是肯定的结果,能够按客户端的请求给出正确的名称解析;第二种是否定答案,无法根据客户端的请求作出回应;

DNS服务器分类有两种,一种是至少负责一个域的数据库,当遇到请求时可以先查找自身域是否满足要求,若无,则将请求转向根域;第二种是不负责任何域数据库的,如联通,移动等,当遇到请求时直接将其转向根域;

DNS服务器中的数据,是网络连接的根本;当DNS服务器因为一些突然地事故而中断时,对于一些在生产环境下的网络服务用户而言是一个很麻烦的问题;而针对于这类问题,DNS服务器便发展为现在的主从通信机制;DNS主服务器对于区域数据有读写功能,当主服务器中的数据进行改变后,就会将数据更新到从服务器上,而从服务器只能就行读操作,没有改写数据的权限;若主服务器长时间没有进行更新,从服务器会根据之前在主服务器设定好的刷新时间,进行主动更新;若从服务器请求刷新失败的话,则根据重试时间重新请求刷新;若从DNS一直无法联系上主服务器,那么久根据设定好的过期时间,当达到期限时停止从DNS服务器的工作;这对于这三个时间,需要注意的是主DNS服务器和从DNS服务器两者之间的时间必须要同步,若不同步则会造成信息混乱;

刷新时间间隔:refresh,从DNS服务器每隔多长时间到主DNS服务器上检查序列号的变化情况;

重试时间间隔:retry,从服务器向主DNS服务器要求同步数据库失败之后,再次发起尝试请求的时间间隔;

过期时间:expire,从DNS服务器始终联系不上主DNS服务器时,从DNS服务器多长时间之后停止服务;

否定答案的缓存时常:minimal TTL

DNS主从服务器是如何保证主DNS服务器与从DNS服务器中的区域数据是一致的,需要判断什么时候更新数据,什么时候不更新数据;当主DNS服务器出现修改后其序号会递增;从服务器根据判断其序号是否递增来判断主服务器是否修改,若递增,则更新从服务器,若不递增则保持原样;数据区域的传送对于双方而言,主服务器可以主动要求更新,而从服务器在满足刷新时间后也可以主动要求主服务器进行更新操作;数据区域的传送方式有两种:

增量传送:IXFR;只传送上次未更新的数据;

全量传送:AXFR;传送所有数据区域;

区域是DNS服务器用于进行正常的权威解析活动的必要的基础;称存放于区域数据库文件中的那些用于解析工作的数据为资源记录,简称RR;

资源记录类型有七种:

SOA:起始授权记录,在任何一个区域数据文件当中都要有一条SOA资源记录,用于设定FQDN,邮件交换器,以及从DNS服务器的刷新时间,重试时间,过期时间和否定答案的缓存时间;

NS:声明当前域中所有DNS服务器;

MX:邮件交换服务器,由邮件域名映射到完全合格域名;Domain-->FQDN

A:设置完全合格域名映射到IP地址,可以映射NS,MX等服务器的IP地址,并使用dig调用测试;针对于IPv4;

AAAA:设置完全合格域名映射到IP地址,针对于IPv6;

CNAME:设置别名,可以设置服务器或域名的别名,通过别名进行调用测试;

PTR:标识从完全合格域名到IP地址的转化,常用于反向区域的配置和解析;

区域数据库中资源记录的定义格式:

语法:name|FQDN [TTL] IN RR_TYPE VALUE

需要在对应的配置文件中书写资源记录,才能配备出一个DNS服务器;由我们手动为DNS服务器添加域名,FQDN,以及域名所对应的IP地址,域名所对应的别名等;

区域数据资源记录的开头,可以是去除主机名的域名,也可以是FQDN,至于TTL可写可不写,用于整体实现的时间,RR_TYPE则是资源记录的类型,VALUE表示不同资源记录所代表的有效值;“@”符号可以用于引用当前区域的域名;我们可以用“@”来代替开头的名称;也可以通过宏定义的方式,如:

若不采用宏定义的一条资源记录:

qhdlink.com. [TTL] IN RR_TYPE VALUE

采用宏定义的一条资源记录:

$ORIGIN qhdlink.com.

$TTL 86400

IN RR_TYPE VALUE

当采用宏定义的方式,之前所需要书写的内容就会缩减,相当于之前声明过的变量,如今不需要再去声明;

七种资源记录:

SOA记录:

name:当前域的域名,可以使用“@”替代;

VALUE:

1.当前区域的主DNS的域名,或者FQDN;

2.当前区域数据库管理员的邮件地址;邮件常用格式为[email protected]但是在资源记录中却不可以使用带有特殊含义的“@”,这样系统会认为其为mailqhdlink.com.com不符合邮件格式;将“@”符号替换为“.”即可;

3.对应主服务器序列号以及区域传送的刷新时间,重试时间,过期时间,否定答案缓存时间;

如:

qhdlink.com. 86400 IN SOA ns1.qhdlink.com. admin.qhdlink.com. (

2017811;serial

1H;refresh

10M;retire

1W;expire

1D

);ttl

@ 86400 IN ns1.qhdlink.com. admin.qhdlink.com. (

2017811;serial

1H;refresh

10M;retire

1W;expire

1D

);ttl

1H:一小时,从服务器主动要求刷新检查是否需要更新;

10M:十分钟,从服务器未得到回应,十分钟后再次重试;

1W:一周,一周后若主服务器还未回应则停止从服务器工作;

1D:一天,否定时间;

NS记录:表示当前域中的所有服务器,在使用NS记录后,还要通过A记录指定服务器的IP地址,才能进行正常访问;

name:当前域域名;可以在前方宏定义,省略name;

VALUE:当前域中的完全合格域名;

如:

无宏定义:

qhdlink.com. 86400 IN NS ns1.qhdlink.com.

有宏定义:

$ORIGIN qhdlin.com.

$TTL 86400

IN NS ns1

注意:每个域中可以有多条NS记录,但每条NS记录只能对应一个A记录;

MX记录:邮件交换服务器;

name:当前域域名,可以在前方宏定义,省略name;

VALUE:当前域中的有效邮件服务器的主机名;

如:

无宏定义:

qhdlink.com. 86400 IN MX mail.qhdlink.com.

有宏定义:

IN MX mail

注意:每个域中可以有多条MX记录,但每条MX记录对应一个A记录;

A记录:

name:域中某主机名称或FQDN;

VALUE:域中某主机名称或FQDN所对应的IP地址;

如:

无宏定义:

www.qhdlink.com. 86400 IN A 172.16.72.1

有宏定义:

$ORIGIN qhdlink.com.

$TTL 86400

www IN A 172.16.72.1

PTR记录:

name:将IP地址反过来写,并在其后缀加反向域的标准后缀,所以其完整写法应该是:

1.72.16.172.in-addr.arpa

value:FQDN

如:

1.72.16.172.in-addr.arpa. 86400 IN PTR www.qhdlink.com.

BIND软件:

BIND--Berkeley Internet Name Domain, ISC(isc.org)

bind-libs:为bind的其他应用程序提供共享库文件

bind-utils:通用工具包,如:dig,host,nslookup等;

bind:主程序包,包括DNS服务器程序,解析库,检测工具;

bind-chroot:设置伪根,启用监牢模式;安全体现;

BIND软件只需挂载光盘,使用yum命令安装即可;

BIND命令的主服务进程是named,接下来我们也要围绕着named来进行DNS服务器的配置工作;

首先打开named进程服务;

如:

CentOS7:systemctl start named.service

CentOS6-:service named start

打开后使用status查看状态;

bind:

主配置文件/etc/named.conf

可以在主配置文件中设定DNS服务器的named进程监听的IP地址,令其监听DNS主服务器IP地       址;可以设置允许那些主机查询请求到服务器,使用IP段的方式最好;4

主配置文件格式:

1.注释的方式:

//:单行注释;

/* */:任意内容注释;

2.分段配置的特点:

a.访问控制列表的定义段;

acl ACL_NAME {...}; "分号结尾"

b.全局选项段:

options {...};

c.日志配置段:

logging {...};

d.区域配置段:

zone "ZONE_NAME" IN {...};

e.视图配置段:

view VIEW_NAME {...};

f.include包含段:

include /PATH/TO/SOME_CONFIG_FILE

如:

listen-on port 53 { 127.0.0.1; 172.16.72.2; };:监听端口53,53端口用于完成主机名的     查询以及区域传送;named进程监听的IP地址;

directory "/var/named";:区域数据库的根目录;在该目录下创建文件书写资源记录;

allow-query     { 172.16.0.0/16; };:访问控制语句,默认是localhost,只为自身服务     器提供查询请求;修改为让所有172.16网段的都可以访问DNS服务器;

recursion yes;全局开启的递归查询;默认为所有客户端开启递归查询;

初学时,建议关闭dnssec功能;

dnssec-enable yes;

dnssec-validation no;

dnssec-lookaside no

当配置好DNS服务器后,需要去测试DNS服务器的可用性,是否正确;这时候我们就需要一个能够通过域名和IP地址来访问到指定的区域的工具;如dig,host以及nslookup;

dig:

dig [@Server] [-t RR_TYPE] [QUERY_OPTIONS]

@Server:表示此次服务请求由主DNS服务器来完成,Server为该服务器IP地址;

-t RR_TYPE:表示此次服务请求所要查询的资源记录;

QUERY_OPTIONS:

+[no]recurse:要求目标DNS服务器必须[不]进行递归查询;

+[no]trace:对整个解析过程进行跟踪,由根域开始直到指定主机;

如:

①由域名正向解析

对baidu.com进行dig跟踪,查看在当前主机如何去访问baidu.com;

首先访问根域,再有根域去访问下属的13个在世界范围的服务器;判断,baidu.com;在哪块服     务器上;

去访问顶级域名com

由com去找在他之下的baidu;找到5个与baidu相关的服务器;

表示baidu.com存在别名为a.shifen.com;可以通过别名访问baidu

②dig -x IPADDR

由IP地址反向解析

反向解析出该IP地址的资源记录;

host命令:

host [-t RR_TYPE] DOMAIN_NAME SERVER

host www.kernel.org 172.16.72.1(本机IP)

没有加-t选项;host命令直接显示www.baidu.com使用那个DNS服务器;

nslookup命令:

使用交互的方式来对域名或IP地址进行查询;

nslookup(交互命令)

set type=RR_TYPE(设置查询的资源记录)

set q=RR_TYPE(设置查询的资源记录)

两种设置方式

使用域名解析

DNS服务器配置:

1.基本的正向和反向区域的配置和解析;

2.主从服务器的设置;

3.子域和子域的委派;

4.转发器;

5.访问控制列表和视图;

步骤

①配置DNS服务器,首先需要将DNS主配置文件/etc/named.conf中的监听IP地址处加上该DNS服务器的IP地址;如listen-on port 53 { 127.0.0.1; 172.16.72.2; };再将allow-query { 172.16.0.0/16; };修改为让所有172.16网段都能访问该DNS服务器;

②配置数据区域,数据区域的配置有正向反向之分,在/etc/named.rfc1912.zones中定义;

zone "ZONE_NAME" IN {

type {master|slave|forward|hint};

file "ZONE_NAME.zone";

};括号后需要加分号

type:

master表示该数据区域为主DNS服务器;

slave表示该数据区域为从DNS服务器;

file:

在该命令后的文件名,作为相对路径,需要在/etc/named/下创建对应的文件;

③配置DNS服务器的资源记录;在/var/named/下创建与配置数据区域文件相同的文件名;如

qhdlink.com.zone;再在该文件中书写DNS服务器的资源记录;

第一条SOA记录;在该文件中的唯一一条;

定义一条NS记录,用来表示当前唯一的服务器;

定义一条MX记录,用来表示当前的邮件交换服务器;

定义NS的A记录;

定义MX的A记录;

定义三条当前域域名的A记录,分别指向不同的IP地址;

如:

④修改资源记录文件的权限;因为文件创建过后的属主和属组都是root,named进程无法调用,虽然其他用户的权限可以,但这样不符合生产环境要求;所以将属组改为named,并将其他用户权限删除;

~named]chown :named qhdlink.com.zone

~named]chmod o-r qhdlin.com.zone

⑤使用named-checkconf命令检查DNS主配置文件/etc/named.conf及其辅助配置文件是否有错;

再使用named-checkzone "ZONE-NAME" ZONE-FILE 去检查我们所书写的资源记录是否出错;

⑥使用rndc命令重启配置文件

⑦关闭防火墙,并将SElinux置于允许状态;

iptables -F

setenforce 0

⑧开启另一台虚拟机;使用dig测试是否能访问DNS

DNS服务器主从通信:

配置从DNS服务器:

步骤

①定义区域,在配置文件/etc/named.rfc1912.zones中,将type改为slave表从服务器,同时将file改为slave/qhdlink.com.zone;最后再在从服务器的区域中加上其为谁工作,也就是主服务器的IP地址;

zone "qhdlink.com" IN {

type slave;

file "slaves/qhdlink.com.zone";

masters { 172.16.72.2; };  //主服务器IP

};

当主DNS服务器出现数据改变,序列号增加时,自动更新并将区域数据发往从服务器;

②使用named-checkconf命令检查DNS主配置文件/etc/named.conf及其辅助配置文件是否有错;

③在/etc/named.conf中添加从服务器IP的监听;

④在主DNS服务器中的资源记录中添加一条从服务器的NS记录;否则,主服务器无法传送区域数据给从服务器;

如:

增加一条从服务器的NS记录;

当修改了主DNS的资源记录后,将序列号递增;

rndc reload便可以将主服务器更新到从服务器中;

可以查看区域数据传输的日志

/var/named/data/named.run文件内容

如:

表示区域数据以全量传输的方式传送过去了;因为是第一次传输,所以采用全量;

时间: 2024-11-19 11:28:10

DNS and BIND的相关文章

DNS和Bind配置指南

/////////////////////////////目录//////////////////////////////////////一.DNS原理相关二.使用bind搭建最简单的DNS服务器三.使用bind搭建可以解析自己添加的域名的DNS服务器四.配置DNS转发五.配置主从配置主从六.测试主从同步 拓展学习:DNS and BIND配置指南  http://anyisalin.blog.51cto.com/10917514/1753638bind配置视图(view)   http://w

DNS and BIND 笔记总结

DNS and BIND Domain Name Server(Syetem.Service)    Bekerley Internet Name Domain,ISC(www.isc.org) 协议 C/S架构.udp53和tcp53    IANA分配域名 本地名称解析配置文件    /etc/hosts    %Windows%/system32/dirvers/etc/hosts    1.1.1.1 www.qq.com Top Level Domain .tld 三类:组织域.国家域

DNS(bind)服务器的安装与配置

Bind服务器: bind(Berkeley Internet Name Domain Service),它是一款实现DNS服务器的开源软件,现在为最广泛的DNS服务器软件 Socket: 套接字,及IP:port(IP地址端口对) 端口: TCP:0~65535  UDP:0~65535 注: 小于1024的端口为知名端口,只有root用户有权限开放和关闭. 1.bind的安装 包名: bind 进程: named 协议: dns 使用端口: 53(tcp,udp) 相关的包: [[email

Linux运维实战之DNS(bind)服务器的安装与配置

上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要内容] bind服务器简介(包括客户端工具dig的介绍) 配置正向解析DNS服务器 配置反向解析DNS服务器 配置辅助DNS服务器并在主辅之间实现区域传送 一.BIND服务器简介: Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件.Bind原本是美国DARPA资助伯克利大学(Berkeley)开设的一个研究生课题,后来

Linux学习之路-DNS原理-BIND配置详解

DNS原理-BIND配置详解 DNS系统概述 DNS系统作用     a) DNS,简单地说,就是Domain Name System,翻成中文就是"域名系统".主要的功能就是将人易于记忆的Domain Name与人不容易记忆的IP Address作转换.      b) DNS提供正向解析和反向解析          正向解析:根据主机名称(域名)查找对应的IP地址.          反向解析:根据IP地址查找对应的主机域名 DNS系统结构  系统结构原理  目前DNS采用的是分布

【Linux】DNS服务-BIND从服务器、缓存服务器、转发服务器配置

环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example.net的配置信息即可3 1.配置文件位置 /var/named/chroot/etc/named.conf 2.在主配置文件中添加一行域的zone定义: zone "example.net" { type slave;          masters { 120.27.99.64; };

DNS and BIND 实验

DNS and BIND实验 模拟过程:客户端想访问www.magedu.com.客户端发请求到电信的DNS服务器(找www.magedu.com),电信的DNS服务器找根名称服务器,根名称服务器找com服务器,com服务器找magedu.com的名称服务器(这里master,一个slave) 实验准备:7台虚拟机,一台CentOS6当作客户端,6台CentOS6(一台本地DNS,一台根,一台com,一台magedu.com的主服务器,一台magedeu.com的从服务器,一台为www.mage

DNS与bind

DNS dns是属于分布式系统管理庞大的dns数据库:我们在日常的运维活动中,虽然用到配置DNS服务器的机会很少,但是DNS对于我们各项服务,尤其是网页服务尤为重要. 一般情况下我们建立的DNS服务器适用于使用的: 一般是在内网中主机非常多,有很多服务器分别提供不同的服务:如搜索web,图片web,数据web,监控等,这些服务器所提供的用户名与外网联系不大(一般有反向代理,负载均衡在前面),同时为了做好自动化运维,需要每个主机的主机名,建立DNS就是为了更好的管理 DNS  domain nam

dns服务bind使用

正向,反向,主从,子域,转发器,安全控制. 介绍: top level domain(tld) 顶级域 域的组织络式,我们也看到箭头是单向的,这也是域名解析的方式,在本地DNS服务器无法解析的情况下,本地DNS服务器会直接去找根域,再找顶级域,找到组织域再找到主机名.注册域名一般就是注册的组织域,现在也有那种net.co,这种不知道是怎么个情况. 递归 迭代: 现在我们先来看看左下角这个用户是如何解析到redhat.com下面的主机的.server是对应的dns服务器. 用户向本地的DNS服务器