DNS服务器

时间:2024-03-24 22:08:17

DNS服务器

前言

  学习完搭建FTP服务器实现文件共享之后,我们讲进一步学习搭建DNS服务器实现域名解析,本节所讲内容主要包括DNS服务器常见概念,安装及相关配置文件,并且实战:为公司内网搭建一个DNS服务器。

 

一:DNS服务器概述及相关配置

1:DNS服务器是什么

DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。

注:DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。

其域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务。

 

2:DNS服务概述

2.1:域和域名

DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。

域名空间的每个域的名字,通过域名进行表示。

域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用.”分隔,对于    DNS google 来说,其完全正式域名(FQDN)为google.com.  

例如:googlecom域的子域,其表示方法为google.com,而wwwgoogle域中的子域,可以使用www.google.com表示。

注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z

和减号(-)。点号(.)只允许在域名标志之间(例如google.com”)或者FQDN 的结尾使用。

域名不区分大小。由最顶层到下层,可以分成:根域、*域、二级域、子域。

 

nternet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。

“.”全球有13个根(root)服务器10台在美国 另外3台分别在英国 瑞士 日本

DNS 根域下面是*域,也由Internet 域名注册授权机构管理。共有种类型的*域。

组织域:

采用个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为*机构组织,mil 为军事机构组织,net 为网络机构组

织,org 为非营利机构组织,int 为国际机构组织。

地址域:

采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。

反向域:

这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。

2.2:(Zone) ,资源记录

区是DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录。

使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。

2.3:主域名服务器与辅助域名服务器

当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,查看区数据是否改变。如果改变了,它就启动一次数据更新传输。

每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。

 

3:辅助服务器的优点:

3.1:容错能力

配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主

服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能

查询另一个子网上的名称服务器。

3.2:减少广域链路的通信量

如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机

配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。

3.3: 减轻主服务器的负载

辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。

3.4: DNS 服务器

运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。

3.5: DNS 缓存

DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当

其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。

当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

 

4:DNS查询方式-- 递归查询和迭代查询

4.1: 看一个DNS查询过程

通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的

DNS服务器 

 

4.2: 两种查询方式

4.2.1: 递归查询.一次沟通完。

递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一

个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询

问其他服务器,并将返回的查询结果提交给客户机

4.2.2: 迭代查询

DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

总结:一般情况下,从PC客户端到本地DNS服务器是属于递归查询。而DNS服务器之间就是的交互查询就是迭代查询。

 

4.3: 两种解析方式

4.3.1:正向解析:

正向解析是指域名到IP 地址的解析过程。

4.3.2:反向解析:

反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。

 

5: DNS资源记录

5.1SOA 资源记录

每个区在区的开始处都包含了一个起始授权记录Start of Authority Record,简称SOA 记录。

SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录

5.2NS 资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。

5.3资源记录

地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。

5.4PTR 资源记录

相对于资源记录,指针(PTR)记录把IP地址映射到FQDN 用于反向查询,通过IP地址,找到域名。

5.5:CNAME 资源记录

别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。

 

二:DNS服务相关配置 

BIND服务相关配置文件

/etc/named.conf DNS服务器的主配置文件,BIND软件构建服务器时,其配置文件中主要有两种类型的配置文件:一类是主配置文件,用于设置named服务的全局配置。另一类是区域数据文件,用于存放某个DNS区域的地址解析记录。

 

1:主配置文件

 [[email protected] ~]# vim /etc/named.conf

options {

        listen-on port 53 { 127.0.0.1; }; #监听的端口和IP地址

        listen-on-v6 port 53 { ::1; }; #用于IPV6地址

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

        allow-query     { localhost; }; #允许解析本地DNS服务器的

        recursion yes;

上述配置内容中的dump-filestatistics-filememstatistics-file 等配置项用于指定缓存数据库的文件,状态专题太统计文件的位置。

 

2:区域配置部分

[[email protected] named]# vim /etc/named.rfc1912.zones

zone "." IN {   #区域为根

        type hint; #类型为根区域

        file "named.ca"; 区域文件所存放的位置,默认地址在 /var/named/named.ca

};

 

zone "localhost" IN {  #正向解析(localhost)区域

        type master; #类型为主区域

        file "named.localhost"; #主区域配置文件的存放位置

     allow-transfer { 173.16.16.2; }; #允许从本地下载的主服务器地址

        allow-update { none; };

};

 

zone "1.0.0.127.in-addr.arpa" IN { #反向解析(1.0.0.127)区域

        type slave;  #类型为从区域

        file "named.loopback"; #从区域配置文件的存放位置

        allow-update { none; };

};

注释:

1):每个zone区域都是可选的(包括根域,回环域和方向域)

