DNS域名服务

Posted

tags:

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

DNS:Domain Name Service 域名服务

  • DNS协议    
  • 基于C/S架构 
  •          Client:发起应用请求的程序
  •          Server:相应请求(提供服务)的程序;
  • 名称解析: ID和名称之间的转换的过程
  • 名称解析库:存放域名主机名的文件                                

    DNS名称解析方式

  • 正向解析和反向解析:其不在同一个名称空间,也非同一个解析库
  • 正向解析过程
  • 主机名到ip解析过程:
  • 当一个客户端
  • DNS查询过程
  • 迭代:服务器自己遍历分布式服务系统反馈客户端请求
  • 递归:客户端向本机记录或所属DNS服务器发出一次请求,而获取结果的.
  • 一般查询分为两段:首段递归(客户端向所属DNS发出请求),二段迭代(服务器遍历分布式服务系统响应客户端请求)
  • 完整的一次查询请求过程:
  • 客户端先查询本机hosts文件没有则在查询本机缓冲后向主服务器发出请求,服务器如果是自己负责的解析域则将请求反馈回来,然后主机根据服务器反馈的ip找到相对应的客户端;如果不是则遍历互联网服务器系统迭代查询最终返回是或者否.
  • 主机名称自右而左:
  •   示例
  •       www(主机名).baidu(二级域).com(顶级域).(根域)
  • 从ip到主机名
  •  其过程与主机名到ip完全不相同, 它是由一个特殊的顶级域来完成映射
  • DNS服务器类型:

  •  负责解析至少一个域:
  •                 主名称服务器
  •                 辅助名称服务器
  •                 负责缓存名称服务器不负责解析
  •               
  • 冗余机制:提高服务器冗余功能
  •     主从服务器:
  •        主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
  •        从DNS服务器每个一段时间从主服务器同步数据(解析库文件)只能进行读操作
  • 同步的操作实时方式
  •                对比序列号:数据库的版本号;主机数据库内容发生变化,其版本号递增.               
  •                刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;
  •                重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
  •                过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
  •                否定答案的缓存时长:
  •                如果主服务器数据更新也会通知从服务器随时更新数据
  • 同步方式:区域传送
  •    区域传送: 全量传送;增量传送
  •    全量传送:axfr,主服务器把整个区域的数据传送给从服务器
  •                  从服务器第一次上线需要全部传送
  •     增量传送:lxfr,仅传送更新的数据;
  •     传送时基于tcp53号端口
  •     增量时基于udp53号端口

    区域(zone)和域(domain):

  •         每一个数据库是为一个区域
  •         比如: 
  •                机名到IP需要正向解析库是为区域
  •                 IP到机名反向解析库是为区域
  •          所以每个与都由两个区域正向和反向解析,但是所谓域为逻辑概念,它们之间没有绝对的比较.
  • 区域数据库文件:
  •             记录类型:A,    AAAA,  PTR,SOA,NS,CNAME,MX          
  •   资源记录的定义格式:
  •                 语法:    name (根据正反向而定义)     [TTL]     IN    RR_TYPE         value(值)
  •        SOA:必须为一个区域的第一条资源记录
  •                     name: 当前区域的名字;例如”正向123.com.”或者反向“2.3.4.in-addr.arpa.:可以用@取代
  •                     value:有多部分组成
  •                          (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
  •                          (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
  •                          (3) (主从服务协调属性的定义以及否定答案的TTL)
  •                     例如:
  •                         123.com.     86400(缓存时长)     IN         SOA     123.com.     admin.wds.com.  (
  •                                     2017052301(数字不要超过十位,自己定义) ; serial(注释)
  •                                     2H             ; refreshtime(刷新时间)
  •                                     10M         ; retry(重试时间)
  •                                     1W            ; expire (过期时间)
  •                                     1D            ; negative answer ttl (否定答案ttl值)
  •                         )    
  •             NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
  •                 name: 当前区域的区域名称
  •                 value:当前区域的某DNS服务器的名字,例如ns.wdscom.;
  •                  注意:一个区域可以有多个ns记录; 
  •                 例如:
  •                     wds.com.     86400     IN     NS      ns1.wds.com.
  •                     wds.com.     86400     IN     NS      ns2.wds.com.
  •             MX:Mail eXchanger,邮件交换器;
  •                  name: 当前区域的区域名称
  •                   value:当前区域某邮件交换器的主机名;
  •                   注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;  
  •                   优先级:0-99,数字越小优先级越高;
  •                   如果有多个根据优先级高的优先提供服务
  •                   正向反向不能互相包含
  •                 例如:
  •                     wds.com.         IN     MX     10      mx1.wds.com.
  •                     wds.com.         IN     MX     20      mx2.wds.com.
  •             A:Address, 地址记录,FQDN主机名 --> IPv4;
  •                    name:某个FQDN,例如www.abc.com.
  •                    value:某个IPv4地址;
  •                 例如:
  •                     www.abc.com.        IN     A    1.1.1.1
  •                     www.abc.com.        IN     A    1.1.1.2
  •                     asd.abc.com.          IN     A    1.1.1.1
  •                    一个主机可以有多个名
  •             AAAA:地址记录, FQDN 主机名--> IPv6;
  •                 name:FQDN
  •                 value: IPv6
  •             PTR:Pointer,IP --> FQDN主机名
  •                 name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
  •                 value:FQND
  •                 例如:
  •                     4.3.2.1.in-addr.arpa.      IN  PTR    www.wds.com.
  •             CNAME:Canonical Name(正式名称),也称别名记录;
  •                 name:FQDN格式的别名;
  •                 value:FQDN格式的正式名字;
  •                 例如:
  •                     abc.wds.com.      IN      CNAME  www.wds.com.
  •        要想自己解析必须先定义区域
  •         注意:
  •             (1) TTL可以从全局继承;
  •             (2) @表示当前区域的名称可以取代当前区域;
  •             (3) 相邻的两条记录其name相同时,后面的可省略;
  •                例如:
  •                    www.abc.com.        IN     A    1.1.1.1
  •                                                  IN     A    1.1.1.2
  •             (4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

    DNS协议的实现 "BIND", PowerDNS(互联网服务器标准)

  •  首先下载bind
  •         程序环境:
  •             主程序:/usr/sbin/named
  •             Unit File:/usr/lib/systemd/system/named.service
  •             配置文件:/etc/named.conf
  •             区域解析库文件:/var/named一般名字为:ZONENAME.zone
  • 配置解析一个正向区域:
  •              以wds.io域为例:
  •   (1) 定义区域
  •               在主配置文件中(/etc/named.conf)或主配置文件辅助配置文件(/etc/named.rfc1912.conf)中实现;
  •                         zone  "ZONE_NAME"  IN  {
  •                             type  {master|slave|hint|forward};
  •                             file  "ZONE_NAME.zone"; 
  •                         };    
  •           例如:
  •           编辑 /etc/named.rfc1912.zones,:定义区域
  •                  技术分享
  •              技术分享
  •              区域名字即为域名;
  •          
  •        修改主配置文件:
  •                 缓存名称服务器的配置:
  •                     监听能与外部主机通信的地址;                    
  •                         listen-on port 53;
  •                         listen-on port 53 { 172.16.253.183; };
  •       关闭dnssec功能:不做安全性校验
  •             /etc/named.conf
  •            技术分享 
  •        允许所有人来查询:
  •            技术分享  技术分享
  • (2) 建立区域数据文件(主要记录为A或AAAA记录)
  •        在/var/named目录下建立区域数据文件;
  •            技术分享
  •               技术分享
  •        定义区域文件内容
  •            技术分享
  •          
  •           任何计算机负责域解析要把域拆成区域正向或反向 要想自己解析必须先要定义区域
  •          /var/named下的工具:
  •            技术分享
  •           检查配置文件语法错误
  •           named-checkconf
  •          检查自己定的区域文件错误(只能检查语法不能检查逻辑错误)
  •             技术分享  
  •         要确保named有访问权限,以及让其他用户没有访问权
  •            技术分享
  •          启动服务:service  named  start
  •  host:测试工具

  •           host -t A www.wds.io
  •             技术分享
  •   dig 测试工具   

  •          全量区域传送
  •              技术分享
  •          rndc status 查询当前服务器状      技术分享
  •          rndc flush 清除缓存
  • 反向解析:步骤如下

  •        编辑 /etc/named.rfc1912.zones,:定义区域
  •                技术分享
  •         建立区域数据文件(主要记录为A或AAAA记录)
  •         在/var/named目录下建立区域数据文件
  •         定义区域文件内容
  •                 技术分享    
  •        让服务器重载配置文件和区域数据文件
  •             技术分享技术分享
  •       反向解析:  测试 
  •               dig -x ip 
  •   技术分享         技术分享

     

  •       反向区域传送
  •            技术分享技术分享

    主从服务器:

  •         从服务器是区域级别的概念;      
  •                 (1) 定义区域
  •                  定义一个从区域; 
  •                         zone "ZONE_NAME"  IN {
  •                          type  slave;
  •                          file  "slaves/ZONE_NAME.zone";
  •                          masters  { MASTER_IP; };
  •                         };            
  •             示例:正反向区域定义
  •                     技术分享   
  •                     
  •                 (2) 重载配置
  •                     rndc  reload
  •                     systemctl  reload  named.service

   子域授权:

  •     正向解析区域授权子域的方法:
  •                配置数据文件分子域
  •                技术分享
  •              
  • 定义转发:
  •             注意:被转发的服务器必须允许为当前服务做递归;
 
  •             (1) 区域转发:仅转发对某特定区域的解析请求;
  •                 zone  "ZONE_NAME"  IN {
  •                     type  forward;
  •                     forward  {first|only};
  •                     forwarders  { SERVER_IP; };
  •                 };
  •                 技术分享

     

  •                 first:首先转发;转发器不响应时,自行去迭代查询;
  •                 only:只转发;
 
  •             (2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
  •                 options {
  •                     ... ...
  •                     forward  {only|first};
  •                     forwarders  { SERVER_IP; };
  •                     .. ...
  •                 };
  •                  技术分享

     

bind中的安全相关的配置:

  •      acl:访问控制列表;把来访的一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
  •             acl  acl_name  {
  •                 ip;
  •                 net/prelen;
  •             };
  •             示例:
  •                 acl  mynet {
  •                     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域名服务的主要内容,如果未能解决你的问题,请参考以下文章

DNS--域名解析

DNS--域名解析

DNS域名解析服务(理论秘籍大全)

CentOS7 搭建 DNS 域名解析服务器

DNS分离解析和智能解析 1构建DNS域名服务器的分离解析 DNS分离解析域名服务器概述 DNS分离解析域名服务器实际也是主域名DNS服务器,这里所说的分离解

域名系统 DNS服务&iptables