LinuxDNS协议一、基础知识

一、基础知识介绍

1、域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
2、因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
(1)国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
(2)通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
LinuxDNS协议一、基础知识_第1张图片
根域名服务器,定义了每个域名服务器的地址信息
顶级域名服务器,管理在该顶级域名服务器注册的所有二级域名
权限域名服务器,负责一个区的域名服务器
查找方式:
递归 --------计算机只发送一次请求
迭代 --------计算机发送多次请求
实际解析分为两段,一段递归一段迭代
LinuxDNS协议一、基础知识_第2张图片
LinuxDNS协议一、基础知识_第3张图片
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用
正向解析:FQDN---->Ip Ip 域名 (一对多)
反向解析:IP----->FQDN
3、DNS 服务类型:
主DNS服务器:数据修改 (接受用户请求返回数据) master
辅助dns服务器: 定期请求数据同步 slave
缓存dns服务器: 只缓存dns数据 hint
转发器:缓存服务器去掉缓存功能 forward
4、DNS解析答案
当DNS客户端向DNS服务器发出解析请求时,不管是否能够查询到想要的结果,都会返回一个解析答案。根据是否能够查询到想要的结果,可分为肯定答案和否定答案;根据解析答案是否由直接负责的DNS服务器返回,可分为权威答案和非权威答案。
根据是否能够查询到想要的结果:
①肯定答案:存在查询的键(key),并且存在与其查询键对应的值(value)。
②否定答案:不存在查询的键(key),因此,自然不存在与其查询键(value)对应的值。
根据解析答案是否由直接负责的DNS服务器返回:
①权威答案:由直接负责的DNS服务器返回的答案。
②非权威答案:不是由直接负责的DNS服务器返回的答案。这种情况下一般是由其他DNS服务器直接返回缓存的解析结果

二、DNS协议的一种开源实现–bind

提供dns服务的套件叫bind但执行服务名称的是named
我们说DNS是一种协议,而对于每一种协议的实现都需要程序员开发出遵循这种协议规范的软件程序来实现,这里要介绍的BIND就是DNS协议的一种开源实现。据统计,使用bind作为DNS服务器软件的DNS服务器大约占所有DNS服务器的九成。BIND全称为Berkeley Internet Name Domain,因为当今互联网上的通信几乎都必须借助于DNS服务器来解析主机名,得到通信对方的IP地址,而在DNS服务器上最常用的软件就是bind,所以,bind这款软件几乎可以说是当今互联网上常用的软件了。目前bind由ISC.org(Internet Systems Consortium,互联网系统协会)负责开发与维护。
①学习bind这款软件之前,务必掌握以下基本概念:
1 dns:协议
2 bind:dns协议的一种开源实现
3 named:bind程序运行起来后的进程名
②bind相关的程序包
bind不仅提供了主包,还提供了各种bind的支包,它们用于实现不同的功能。而在众多bind支包中,最常用到的有:bind-utils, bind-libs, bind-chroot等。
bind相关的程序包如下:
1 bind:提供dns server程序,以及几个常用的测试工具。
2 bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
3 bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
4 bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。
yum install bind -y
rpm -ql bind 查看
③bind的相关配置文件
/etc/named.conf 主配置文件
/etc/rndc.conf: 相关配置文件
区域数据文件,需要手动创建
/var/named/zidingyi.zone
配置检查脚本工具
/usr/sbin/named-checkconf
区域配置检查工具
/usr/sbin/named-checkzone
#全球十三个根服务器的相关信息;
/var/named/named.ca 区域文件dns数据库
解析库文件:存放于/var/named/目录下,一般名字为ZONE_NAME.zone
3.1、要点:
(1)一台DNS服务器可同时为多个区域提供解析。
(2)DNS服务器必须要有根区域解析库文件:named.ca.
(3)DNS服务器还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库,这两个文件分别如下:
①正向解析库文件:/var/named/named.localhost
②反向解析库文件:/var/named/named.loopback
3.2、rndc的全称是Remote Name Domain Controller,它可以帮助用户更方便地管理DNS服务器,包括可以检查DNS服务器的状态与统计信息、重载配置文件及zone或单独重载某个区域而不需要重新启动整个DNS服务,还有查看已存在DNS缓存当中的资料等。
DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
rndc服务默认监听在tcp的953端口,且默认监听于127.0.0.1地址,因此默认仅允许本地使用。
rndc的常见用法:
rndc reload:在不重新启动DNS服务的情况下,重新加载配置文件及zone.
rndc reload zone:重新加载指定的zone.
rndc status:查看当前DNS服务器的状态。
rndc stats:将当前系统的DNS统计数据记录下来,默认会将数据存储为一个文件:/var/named/data/named_stats.txt.
rndc dumpdb:将当前DNS高速缓存中的数据记录下来,与stats类似,默认会将数据存储为一个文件:/var/named/data/cache_dump.db.、
rndc flush:清空当前DNS服务器上的所有缓存。
Usage: rndc [-b address] [-c config] [-s server] [-p port]
[-k key-file ] [-y key] [-V] command
3.3、区域类型:
主区域:主DNS,master
从区域:从DNS,slave
缓存区域:hint,在找不到相关信息的时候去从根查找,标识根的地址
转发区域:forward,转发到指定区域,而不是指向根
3.4、资源记录名称:(数据库中的每一个条目)
SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析
NS 将自己的域名映射到DNS 将域名最终映射到哪一台主机(由哪一台主机去解析当前所定义的域主机)
A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
CNAME (规范名称)记录域别名 132 主机名
MX 邮件交换记录
PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。
资源记录包含的元素:
owner-name TTL class type date
主机名 资源记录生存时间 INTERNET A 记录存储数据(主机ip)
五种定义的信息
serial number: 序列号 定义当前使用的数据序列号 sn遵循“年+月+日+编号” ·
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 缓存放多久过期
negative answer ttl: 否定答案的缓存时长 (如果解析在规定时间里没有解析到答案会否定解析不到)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

你可能感兴趣的:(RHCE学习笔记)