BIND服务(DNS)搭建与配置

Posted wanao

tags:

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

DNS是什么

因特网上的主机有多种方式进行标识,其中一种方法为使用主机名(hostname),便于人们记忆,但是主机几乎没有提供关于主机在因特网中的位置信息。另一种方法为使用IP地址进行标识,IP地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,便于路由器处理。

为了能进行主机名到IP地址转换的目录服务,域名系统(Domain Name System)来了,它来了。DNS是:

  • 一个由分层的DNS服务器实现的分布式数据库;
  • 一个使得主机能够查询分布式数据库的应用层协议。

DNS服务器通常是运行BIND(Berkeley Internet Name Domain)的Unix机器,DNS协议运行在UDP之上,使用53号端口。

DNS并不直接与用户打交道,而是为因特网上的用户应用程序以及其他软件提供一种核心功能,即将主机名转换为IP地址;DNS通常由其它应用程序协议所使用,包括HTTP、SMTP、FTP。

除了提供主机名到IP地址的转换之外,DNS还提供了一些重要的服务:

  • 主机别名:复杂的主机别名的主机还能拥有一个或者多个别名。
  • 邮件服务器别名:电子邮件应用程序可以调用DNS,对提供的主机名别名进行解析,以获得该主机的规范主机名及其IP地址。
  • 负载分配:在冗余的服务器之间进行负载分配,一个IP地址集合与同一个规范主机名相联系。

DNS工作原理

DNS工作过程

  • 运行在用户主机上的某应用程序需要将主机名转换为IP地址,该应用程序调用DNS的客户端,并指明需要被转换的主机名。
  • 用户主机上的DNS接收到后向网络发送一个DNS查询报文(所有的DNS请求和回答报文使用UDP数据包通过端口53发送接收)。
  • ......(DNS解析过程)
  • 经过时延后,用户主机上的DNS接收到一个所希望映射的DNS回答报文,这个映射结果被传递到调用DNS的应用程序。

从用户主机上调用应用程序的角度看,DNS是一个提供简单、直接的转换服务的黑盒子,实现这个服务的黑盒子由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成。

分布式层次数据库

DNS使用了大量的DNS服务器,以层次的方式组织,且分布在世界范围内。大致有三种类型的DNS服务器:

  • 根DNS服务器:有400多个根域名服务器遍及世界,根域名服务器提供顶级域服务器的IP地址。
  • 顶级域DNS服务器:每个顶级域(com、org、net、edu、gov)和所有国家顶级域(cn、uk等)都有顶级域服务器(或服务器集群),顶级域服务器提供了权威服务器的IP地址。
  • 权威DNS服务器:在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将主机的名字映射为IP地址。

技术图片

 

 除了根、顶级域、权威DNS服务器,还有一种本地DNS服务器,严格地说本地DNS服务器并不属于DNS的层次结构中。主机的本地DNS服务器通常临近本主机,当主机发出DNS请求后,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中。

 DNS缓存

为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术。DNS缓存原理如下:

在请求链中,当一个DNS服务器接收到一个DNS回答时,DNS服务器能将回答中的信息缓存在本地存储器。这个缓存包含在回答中的任何信息,包括主机名/地址对。由于主机和主机名与IP地址间的映射不是永久的,因此DNS服务器在一段时间后(通常为两天)将丢弃缓存的信息。本地DNS服务器也可以缓存TLD服务器的IP地址(不仅仅是权威服务器的IP地址),因此允许本地DNS绕过查询链中的根DNS服务器。

DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射,每个DNS回答报文包含了一条或多条资源记录。资源记录是一个包含了下列字段的四元组:

(Name,Value,Type,TTL)

TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间,Name与Value的值取决于Type:

  • Type为A,则Name是主机名,Value是该主机名对应的IP地址。A记录提供了标准的主机名到IP地址的映射。
  • Type为NS,则Name是个域,Value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名。NS记录用于沿着查询链来路由DNS查询。
  • Type=CNAME,则Value是别名为Name的主机对应的规范主机名。CNAME记录向查询的主机提供一个主机名对应的规范主机名。
  • Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。MX记录可以使得一个公司的邮件服务器和其它服务器使用相同的别名。

 

安装BIND服务程序

 BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。

[root@bogon ~]# yum -y install bind-chroot

在生产环境中安装部署bind服务程序时加上chroot(牢笼机制)扩展包,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

bind服务程序比较关键的文件

  • 主配置文件/etc/named.conf:用来定义bind服务程序的运行
  • 区域配置文件/etc/named.rfc1912.zones:用来保存域名和IP地址对应关系的所在位置
  • 数据配置文件目录/var/named:用于保存域名和IP地址真实对应关系的数据配置文件

