DNS 服务基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS 服务基础相关的知识,希望对你有一定的参考价值。

DNS 服务器基础

一、DNS简介

DNS(Domain Name System,域名系统)是因特网的一项服务;

DNS 是将域名和IP地址相互映射的一个分布式数据库;

DNS 是一种应用层协议,使用UDP和TCP的53端口

1、DNS域命名空间

DNS域命名空间是一种层次结构,一般可分为根域、顶级域、二级域、子域以及主机名;

技术分享图片

 

1)根域
使用“.”表示,位于域命名空间层次结构的最高层;
目前分布于全世界的根服务器只有13台,全部由Internet网络信息中心(InterNIC)管理,在根域服务器中只保存了其下层的顶级域的DNS服务器名称和IP地址对应关系;
2)顶级域(TLD,Top Level Domain)
顶级域位于根域下层,可以分为两类:组织域(.com,.net,.org,.gov,.edu,.mil等)和国家域(.iq,.tw,.hk,.jp,.cn等);
3)二级域
二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
4)子域
子域是根据具体情况从二级域中按部门或地理位置创建;
5)主机名
位于DNS域命名空间的最低层,主要指计算机的主机名;
注意:FQDN(Full Qualified Domain Name,完全合格域名)包括域名和主机名

2、DNS名称解析方式

1)正向解析:由域名查找IP地址;
2)反向解析:由IP地址查找域名;
注意:二者的命名空间不在同一个空间,不是同一棵树,因此也不是同一个解析库;

3、DNS查询

1)递归查询
当DNS服务器接收到查询请求时,不论成功或失败,都会做出对应的响应(发生在DNS客户端与DNS服务器之间);
2)迭代查询
DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应;如果服务器无法解析,它可能返回一个指针;指针指向下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或知道出错、超时为止(发生在DNS服务器之间);

4、一次完整的DNS查询过程

 

技术分享图片
Client----->hosts文件----->DNS Local Cache----->DNS Server (recursion,递归)----->

  • 若为自己负责解析的域:直接查询数据库并返回答案;
  • 若不是自己负责解析的域:Server Cache----->iteration(迭代)

5、解析答案

  • 肯定答案
  • 否定答案:不存在查询的键,因此,不存在与之对应的值;

 

  • 权威答案:由直接负责的DNS服务器返回的答案;
  • 非权威答案

 

二、DNS服务器的类型

负责解析至少一个域:

  • 主DNS服务器
  • 辅助DNS服务器

不负责域解析:

  • 缓存DNS服务器

1)主-辅DNS服务器

  • 主DNS服务器:维护所负责解析的域数据库的那台服务器,读写操作均可进行;
  • 辅助DNS服务器:从主DNS服务器或其他的从DNS服务器那里“复制”一份解析库,但只能进行读操作;

2)“复制”操作的实现方式

  • 序列号:serial,也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
  • 刷新时间间隔:refresh,从服务器每次到主服务器检查序列号更新状况;
  • 重试时间间隔:retry,从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
  • 过期时长:expire,从服务器始终联系不到主服务时,多久之后放弃从主服务器同步数据,并停止提供服务;
  • 否定答案的缓存时长:negative answer ttl;

注意:主服务器数据库发生变化时,主服务器会“通知”从服务器随时更新数据;

3)区域传送

  • 全量传送:axfr,传送整个数据库;
  • 增量传送:ixfr,仅传送变化的数据;

注意:区域(zone)和域(domain)的区别:
区域为物理概念,域为逻辑概念;
如bruce.com域包括正向解析库(FQDN--->IP)和反向解析(IP--->FQDN),每个解析库即为一个解析区域;

 

三、BIND 简介

BIND(Berkeley Internet Name Domain)是由伯克利大学研发的,是当前互联网上最长使用的DNS服务器软件,现在由ISC(Internet Systems Consortium)负责开发与维护;

1、bind 程序包

  • bind:提供dns server程序以及几个常用的测试程序;
  • bind-utils:bind客户端程序集,例如dig,host,nslookup等;
  • bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
  • bind-chroot:选装,让named运行于jail模式下;

 注意: 

  • dns:协议;
  • bind:dns协议的一种软件实现 ;
  • named:bind程序运行的进程名;

bind 程序安装完成后,默认即可作为缓存名称服务器使用;

 

2、bind 配置文件

1)bind 的主配置文件 /etc/named.conf

主配置文件格式:

  • 全局配置段 options {...} 
  • 日志配置段 logging {...}
  • 区域配置段 zone {...}:配置那些由本机负责解析的区域或转发的区域;

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