2):方向区域的名称由倒序的网络地址和 “in-addr.arpa”组合而成

3):file 配置项用于指定本区域的区域文件,其区域文件的文件名称由管理员设定

 

3:区域数据配置文件

在上个主配置文件中,指定其区域数据配置文件默认是放在/var/named/目录下的,因此区域数据配置文件通常都是放在这里的,每一个区域数据文件都对应一个DNS解析区域,

根域“.”的区域配置文件是比较特殊的,网络中所有的DNS服务器都是用同一份根区域数据文件,全球只有13个根域。

3.1:存放区域配置文件目录及内容

[[email protected] ~]# ls /var/named/

chroot  dynamic   named.empty      named.loopback

data    named.ca  named.localhost  slaves

注释:

1):slaves         是从服务器的配置文件

2):named.ca      是根域的配置文件

3):named.empty   是所有与配置文件的模板

4):named.localhost 是正向解析域的配置文件---主服务器通常都用它

5):named.loopback 是反向解析域的配置文件---主服务器通常都用它

 

3.2:区域配置文件内容

1):[[email protected] named]# vim named.ca

;; ANSWER SECTION:

.                       518400  IN      NS      M.ROOT-SERVERS.NET.

.                       518400  IN      NS      A.ROOT-SERVERS.NET.

……….

………

.                       518400  IN      NS      K.ROOT-SERVERS.NET.

.                       518400  IN      NS      L.ROOT-SERVERS.NET.

 

2):[[email protected] named]# vim named.localhost

2.1:TTL配置及SOA记录部分

$TTL 1D  #有效解析记录的生存周期

@       IN SOA  xuegod.cn  admin.xuegod.cn. ( # “@”表示解析域的名称,admin.xuegod.cn.:邮箱地址

0       ; serial   # 更新的***,服务器更新内容后,要上调需利好

1D      ; refresh  # 刷新时间

1H      ; retry   # 下载失败后的重试时间间隔

1W      ; expire  #失效时间,超过该时间之后则无法重新下载

3H )    ; minimum #无效解析记录的生存周期

2.2:地址解析记录部分

@      NS      ns.xuegod.cn

        MX  10  mail.xuegod.cn

WWW   A      127.0.0.1 

mail     A      192.168.21.2

ftp   CNAME    www

 

注释:

1):NS域名文件服务器(Name Server),记录当前区域的DNS服务器的主机地址

2):MX邮件交换,记录当前邮件服务器的主机地址,数字10(表示当前有多个MX记录)选择邮件服务器的优先级,数字越小优先级越高。

3):A+地址 记录正向解析条目,如:“WWW A 127.0.0.1”表示域名www.xuegod.cn对应的IP地址是 127.0.0.1

4):CNAME别名 ,表示记录正向解析的其他名称,如:“ftp  CNAME  www”表示域名ftp.xuegod.com是www/xuegod.cn的别名。

5):[[email protected] named]# vim named.loopback

$TTL 1D

