DNS域名解析服务(一)

一、DNS 系统的作用

1、DNS服务器概述

FQDN格式(完整域名格式):在常见域名后添加 "." (根域)。列如:www.baidu.com.

DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名;与IP地址的对应关系,以便为客户程序

提供正向或反向的地址查询服务,即正向解析与反向解析。

(1)正向解析:根据域名查IP地址,是DNS服务最常用的基本功能

(2)反向解析:根据IP地址查域名,不是很常用,应用于例如反垃圾邮件的验证等

每台DNS服务器都负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址

称为 " zone "(区域)。

主机名结构

主机名.二级域名.顶级域名.(根域)

2、DNS服务器的常见分类

根据地址解析的方向不同,DNS区域相应的分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)。

根据管理的区域地址数据的来源不同,DNS系统可以分为不同的类型:

(1)缓存域名服务器

只提供域名解析结果的缓存功能,目的在于提高数据查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置

根域或指定其他DNS服务器作为解析来源。

(2)主域名服务器

维护某一个特定DNS区域的地址数据库,对其中的解析纪录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,

需要自行建立所有负责区域的地址数据文件。

(3)从域名服务器

与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询结果

都是一样的。

PS:同一台DNS服务器,可以是 " .chinaunix.net " 区域的主域名服务器,同时也可以是 " .cublog.cn " 区域的从域名服务器。

3、DNS服务器的查询模式

(1)DNS服务器递归查询:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的唯高速缓存中查询出结果,反馈给客户机,此过程称为

递归查询,即Client-Server。

(2)DNS服务器迭代查询:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的唯高速缓存中查询发现没有结果,此时该DNS服务器以

DNS客户的身份向其他DNS服务器发送解析请求或向根域名服务器发送请求,此过程称为迭代查询,即Server-Server。

PS:DNS协议运行在TCP/UDP协议上,端口:TCP/UDP 53 端口 。

4、DNS解析过程

1、浏览器先检查自身缓存中有没有被解析过的这个域名对应的IP地址,如果有,解析结束。同时域名被缓存的时间也可通过TTL属性来重置。

2、如果浏览器缓存中没命中,浏览器会检查操作系统缓存中有没有对应的已解析过的结果。而操作系统也有一个域名解析的过程。在 windows 中可通过 c 盘里 hosts 文件来设置,

如果你在这里指定了一个域名对应的IP地址,那浏览器会首先使用这个IP地址。但是这种操作系统级别的域名解析规程也被很多黑客利用。通过修改你的 hosts 文件里的内容把特定

的域名解析到他指定的IP地址上,造成所谓的域名劫持。所以在 windows7 中将 hosts 文件设置成了 readonly,防止被恶意篡改。(Windows   C盘/windows/system32/drivers/etc/hosts)

3、如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,

一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

4、如果 LDNS 仍然没有命中,就直接跳到根域名服务器请求解析。

5、根域名服务器返回给 LDNS 一个所查询域的主域名服务器(GTLD Server, 国际顶尖域名服务器,如 .com 、.cn、.org等)地址。

6、此时 LDNS 再发送请求给上一步返回的 GTLD 。

7、接受请求的 GTLD 查找并返回这个域名对应的 Name Server 的地址,这个 Name Server 就是网站注册的域名服务器。

8、Name Server 根据映射关系表找到目标IP,返回给 LDNS。

9、LDNS 缓存这个域名和对应的IP。

10、LDNS 把解析的结果返回给用户,用户根据 TTL 值缓存到本地系统缓存中,域名解析过程完毕。

二、BIND 的安装和控制

1、RPM 包的主要作用

        bind:提供了域名服务器的的主要的程序与相关文件

   bind-utils:提供了对 DNS 服务器的测试工具程序,如 nslookup 等

   bind-libs:提供了 bind、bind-utils 需要使用的库函数

   bind-chroot:为 BIND 服务提供一个伪装的根目录(将/var/named/chroot文件夹作为 BIND 的根目录)以提高安全性。

也称为 jail(监牢)机制。(没什么用,可选软件包)

   BIND 安装以后,会自动增加一个名为 named 的系统服务

2、主配置文件 /etc/named.conf

[root@localhost ~]vi /etc/named.conf
"/etc/named.conf" 18L, 430C

options {

  listen-on port 53 { 192.168.66.13; };

  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";

  recursing-file "/var/named/data/named.recursing";

  secroots-file "/var/named/data/named.secroots";

  allow-query { any; };

  recursion yes;

};
zone "." IN {

  type hint;

  file "named.ca";
};


~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ :wq "/etc/named.conf" 18L, 430C written
[root@localhost ~]# named-checkconf /etc/named.conf
[root@localhost ~]#

[root@localhost ~]# cat /etc/named.conf
options {
             directory "/var/named";
};

zone "crushlinux.com" IN {
                 type master;
                 file "crushlinux.zheng";
                 allow-transfer { 192.168.200.112; };
};

zone "200.168.192.in-addr.arpa" IN {
                 type master;
                 file "crushlinux.fan";
                 allow-transfer { 192.168.200.112; };
};

[root@localhost ~]# named-checkconf /etc/named.conf     //检查语法

3、区域数据文件

区域文件用于存放某个DNS区域的地址解析记录(正向或方向记录)

(1)正向区域文件

[root@localhost ~]# cat /var/named/crushlinux.zheng
$TTL 86400
@   IN   SOA   crushlinux.com.   admin.crushlinux.com. (
      20190817                         // serial    序号
       3H                                 // refresh    更新间隔时间   
        15M                                // retry     更新失败再次尝试的间隔时间
         1W                                // expire    若一直失败,尝试1周后放弃
                         1D                                // minimum    失败解析记录缓存时间
)
   IN   NS       ns1.crushlinux.com.
      IN        NS       ns2.crushlinux.com.
           IN        MX 10       mail.crushlinux.com.
ns1     IN         A              192.168.200.111
ns2     IN         A              192.168.200.112
mail    IN         A              192.168.200.113
www   IN         A              192.168.200.114
study  IN         A              192.168.200.115
*         IN         A              192.168.200.111
ftp       IN         CNAME    www

(2)反向区域文件

[root@localhost ~]# cat /var/named/crushlinux.fan
$TTL 86400                                                               管理员邮箱
@   IN   SOA   crushlinux.com.   admin.crushlinux.com. (
      20190817
         3H
        15M
        1W
        1D
)
     IN     NS     ns1.crushlinux.com.
     IN     NS        ns2.crushlinux.com.
     IN     MX 10     mail.crushlinux.com.
111     IN   PTR     ns1.crushlinux.com.
112     IN   PTR    ns2.crushlinux.com.
113  IN   PTR    mail.crushlinux.com.
114  IN   PTR    www.crushlinux.com.
115  IN   PTR    study.crushlinux.com.
111  IN   PTR    ns1.crushlinux.com.

(3)区域数据文件修改后检查更新

[root@localhost ~]# named-checkzone  域名  区域数据文件的路径

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng
[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan

(4)区域数据配置文件的特殊应用

1>基于域名解析的负载均衡

同一域名可以对应到多个IP地址     //缓解单个服务器的压力

2>泛域名解析

找不到精确对应的 A 记录时,使用 “ * ” 进行匹配

原文地址:https://www.cnblogs.com/2567xl/p/11375425.html