Linux下DNS服务器部署

DNS介绍

在互联网中使用IP地址唯一的标识一台计算机,IP地址有两个版本,IPV4和IPV6,IPV4地址由32位二进制组成的,采用的是点分10进制表示的,分为4个字段,每个字段的范围都是0-255.但是这种表示方法对于我们来说记忆起来不是很方便,我们在浏览一个网站的时候,输入的并不是IP地址,而是URL,系统会通过一个称为名称解析系统将IP地址和主机名做一个映射,这个名称解析系统有多种类型,如WINS、HOSTS文件以及这里所要讲的DNS。究竟是通过哪个来进行名称解析的呢?这是通过NSS(Name Service Switch)来控制的,NSS是名称解析服务的一个框架,NSS的配置文件为/etc/nsswitch.conf。
在早期的TCP/IP网络中,名称解析工作是通过HOSTS文件来进行维护的,hosts文件是一个纯文本文件,维护着主机名和IP地址的对应关系,hosts文件的格式如下:

IP_address   FQDN    [aliases...]
IP地址    权威的主机名   别名

[root@vm1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@vm1 ~]# 

DNS查询过程

DNS查询过程是指通过DNS服务器将一个FQDN解析为IP地址或者是将IP地址解析为FQDN或者是查询一个区域邮件服务器的过程。

正向查找:将FQDN解析为IP地址
反向查找:将IP地址解析为FQDN

  • 查询方式

    1. 递归查询:发生在DNS客户端和DNS服务器之间。当DNS服务器收到DNS客户端的一个查询请求时,要么做出查询成功的响应,要么做出查询失败的响应。只发出一次请求。

    2. 迭代查询:发生在DNS服务器和DNS服务器之间。DNS服务器根据自己的缓存文件或者是区域数据,以最佳结果响应。如果DNS服务器无法进行解析,则会向根DNS服务器发出查询请求,请求顶级域DNS服务器的地址,然后在一级级的查找,直到查询超时或查询结果不存在为止。可能会发出多次请求。

权威DNS服务器返回结果有两种:
肯定答案:TTL
否定答案:TTL

递归:应该只给允许的客户端执行递归查询。

DNS资源记录类型

DNS服务器在提供名称解析时,会查询自己的数据库,在该数据库中包含了DNS区域资源信息的资源记录(resource record,RR)。常见的资源记录如下:
SOA(Start of Authority Record起始授权记录): 在一个区域中是唯一的,定义了一个区域的全局参数,进行整个区域的管理。
NS(Name Server名称服务器):在一个区域中至少有一条,记录了一个区域中的授权的DNS服务器。
A(Address地址记录):记录了FQDN和IP地址的对应关系。
CNAME(Canonical Name别名记录):别名记录。可以隐藏内部网络的细节。
PTR:反向记录,将IP地址映射到FQDN。
MX(Mail eXchange):邮件交换记录。指向一个邮件服务器,根据收件人的地址后缀决定邮件服务器。

  • SOA资源记录定义方法
区域名称  网络类型  SOA  主域名服务器的FQDN  管理员邮箱  (
                                            序列号;Serial
                                            刷新间隔;refresh
                                            重试间隔;retry
                                            过期时间;expire
                                            TTL)

区域名称:@表示当前区域

网络类型:通常设置为IN

主域名服务器的FQDN: 区域中的master DNS服务器的FQDN,如ns1.frame.com.

管理员邮箱:用.代替@,如admin.frame.com

序列号:用于区域复制的依据。slave根据这个序列号来判断master的区域配置文件有没有发生变化。常用形式是YYYYMMDDCC,YYYY表示年,MM表示月,DD表示天,CC表示当天变化的次数。

刷新间隔:slave DNS服务器请求与master DNS服务器同步的等待时间。当刷新间隔到期后,slave DNS服务器请求master DNS服务器的SOA记录的副本,然后Slave DNS服务器将master DNS服务器的序列号与本地SOA记录的序列号比对,如果比本地的序列号大,则slave DNS服务器请求与Master进行区域传输。

重试间隔:slave DNS服务器在请求失败后,多长时间进行重试。要短于刷新间隔。

过期时间:如果这个时间到期后,辅助DNS服务器还是无法和master DNS服务器进行区域传输,则辅助DNS服务器就会把本地数据当作不可靠数据,不会为客户端提供查询功能。

TTL:这个TTL为否定答案的TTL。所谓的否定答案,即客户端请求了服务器端不存在的主机名后,所返回的TTL缓存时间值。
  • NS记录
区域名称 IN NS  FQDN
  • A记录
FQDN   IN  A  IP地址
  • CNAME记录
别名   IN  CNAME  FQDN(正式名称)
  • MX记录
区域名   IN   MX  优先级  邮件服务器的FQDN

说明:
优先级的范围是0-99,数字越小,优先级越高。
  • PTR记录
IP地址的主机号 IN   PTR   FQDN

bind的安装和配置

bind概述

在Linux系统中提供DNS服务的软件是Bind,也是最常用的软件,几乎90%的DNS服务器都是采用BIND。
DNS服务器采用的端口是UDP 53端口和TCP 53端口。

UDP 53端口:用于名称解析。
TCP 53端口:用于区域传输。

因此在配置防火墙时要同时放行TCP和UDP的53端口。

bind安装

bind:bind的主程序软件包,进程名为named
bind-chroot:为bind提供chroot功能,将bind进程限制在自己的家目录下,防止错误的权限设置影响到整个系统。
bind-utils:提供一些工具。如dig

查询是否已经安装了bind:
[root@vm1 ~]# rpm -qa | grep bind
[root@vm1 ~]# 

安装bind:
[root@vm1 ~]# yum install -y bind bind-chroot bind-utils

bind配置

全局配置文件:named.conf
如果没有使用chroot机制的话,则全局配置文件位于/etc/named.conf,如果使用了chroot机制的话,则全局配置文件位于/var/named/chroot/etc/named.conf。有没有使用chroot,对于bind的配置都是一样的,唯一的不同就是配置文件所在的路径不同了。
如果启用了chroot机制的话,且不希望bind的根目录为/var/named/chroot的话,则可以通过修改配置文件/etc/sysconfig/named中ROOTDIR来实现。

[root@vm1 ~]# grep '^ROOTDIR' /etc/sysconfig/named 
ROOTDIR=/var/named/chroot
[root@vm1 ~]# 
复制配置文件到chroot目录:

[root@vm1 ~]# cd /var/named/
[root@vm1 named]# ls -l
total 32
drwxr-x--- 6 root  named 4096 Nov 13 12:14 chroot
drwxrwx--- 2 named named 4096 Aug 27  2013 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves
[root@vm1 named]# mv d* named.* slaves/ chroot/var/named/
[root@vm1 named]# 
[root@vm1 named]# cp -a /etc/named.* /var/named/chroot/etc/
[root@vm1 named]# 

配置文件参数介绍

主配置文件参数(options块)

listen-on port:指定DNS监听的端口和地址。如果监听在本机的所有地址,可以用any。如listen-on port 53 { 172.17.100.1; };

listen-on-v6 port:指定DNS监听的IPV6的地址和端口。如listen-on-v6 port 53 { ::1; };

directory:指定区域数据文件所在的路径。默认为"/var/named"。如果使用了chroot,则该路径为相对路径,为/var/named/chroot/var/named

query-source port:指定DNS客户端在查询时必须使用的源端口。该参数通常不设置。

allow-query:允许哪些客户端进行
  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值