@  INSO  xuegod.  cadmin.xuegod.cn. (                                      

  0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      @

        A       127.0.0.1

        AAAA    ::1

2       PTR     www.xuegod.cn 

5       PTR     ftp.xuegod.cn 

其中NS MX记录的首行中的“@”符号是可以省略的(默认继承SOA记录首行的@信息),在方向区域数据文件中,不会用到A地址记录,而是用PTR指针记录。 在使用PTR记录时,第一列中指明对应的IP地址,只需要写部分就可以的了,其中“2 PTR www.xuegod.cn 

”就表示,IP地址为192.168.1.2的主机域名为www.xuegod.cn

 

三:实战案例

1:实验要求

  企业要搭建一台简单的DNS服务器,实现公司的域名解析xuegod.cn及利用主从网关实现负载均衡,并且要进行安全认证。

2:实验环境

  主服务器:xuegod63    IP地址:192.168.1.63

  从服务器:xuegod64    IP地址:192.168.1.64

3:实验拓扑

DNS服务器

4:实验步骤

4.1DNS主服务器

4.1.1:修改主配置文件

[[email protected] ~]#vim/etc/named.conf

options {

listen-on port 53 { any; };

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

allow-query     { any; };

recursion yes;

……….

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

};

 

4.1.2:修改区域配置文件

[[email protected] ~]# vim /etc/named.rfc1912.zones

zone "xuegod.cn" IN {

type master;

file "xuegod.cn.zone";

allow-transfer { 192.168.1.0/24; };

};

allow-update { none; }; #删掉

 

4.1.3:创建区域数据配置文件并修改

[[email protected] named]# cp -p named.localhost xuegod.cn.zone #要加-p 把权限也要复制过来

[[email protected] named]# ll -h xuegod.cn.zone

-rw-r----- 1 root named 275 Dec  3 06:10 xuegod.cn.zone

[[email protected] named]# vim xuegod.cn.zone

$TTL 1D

xuegod.cn.IN SOAdns.xuegod.cn. root.xuegod.cn. (

2; serial

1D; refresh

1H; retry

1W; expire

3H ); minimum

xuegod.cn.NSdns.xuegod.cn.

dns.xuegod.cn.A192.168.1.63

www.xuegod.cn.A192.168.1.63

ftp.xuegod.cn.   CNAME   www.xuegod.cn.

www.xuegod.cn. 1  A 192.168.1.63

www.xuegod.cn. 1  A 192.168.1.64

www.xuegod.cn. 1  A 192.168.1.1

 

4.1.4:修改DNS地址

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0c:29:12:f3:74

TYPE=Ethernet

UUID=8f64859c-d43d-4247-9d3e-2d0e6bde9451

ONBOOT=yes

NM_CONTROLLED=yes

IPADDR=192.168.1.63

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=192.168.1.63

[[email protected]3 ~]# service network restart

 

4.1.5:测试

[[email protected] ~]# service named restart

[[email protected] ~]# ping www.xuegod.cn

PING www.xuegod.cn (192.168.1.63) 56(84) bytes of data.

64 bytes from 192.168.1.63: icmp_seq=1 ttl=64 time=0.013 ms

64 bytes from 192.168.1.63: icmp_seq=2 ttl=64 time=0.048 ms

 

 

4.2DNS从服务器

4.2.1:修改主配置文件

[[email protected] ~]# vim /etc/named.conf

options {

        listen-on port 53 { any; };

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

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

        allow-query     { any; };

        recursion yes;;

 

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

};

 

4.2.2:修改区域文件

[[email protected] ~]# vim /etc/named.rfc1912.zones

zone "xuegod.cn." IN {

        type slave;

        file "slaves/xuegod.cn.zone.file";

        masters { 192.168.1.63; };

};

 

4.2.3:修改DNS地址

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0c:29:de:f4:a1

TYPE=Ethernet

UUID=07f953ba-8898-4b94-a68c-1f180bb5030b

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.1.64

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=192.168.1.63

[[email protected] ~]# service network restart

 

4.2.4:测试DNS负载均衡功能

[[email protected] ~]# service named restart

[[email protected] ~]# ls /var/named/slaves/

xuegod.cn.zone.file

[[email protected] slaves]#vim xuegod.cn.zone.file

$ORIGIN .

$TTL 86400; 1 day

xuegod.cnIN SOAdns.xuegod.cn. root.xuegod.cn. (

4          ; serial

86400      ; refresh (1 day)

3600       ; retry (1 hour)

604800     ; expire (1 week)

10800      ; minimum (3 hours)

)

NSdns.xuegod.cn.

$ORIGIN xuegod.cn.

dnsA192.168.1.63

ftpCNAMEwww

$TTL 1; 1 second

wwwA192.168.1.63

    A192.168.1.64

    A192.168.1.1

DNS服务器 

 

4.2.5:测试DNS备份功能

[[email protected] ~]# vim /var/named/xuegod.cn.zone #添加以下内容

mail.xuegod.cn. A 192.168.1.63

[[email protected]3 ~]# service named restart

由于设置了1天的时间更新,所以不能立即备份。删除再重启,即可验证效果。

[[email protected] slaves]# rm -rf xuegod.cn.zone.file

[[email protected] ~]# service named restart

DNS服务器 

4.2.6DNS主从**认证

 

1): 确保时间主从同步

[[email protected] named]# date

Fri Dec  4 06:00:40 EST 2015

[[email protected] slaves]# date

Fri Dec  4 06:00:53 EST 2015

 

2): DNS服务器生成秘钥,进行主从认证

[[email protected] ~]# rpm -qf `which dnssec-******`

bind-9.8.2-0.17.rc1.el6_4.6.x86_64

[[email protected] chroot]# pwd

/var/named/chroot

[[email protected] chroot]# dnssec-****** -a hmac-md5 -b 128 -n HOST abc  #生成一对 对称钥匙