在Linux系统中,bind服务程序的名称为named,首先需要在/etc目录中找到该服务程序的主配置文件,将listen-on port 53与allow-query 的地址均修改为any。分别表示服务器上的所有IP地址均可提供DNS域名解析服务以及允许所有人对本服务器发送DNS查询请求。

[root@bogon ~]# vim /etc/named.conf  
12 options {
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };

bind服务程序的区域配置文件/etc/named.rfc1912.zones用来保存域名和IP地址所对应关系的所在位置。在这个文件中定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别指:

  • hint:根区域
  • master:主区域 — 主服务器
  • slave:辅助区域 — 从服务器

如果遇到bind服务启动失败的情况,可以执行named-checkconf命令和named-checkzone命令,分别检查主配置文件与数据配置文件中语法或参数的错误。

正向解析实验

在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。

1. 编辑区域配置文件

[root@bogon ~]# vim /etc/named.rfc1912.zones 
zone "test.com" IN {     zone语句用来设置一个区的选项
        type master;
        file "test.com.zone";    file用来指定具体存放DNS记录的文件
        allow-update {none;};
};

2. 编辑数据配置文件

从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后将域名和IP地址的对应数据填写数据配置文件中并保存。

[root@bogon ~]# cp -a /var/named/named.localhost /var/named/test.com.zone

编辑数据配置文件,并重启named服务程序使新的解析数据生效

[root@bogon ~]# vim /var/named/test.com.zone 

$TTL 1D   有效地址解析记录的默认缓存时间
@ IN SOA test.com. root.test.com. (  @代表域名本身
        0 ; serial  
        1D ; refresh
        1H ; retry
        1W ; expire
        3H ) ; minimum
   NS     ns.test.com.
ns   IN A   192.168.75.10

     IN MX 10   mail.test.com.

mail IN A   192.168.75.20
www  IN A   192.168.75.30

[root@bogon ~]# systemctl restart named

[domain] IN A [IP地址]:domain对应的IP地址

[domain] IN MX [优先度] [邮件服务器]:用于将邮件地址@符号后的域名指向邮件服务器

[domain] IN NS [DNS服务器]:指定域名该由哪个域名解析服务器进行解析

3. 检验解析结果

首先将Linux系统网卡中的DNS地址参数修改为本机IP地址,并重启网络

[root@bogon ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.75.158
nameserver 127.0.0.1
~                      

nslookup命令用于检测能够从DNS服务器中查询到域名与IP地址的解析记录

[root@bogon ~]# nslookup
> www.test.com
Server:        192.168.75.158
Address:    192.168.75.158#53

Name:    www.test.com
Address: 192.168.75.30
> ns.test.com
Server:        192.168.75.158
Address:    192.168.75.158#53

Name:    ns.test.com
Address: 192.168.75.10
> mail.test.com
Server:        192.168.75.158
Address:    192.168.75.158#53

Name:    mail.test.com
Address: 192.168.75.20

反向解析实验

在DNS域名解析服务中,反向解析是将用户提交的IP地址解析为对应的域名信息。

1. 编辑区域配置文件

[root@bogon ~]# vim /etc/named.rfc1912.zones 
zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.10.arpa";
};
反向解析是将IP地址解析成域名格式,因此定义zone时也应该把IP地址反写,只需写出网络位即可。

2. 编辑数据配置文件

[root@bogon ~]# cp -a /var/named/named.loopback /var/named/192.168.10.arpa
[root@bogon ~]# vim /var/named/192.168.10.arpa 
$TTL 1D
@       IN SOA  hawava.com root.hawava.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.hawava.com.
10      PTR     ns.hawava.com.   PTR为指针记录,仅用于反向解析   
10      PTR     mail.hawava.com.
10      PTR     www.hawava.com.
20      PTR     bbs.hawava.com.

3. 检验解析结果,系统网卡的DNS地址参数需为本机IP

[root@bogon ~]# nslookup
> 192.168.10.10
Server:        192.168.75.158
Address:    192.168.75.158#53

10.10.168.192.in-addr.arpa    name = ns.hawava.com.10.168.192.in-addr.arpa.
10.10.168.192.in-addr.arpa    name = www.hawava.com.
10.10.168.192.in-addr.arpa    name = mail.hawava.com.
> 192.168.10.20
Server:        192.168.75.158
Address:    192.168.75.158#53

20.10.168.192.in-addr.arpa    name = bbs.hawava.com.
> 192.168.20.0
Server:        192.168.75.158
Address:    192.168.75.158#53

** server cant find 0.20.168.192.in-addr.arpa.: NXDOMAIN

 

以上是关于BIND服务(DNS)搭建与配置的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7 搭建 DNS 域名解析服务器

DNS(BIND) 正向解析   反向解析 基本服务的搭建

Redhat6.5中搭建DNS域名解析服务

centOS7搭建DNS服务器配置详解

DNS和Bind配置指南

Linux搭建基于BIND的DNS服务器