2)bind 的区域解析库文件

bind 的解析库文件在 /var/named/ 目录下,一般文件名 ZONE_NAME.zone

注意:

a. 一台DNS服务器可以同时为多个区域提供解析;

b. 必须要有根区域解析库文件 named.ca
c. 还应该有localhost和127.0.0.1两个区域解析库文件,正向的为named.localhost,反向的为named.loopback

 

3)资源记录(Resource Record,简称RR)

资源记录类型有:A、AAAA、PTR、SOA、NS、CNAME、MX;

  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且只有一个SOA记录,且必须放在第一条;
  • NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录,其中一个为主记录;
  • A:Address,地址记录;FQDN--->IPv4;
  • AAAA:地址记录;FQDN--->IPv6;
  • CNAME:Canonical Name,别名记录;
  • PTR:Pointer;IP--->FQDN;
  • MX:Mail eXchanger,邮件交换器;有优先级,为0~99,数字越小优先级越高;

 

资源记录的定义格式:

name [TTL] IN RR_TYPE value

a. SOA

name:当前区域名称,例如“bruce.com.”或“2.3.4.in-addr.arpa.”;
value:有多部分组成:

  • 当前区域的区域名称,也可以使用主DNS服务器名称;
  • 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.代替;
  • 主从服务协调属性的定义以及否定答案的TTL;

示例:

1 bruce.com.  86400  IN  SOA  bruce.com. admin.bruce.com.(
2             2017010801    ;seial
3             2H                  ;refresh
4             10M                ;retry
5             1W                 ;expire
6             1D                  ;negative answer ttl
7 )    

 

b. NS

name:当前区域的区域名称;
value:当前区域的某DNS服务器的名称,如ns.bruce.com.;

示例:

1 bruce.com. 86400 IN NS ns1.bruce.com.
2 bruce.com. 86400 IN NS ns2.bruce.com.

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

 

c. MX

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

示例:

1 bruce.com. IN MX 10 mx1.bruce.com.
2 bruce.com. IN MX 20 mx2.bruce.com.

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

 

d. A

name:某FQDN,如www.bruce.com.;
value:某IPv4地址;

示例:

1 www.bruce.com. IN A 1.1.1.1
2 www.bruce.com. IN A 1.1.1.2
3 bbs.bruce.com. IN A 1.1.1.1

 

e. AAAA

name:FQDN;
value:IPv6;

 

f. PTR

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

示例:

1 4.3.2.1.in-addr.arpa. IN PTR www.bruce.com.

 

g. CNAME

name:FQDN格式的别名;
value:FQDN格式的正式名称;
示例:

1 web.bruce.com. IN CNAME www.bruce.com.

 

注意:

  • TTL可以从全局继承;
  • @表示当前区域的名称;
  • 相邻的两条记录其name相同时,后面的可以省略;
  • 对于正向区域来说,各MX、NX等类型记录的value为FQDN,此FQDN应该有一个A记录;

 

四、DNS 工具

1、DNS 排错工具

1)rndc
rndc工作在TCP的953端口,默认监听于127.0.0.1地址,因此仅允许本地使用;

1 rndc status
2 rndc flush
3 rndc reload

 

2)named-checkconf

1 named-checkconf [/etc/named.conf]

 

3)named-checkzone

1 named-checkzone [ZONE_NAME] [ZONE_FILE]

 

2、DNS 测试工具

1)dig

注意:dig用于测试DNS系统,因此不会查询hosts文件;

 1 dig [query options] [-t RR_TYPE] name [@SERVER]
 2   query options:
 3         +[no]trace:跟踪解析过程;
 4         +[no]recurse:进行递归解析;
 5 
 6 dig -x IP
 7     反向解析测试
 8 
 9 dig -t axfr DOMAIN [@server]
10     模拟完全区域传送    

 

2)host

1 host [-t RR_TYPE] name [server]

 

3)nslookup

1 nslookup [options] [name] [server]
2 
3 交互模式
4 nslookup>
5     server IP:以指定IP为DNS服务器进行查询;
6     set q=RR_TYPE:要查询的资源记录类型;
7     name:要查询的名称;

 






























以上是关于DNS 服务基础的主要内容,如果未能解决你的问题,请参考以下文章

DNS 服务基础

DNS服务基础

DNS服务基础之Bind

DNS服务基础及bind基础配置和应用

DNS服务基础 特殊解析 DNS子域授权 缓存DNS

linux基础第7节 ----配置与管理DNS服务器