Kabc.+157+45442

[[email protected] chroot]# ls

dev  etc  Kabc.+157+45442.key  Kabc.+157+45442.private  usr  var

注释:

 -a hmac-md5:采用hmac-md5加密算法。

    -b 128:生成的**长度为128位。

-n **类型。我们选择主机类型:HOST 。

-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER

        (DNSKEY generation defaults to ZONE)

   abc #为生成**的名字

注意:生成时速度有点慢,因为生成**需要一些随机事件,因此我们可以通过移动鼠标或find /”执行来产生一些随机事件,等待大约2分钟,查看生成的**对:

 

[[email protected] chroot]# cat Kabc.+157+45442.private

Private-key-format: v1.3

Algorithm: 157 (HMAC_MD5)

Key: rUNplFvWw811PnwifZYGcg== #这是**

Bits: AAA=

Created: 20151204112514

Publish: 20151204112514

Activate: 20151204112514

[[email protected] chroot]# cat Kabc.+157+45442.key

abc. IN KEY 512 3 157 rUNplFvWw811PnwifZYGcg== #这是** 

 

3): 修改主DNS配置:

[[email protected] ~]# vim /etc/named.rfc1912.zones  #添加并修改

key abckey {          

        algorithm hmac-md5;

        secret "rUNplFvWw811PnwifZYGcg==";

 };

 

zone "xuegod.cn." IN {

type master;

file "xuegod.cn.zone";

allow-transfer { key abckey; };

};

4):从DNS 服务器

[[email protected] slaves]# vim /etc/named.rfc1912.zones  #添加并修改

key abckey {    

        algorithm hmac-md5;

        secret "rUNplFvWw811PnwifZYGcg=="; #主服务器的秘钥

};

 

zone "xuegod.cn." IN {

        type slave;

        file "slaves/xuegod.cn.zone.file";

        masters { 192.168.1.63 key abckey; };

};

 

5):主从重启服务

[[email protected] slaves]# rm -rf xuegod.cn.zone.file

[[email protected] ~]# service named restart

[[email protected] ~]# service named restart

 

6):测试

[[email protected] slaves]# pwd

/var/named/slaves

[[email protected] slaves]# ls

xuegod.cn.zone.file

[[email protected] slaves]# cat xuegod.cn.zone.file

$ORIGIN .

$TTL 86400; 1 day

xuegod.cnIN SOAdns.xuegod.cn. root.xuegod.cn. (

4          ; serial

86400      ; refresh (1 day)

3600       ; retry (1 hour)

604800     ; expire (1 week)

10800      ; minimum (3 hours)

)

NSdns.xuegod.cn.

$ORIGIN xuegod.cn.

dnsA192.168.1.63

ftpCNAMEwww

mailA192.168.1.63

$TTL 1; 1 second

wwwA192.168.1.63

A192.168.1.64

A192.168.1.1

 

DNS服务器 

 

5:测试工具:nslookup 测试域名解析

 

5.1:非交互式模式

语法: nslookup 域名或IP 地址

[[email protected] ~]# nslookup www.xuegod.cn

Server:192.168.1.63

Address:192.168.1.63#53

Name:www.xuegod.cn

Address: 192.168.1.1

Name:www.xuegod.cn

Address: 192.168.1.63

Name:www.xuegod.cn

Address: 192.168.1.64

 

[[email protected] ~]# nslookup g.cn

Server:192.168.1.63

Address:192.168.1.63#53

Non-authoritative answer:

Name:g.cn

Address: 203.208.40.148

Name:g.cn

Address: 203.208.40.144

Name:g.cn

Address: 203.208.40.147

Name:g.cn

Address: 203.208.40.146

Name:g.cn

Address: 203.208.40.145

 

5.2:交互模式

[[email protected] ~]# nslookup

> www.xuegod.cn

Server:192.168.1.63

Address:192.168.1.63#53

Name:www.xuegod.cn

Address: 192.168.1.63

Name:www.xuegod.cn

Address: 192.168.1.64

Name:www.xuegod.cn

Address: 192.168.1.1

> g.cn

Server:192.168.1.63

Address:192.168.1.63#53

Non-authoritative answer:

Name:g.cn

Address: 203.208.40.144

Name:g.cn

Address: 203.208.40.147

Name:g.cn

Address: 203.208.40.146

Name:g.cn

Address: 203.208.40.145

Name:g.cn

Address: 203.208.40.148









本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1880164,如需转载请自行联系原作者