admin管理员组文章数量:1567288
- DNS介绍
- DNS查询过程
- DNS资源记录类型
- bind的安装和配置
- bind概述
- bind安装
- bind配置
- 配置文件参数介绍
- 配置示例
- Master DNS服务器配置示例
- Slave DNS服务器配置示例
- TSIG
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
查询方式
递归查询:发生在DNS客户端和DNS服务器之间。当DNS服务器收到DNS客户端的一个查询请求时,要么做出查询成功的响应,要么做出查询失败的响应。只发出一次请求。
迭代查询:发生在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.
管理员邮箱:用.代替@,如admin.frame
序列号:用于区域复制的依据。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:允许哪些客户端进行
版权声明:本文标题:Linux下DNS服务器部署 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726533462a1074425.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论