DNS配置详解(一)bind实现正向解析和反向解析

DNS是域名服务(Domain Name Service),负责把域名解析成IP地址(正向解析)或者把IP地址解析为域名(反向解析)。


DNS查询过程

假设我们要访问www.abc.com,dns解析请求会发送给我们配置dns服务器,如果当前已有缓存则直接把结果返回给我们的终端,如果没有则向dns的根查询负责解析.com的服务器的IP,找到负责.com域的服务器后再向其查询负责abc.com这个域的服务器的IP,得到结果后再向其查询www.abc.com的IP地址,查询到结果后再返回给我们。

    在这个过程中,我们只需要向我们指向的dns发起一次dns请求,他就会把最终的结果返回给我们,这个过程称为递归查询,而当其缓存中没有我们要查询的记录时,他需要一级一级的分别向根,.com, abc.com查询,每一次的查询请求都是他自己发起的,这个过程称为迭代查询

由于abc.com这个域的解析不是由我们指向的dns服务器负责的,所以他返回给我们的答案为非权威应答,而他通过迭代从负责abc.com的dns服务器查询到的结果则为权威应答


在互联网上总共有13个根服务器,在linux系统上可以dig -t NS .查看

[root@bob ~]# dig -t NS . | awk '$4=="A" {print $0}'
d.root-servers.net.	5	IN	A	199.7.91.13
b.root-servers.net.	5	IN	A	192.228.79.201
a.root-servers.net.	5	IN	A	198.41.0.4
c.root-servers.net.	5	IN	A	192.33.4.12
j.root-servers.net.	5	IN	A	192.58.128.30
f.root-servers.net.	5	IN	A	192.5.5.241
k.root-servers.net.	5	IN	A	193.0.14.129
l.root-servers.net.	5	IN	A	199.7.83.42
e.root-servers.net.	5	IN	A	192.203.230.10
g.root-servers.net.	5	IN	A	192.112.36.4
i.root-servers.net.	5	IN	A	192.36.148.17
m.root-servers.net.	5	IN	A	202.12.27.33
h.root-servers.net.	5	IN	A	128.63.2.53

DNS资源记录类型:   

   FQDN --> IP           A    IPv4 FQDN(Fully Qualified Domain Name)

   FQDN --> IP           AAAA IPv6

   Domain --> DNS Server NS 

   Domain --> Master DNS SOA(Start Of Authority)起始授权记录:准确说明谁是主dns服务器,主辅之间如何同步

   FQDN --> FQDN         CNAME(Canonical Name)   别名记录

   Domain --> Mail Server MX (Mail eXchanger) 邮件服务器,有优先级,0-99,数字越小,优先级越高

   IP --> FQDN            PTR(Pointer)     反向解析记录


  正向解析和反向解析使用不同的名称解析库,每一个名称解析库叫做一个zone(区域)

  正向解析的根是 .(一个点)

  反向解析的根是 .in-addr.arpa.

  

DNS安装配置

  1. 作为DNS缓存服务器

    1. 全球使用最广泛的dns服务器软件bind,由www.isc.org维护,同时dhcp软件也由他维护,可以去官网下载软件源码和文档

    2. 安装过程很简单 yum install -y bind

    3. 主配置文件/etc/named.conf,默认配置是监听在127.0.0.1上的且只允许本机查询,只需要更改为主机的对外地址或者直接注释(监听在所有网络接口、允许所有主机查询),启动服务就可作为一台DNS缓存服务器了。

    4. bind9是C语言写的,配置文件也是C语言风格,// 是注释符,每个语句结束要加;分号,bind10据说用C++和Python写的,options段定义的是全局参数


    5. //      listen-on port 53 { 127.0.0.1; };
      //      listen-on-v6 port 53 { ::1; };
      //      allow-query     { localhost; };
    6. rpm包给我们提供了启动脚本named, service named start即可


  2. 配置正向解析

    1. 在named.conf中

directory       "/var/named";    
include "/etc/named.rfc1912.zones";

