DNS实战

Posted yaowx

tags:

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

DNS简介

DNS(Domain Name System 域名系统):DNS将域名和IP地址相互映射的一个分布式数据库,能够让人更方便的访问互联网。DNS使用TCP和UDP的53端口。简单的来说DNS就是完成域名到IP的解析过程。

主机名和域名的区别:

主机名是内网的名字;域名是外网的名字。

主机名和域名其实是两个完全可以不同的名字,但是有很多软件(如邮件系统postfix)会默认认为它们一致。

在DNS中,域名包括根域、顶级域、二级域和主机名。如下图

全世界共有13台DNS根域服务器。

顶级域:由Internet名称授权机构管理,有两种常见的类型。如下:

组织域:

.com(商业) 、 .org (组织) 、 .edu(教育) 、 .gov (政府) 、 .net(通讯) 、 .mil(军事) 、 .info(信息)

国家或地区顶级域:

Cn(中国) 、 hk(中国香港) 、 uk(英国) 等

FQDN=主机名.DNS后缀(FQDN,Fully Qualified Domain Name,完全合格的域名/全称域名)

 

DNS解析过程

  1. 客户端访问某个网站,请求域名解析,首先查找本地的HOSTS文件,有对应的域名、IP记录,则直接返回给客户端;没有则将该请求发送给本地的DNS服务器。
  2. 本地DNS服务器能够解析客户端发来的请求(有相应的域名与IP记录),则直接将结果返回给客户端。
  3. 本地的服务器不能解析客户端发来的请求(没有相应的域名与IP记录),分为以下两种方式来查找客户端的请求。

1)   递归解析:

本地DNS服务器向根域名服务器发送请求,根域名服务器对本地域名服务器的请求进行解析,得到记录再发送给本地DNS服务器,本地DNS服务器将结果记录缓存,并将记录返给客户端。

2)   迭代解析:

本地DNS服务器向根域名服务器发出请求,根域名服务器返回给本地域名服务器一个能够解析请求的根的下一级域名服务器的地址,本地域名服务器再向根返回的IP地址发送请求(下一级域名服务器也有可能返回一个可以解析请求的下下一级的域名服务器地址,依次类推),最终得到域名解析记录,本地DNS服务器将结果记录缓存,并将记录返给客户端。

DNS服务器的种类

1)   master(主DNS服务器):拥有区域数据的文件,并对真整个区域数据经行管理。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。

2)   slave(从服务器或辅助服务器):拥有主DNS服务器的区域文件的副本,辅助DNS服务器对客户端的请求进行解析,当主DNS服务器出现故障后后,可以完全接替主服务器的工作。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。

3)   forward:将任何查询请求都转发给其它服务器。起到一个代理的作用。

4)   cache:缓存服务器。

5)   hint:根DNS internet服务器集。

 

DNS服务器的安装部署

DNS Server 10.0.0.240

DNS Client 10.0.0.8

 

1、安装Bind DNS软件包

yum install -y bind*

 

2、配置文件详解

DNS配置的主要文件组

/etc/hosts  主机的一个文件列表   添加记录如:111.13.100.92   www.baidu.com

对于简单的主机名解析(点分表示法),默认在请求DNS或NIS网络域名服务器前,/etc/named.conf 通常会告诉程序先查看此文件。

/etc/resolv.conf  转换程序配置文件

在配置程序请求BIND域名查询服务查询主机名时,必须告诉程序使用哪个域名服务器和IP地址来完成这个任务

/etc/named.conf  BIND主文件

设置一般的name参数,指向该服务器使用的域数据库的信息源

/var/named/named.ca  根域名配置服务器指向文件

指向根域名配置服务器,用于告诉缓存服务器初始化

/var/named/localhost.zone    localhost区正向域名解析文件

用于将本地IP地址(127.0.0.1)转换为本地回送IP地址(127.0.0.1)

/var/named/name.local  localhost区反向域名解析文件

用于将localhost名字转换为本地回送IP地址(127.0.0.1)

/etc/named.rfc1912.zones  区块设置文件

 

主配置文件named.conf详解

options {

        listen-on port 53 { any; };

        listen-on-v6 port 53 { any; };

        //指定配置文件所在目录,必须配置

        directory       "/var/named";

        //保存DNS服务器搜索到的对应IP地址的高速缓存

        dump-file       "/var/named/data/cache_dump.db";

        //DNS的一些统计数据列出时就写入这个配置指定的文件中。即搜集统计数据

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

        //是否允许查询,或允许哪些客户端查询,可以把any换成网段地址,设置允许哪些客户端查询

        allow-query     { any; };

        //是否允许master的信息传到slave服务器,只有同时拥有master和slave服务器是才设置此项。none为不允许

       //aloe_transfer(none;);

       //设置向上查找的哪个“合法”的DNS。地址之间要用“;”分割。(本地DNS无法解析时,转发到一个指定的NDS服务器上去解析)

       //forwarders{192.168.3.11;192.168.3.44;}

       //DNS服务器只作为转发服务器,自身不做查询

       //forward only

       //当主服务器变更时,向从服务器发送信息。只有yes和no

       //motify yes

       //递归查询,默认开启

recursion yes;

//sec功能,与安全加密传输相关的选项,可注释掉

        dnssec-enable yes;

//sec功能,与安全加密传输相关的选项,可注释掉

        dnssec-validation yes;

bindkeys-file "/etc/named.root.key";

 

        managed-keys-directory "/var/named/dynamic";

        //用于记录named程序的PID文件,可在named启动、关闭时提供正确的PID

        pid-file "/run/named/named.pid";

session-keyfile "/run/named/session.key";

};

 

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

 

