DNS服务器的基本原理详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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[B1] ; ; --->监听在那一个端口(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[B2] (定义生命周期)
$ORIGIN. (定义当前区域的名称,注意要有.)
语法格式:name(()完整域名)[B3] TTL(已定义,省略) IN 资源记录类型 对应数值(IP地址)
(4.)反向解析文件(PTR记录)
语法格式:数值(IP地址)[B4] IN 资源记录类型 完整域名
(5.)NS记录[B5] 文件
语法格式: 域名 TTL IN NS 这个域中DNS服务器的名称(可以有多个)[B6]
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记录[B7] 文件:一般只出现在正向解析文件中
语法格式:域名 TTL IN MX 优先级(0-99) 主机名
主机名 IN A IP地址
(7.)SOA记录[B8] 文件
语法格式:域名[B9] TTL IN SOA 主DNS服务器[B10] 管理员的邮箱地址[B11]
(
20160116----序列号/版本号(主服务器发生改变时,从服务器检查序列号更新数据,一般只有10位)
20M---刷新时间(从服务器多长时间到主服务器上检查一次数据是否更新)
时间表示:M--分钟 D--天 W--周 H--小时
解析域名: dig -t NS ..... 解析IP:dig -x IP地址
显示查询次序:dig +trace -t A 域名
显示解析过程:dig +trace -t A 完整域名 @ 交给谁去解析
区域传送: -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中再添加记录就可以了。别忘了创建解析文件!
专业书籍、问题答疑、教学视频、在线实验平台等服务请移步:www.noylinux.com【零基础趣学Linux】
如果此文章有帮助到您,还请麻烦动动您的小手点个赞,谢谢~
Linux运维技术交流q:962822359
以上是关于DNS服务器的基本原理详解的主要内容,如果未能解决你的问题,请参考以下文章