编辑named.rfc1912.zones添加以下内容以增加对域bob.org的管理

  1. zone "bob.org" IN {
    	type master;    // 类型为主服务器
    	file "bob.org.zone";    // 指定资源解析库存放位置,这个路径是相对
    // named.conf中定义的directory的,即实际位置为/var/named/bob.org.zone
    };


  2. 创建文件/var/named/bob.org.zone添加以一内容

  3. $TTL 43200;  // 这里可以定义全局变量,如果没有定义TTL则继承这里的43200单位秒 
    // 第一条记录必须为SOA记录
    bob.org./*区域名称,可以写成@直接引用当前区域名称*/	86400/*TTL,可不定义,会直接继承全局的*/	
    IN /*Internet,固定格式*/	SOA /*记录类型*/	ns.bob.org. /*主服务器的FQDN*/	
    admin.bob.org /*管理员邮箱,因为@有特殊意义用点代替*/	
    $TTL 43200;
    @    86400    IN    SOA    ns.bob.org.    admin.bob.org (
    		201410070001; //serial number序列号
    		1h;    // refresh time 主辅之间刷新时间
    		5m;    // retry time 拉取信息不成功的重试时间
    		7d;    // expire time 过期时间,过期后辅服务器也将放弃解析
    		1d; )  // 否定答案的TTL
    		
    @/*引用当前域名,可省略*/	IN	NS	ns.bob.org. 
    	IN	MX	10	mail1.bob.org.
    	IN	MX	20	mail2 /*相当于mail2.bob.org.*/
    ns	IN	A	172.16.100.10
    www	IN	A	172.16.100.11
    webmail IN	CNAME	mail2
    mail1.bob.org.	IN	A	172.16.100.12	
    mail2.bob.org.	IN	A	172.16.100.13
  4. [root@localhost named]# named-checkconf  // 检查配置文件
    [root@localhost named]# chown :named /var/named/bob.org.zone
    [root@localhost named]# named-checkzone "bob.org" "/var/named/bob.org.zone"
    // 检查区域文件是否正确 
    zone bob.org/IN: loaded serial 3841574385
    OK
  5. [root@localhost named]# dig -t NS bob.org @172.16.100.10     // 测试是否可解析
    
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS bob.org @172.16.100.10
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34365
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    // 标志aa(authority answer)权威答案
    ;; QUESTION SECTION:
    ;bob.org.			IN	NS
    
    ;; ANSWER SECTION:
    bob.org.		43200	IN	NS	ns.bob.org.
    
    ;; ADDITIONAL SECTION:
    ns.bob.org.		43200	IN	A	172.16.100.10
    
    ;; Query time: 0 msec
    ;; SERVER: 172.16.100.10#53(172.16.100.10)
    ;; WHEN: Wed Aug 27 14:13:38 2014
    ;; MSG SIZE  rcvd: 58





3. 配置反向解析


    1. $TTL 43200;
      @	86400	IN	SOA	ns.bob.org. admin.bob.org. (
      		201410070001;
      		1h;
      		5m;
      		7d;
      		1d;)
      
      	IN	NS	ns.bob.org.    // NS记录是必须的
      	IN	MX	10	mail1.bob.org.
      	IN	MX	20	mail2.bob.org.
      10	IN	PTR	ns.bob.org.
      10	IN	PTR	www.bob.org.
      11	IN	PTR	mail1.bob.org.
      12	IN	PTR	mail2.bob.org.
      12	IN	PTR	webmail.bob.org.
    2. zone "100.16.172.in-addr.arpa" IN {
      	type master;
      	file "172.16.100.zone";
      };
    1. 在区域配置文件/etc/named.rfc1912.zones新建一个区域

    2. 创建反向资源解析库文件/var/named/172.16.100.zone

    3. // 测试反向解析
      [root@localhost named]# dig -x 172.16.100.10 @172.16.100.10
      
      ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.100.10 @172.16.100.10
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11785
      ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
      ;; WARNING: recursion requested but not available
      
      ;; QUESTION SECTION:
      ;10.100.16.172.in-addr.arpa.	IN	PTR
      
      ;; ANSWER SECTION:
      10.100.16.172.in-addr.arpa. 43200 IN	PTR	www.bob.org.
      10.100.16.172.in-addr.arpa. 43200 IN	PTR	ns.bob.org.
      
      ;; AUTHORITY SECTION:
      100.16.172.in-addr.arpa. 43200	IN	NS	ns.bob.org.
      
      ;; ADDITIONAL SECTION:
      ns.bob.org.		43200	IN	A	172.16.100.10
      
      ;; Query time: 0 msec
      ;; SERVER: 172.16.100.10#53(172.16.100.10)
      ;; WHEN: Wed Aug 27 19:35:57 2014
      ;; MSG SIZE  rcvd: 116
      
      [root@localhost named]# host -t PTR 172.16.100.10
      10.100.16.172.in-addr.arpa domain name pointer ns.bob.org.
      10.100.16.172.in-addr.arpa domain name pointer



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章