zone "." IN {

        type hint;

        file "named.ca";

};

//type类型有3中:

//第一种为:master 主域名服务器

//第二种为:slave 辅助域名服务器

//第三种为:hint 互联网中的根域名服务器

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

include "/etc/named.root.key";

                                            

 

配置/etc/named.rfc1912.zones文件(用于根区域和自定义区域)

//add named by www.ywx.net

//定义正向解析文件,此处以域ywx.net域为例

zone "ywx.net" IN {

        //定义服务器的类型

        type master;

        //指定正向解析文件名

        file "ywx.net.zone";

        allow-update { none; };

};

 

//定义反向解析文件

zone "0.0.0.10.in-addr.arpa" IN {

        //定义服务器类型

        type master;

        //反向解析文件名

        file "ywx.net.arpa";

        allow-update { none; };

};

//type类型有3中:

//第一种为:master 主域名服务器

//第二种为:slave 辅助域名服务器

//第三种为:hint 互联网中的根域名服务器

 

在/var/named/目录下创建配置ywx.net.zone正向解析文件

vim /var/named/ywx.net.zone

$TTL 86400

@ IN SOA www.ywx.net. root. (

        42 ; serial

        3H ; refresh

        15M ; retry

        1W ; expire

        1D ) ; minimum

@    IN NS ns.ywx.net.

ns    IN A  10.0.0.240

www  IN A  10.0.0.240

@    IN MX 10 mail.ywx.net

mail  IN  A  10.0.0.240

 

在/var/named/目录下创建ywx.net.arpa反向解析文件

vim /var/named/ywx.net.arpa

$TTL 86400

@ IN SOA www.ywx.net. root. (

42 ; serial

        3H ; refresh

        15M ; retry

        1W ; expire

        1D ) ; minimum

@  IN NS ns.ywx.net.

240 IN PTR mail.ywx.net.

240 IN PTR ns.ywx.net.

240 IN PTR www.ywx.net.

 

3、重启named并在客户端测试

检测语法

named-checkconf /etc/named.conf

named-ckeckzone ywx.net /var/named/ywx.net.zone

named-ckeckzone ywx.net /var/named/ywx.net.arpa

 

重启

systemctl restart named.service

 

在客户端测试

在客户端安装nslookup、dig等命令

yum install -y bind-utils

 

把客户端的DNS更改为DNS服务器10.0.0.240,把其它DNS服务器注释掉

vim /etc/resolv.conf

server 10.0.0.240

 

测试结果

[root@mysql ~]# nslookup www.ywx.net

Server:       10.0.0.240

Address:   10.0.0.240#53

 

Name:  www.ywx.net

Address: 10.0.0.240

 

[root@mysql ~]# dig www.ywx.net

 

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> www.ywx.net

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22125

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

 

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.ywx.net.        IN  A

 

;; ANSWER SECTION:

www.ywx.net.      86400  IN  A   10.0.0.240

 

;; AUTHORITY SECTION:

ywx.net.      86400  IN  NS  ns.ywx.net.

 

;; ADDITIONAL SECTION:

ns.ywx.net.       86400  IN  A   10.0.0.240

 

;; Query time: 0 msec

;; SERVER: 10.0.0.240#53(10.0.0.240)

;; WHEN: Fri Oct 04 14:46:03 CST 2019

;; MSG SIZE  rcvd: 89

 

DNS正反向文件详解

$TTL 86400设置有效地址解析记录的默认缓存时间。

 

@ IN SOA ns.ywx.net. root.

设置SOA标记(起始授权机构的资源记录,描述了域名的管理员、电子邮件地址,和一些时间参数,比如通过dig命令来查询SOA记录:dig @10.0.0.240 www.ywx.net);@代表域名本身;ns.ywx.net.是你设置的域名;root.是你的管理员邮箱。

 

42 ; serial :本行前面的数字表示配置文件的修改版本,格式是修改的次数,每次修改这个配置文件时都应该修改这个数字,要不然你所作的修改不会更新到网上的其它DNS服务器的数据库上。即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就不会反映出你的更新。也就对他们来说你更新是没有意义的。辅助服务器对比发现与自己不同后,就会做出更新,与主服务器同步。

 

3H ; refresh:定义的是以为单位的刷新频率即规定从域名服务器多长时间查询一个主服务器,以保证从服务器的数据是最新的 。

 

15M ;retry :上面的这个值是规定了以小时为单位的重试的时间间隔,即当从服务试图在主服务器上查询更新时,而连接失败了,则这个值规定了从服务多长时间后再试 。

 

1W ;expiry :失效时间,以周为单位,超过该时间仍无法更新地址数据库,则不再尝试。

 

1D );minimum:无效地址解析记录的默认时间,以小时为单位,上面这个数据用来规定缓冲服务器不能与主服务联系上后多长时间清除相应的记录。

 

@ IN NS www.ywx.net.表示主机的域名字是什么

 

ns IN A 10.0.0.240表示设置域名服务器的A记录,其地址为10.0.0.240

 

www IN A 10.0.0.240 表示www的一个A记录,其地址为10.0.0.240(www服务器的IP地址)

 

bbs IN CNAME www.ywx.net. 表示www.ywx.net的别名为bbs.ywx.net

 

@ IN MX 10 10.0.0.240 表示一条邮件记录

 

 

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

DNS查询实战

Linux搭建DNS实战一

DNS构建实战(下篇)

DNS tunnel的原理及实战

DNS集群搭建实战

DNS 服务架构之综合实战