CentOS7搭建DNS服务器
DNS是域名系统(Domain Name System)的缩写,它的作用是将主机名解析成IP(正向解析),从IP地址查询其主机名(反向解析)。
DNS的工作原理
(1)客户机发出查询请求
当被询问到有关本域中的主机名称的时候,DNS服务器会直接做出回答。如果所查询的主机名称属于其它域的话,则会检查缓存中有没有相关资料,如果没有发现则会转向root服务器查询,然后root服务器会将该域名的授权(authoritative)服务器(可能会超过一台)的地址告知本地服务器,然后会向其中的一台服务器查询,并将这些服务器名单存到缓存中以备将来之需(省去再向root查询的步骤)。
(2)远方服务器回应查询
将查询结果回应给客户,并同时将结果存储一个备份在自己的缓存里面,如果在存放时间尚未过时之前再接到相同的查询,则以存放于缓存里面的资料来做回应。
DNS服务器分类
1. Primary DNS Server 主域名服务器(master)
主域名服务器是一个域或区域的管理权威。这个服务器的主要责任就是解析域或区域内的所有主机的名称。可以使用一个或多个辅域名服务器作为主域名服务器的备份。
2. Secondary DNS Server 辅域名服务器(slave)
辅域名服务器是备份服务器。它们不是域区源数据存放的地方,但它们也授权响应域名的查询。辅域名服务器通常从域的主域名服务器获得域区数据。辅服务器也被称为从属服务器。域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步
3. Caching only Server 唯高速缓存服务器(hint)
缓存服务器负责临时存储主域名服务器己解析过域名记录。DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作
两个DNS服务器:一个做主域名服务器,一个做辅助域名服务器。系统用的是CentOS7.1(64bit)。
Linux上常用的是bind,包括以下软件包:
bind bind-libs bind-utils bind-chroot
bind是DNS服务器软件
bind-libs是bind使用的库
bind-utils是bind查询工具
一、安装DNS服务器
1.开始安装DNS服务器:
yum install bind-utils bind-chroot
我们这里一共安装了四个个文件,一个是bind的主程序,一个是bind的库文件,一个是bind-chroot,还有一个是bind-utils,这三个包一般我们在安装bind时都要用到的,包括bind的拓展功能以及伪根等等
BIND的服务名是 named,因为BIND提供的是DNS服务,而DNS默认的协议是TCP与UDP协议,所以BIND服务在启动以后会占用53(Domain), 953(mdc)这两个端口号
2.BIND配置文件:
安装完BIND以后,BIND的主配置文件通常是保存在两个位置:
/etc/named.conf -BIND服务主配置文件
/var/named/ -域的zone配置文件
但是我们如果在安装了 bind-chroot 这个程序以后,BIND的主配置文件存放位置就变了,此时BIND的主配置文件会被封装到一个伪根目录内,此时的配置文件位置为:
/var/named/chroot/etc/named.conf -BIND服务主配置文件
/var/named/chroot/var/named -域的zone配置文件
为什么安装了bind-chroot以后,BIND的主配置文件的存放位置变了呢?这里就涉及到了一个伪根的知识,chroot是通过将相关文件封装到一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,将只能访问到伪根目录内的内容,而并不是真实的根目录。我们知道Linux的根目录是 / ,我们的服务如果安装了chroot这个程序,此时我们的服务的配置文件都会被安装到我们的伪根里面,会在里面生成一个与原来服务完全相同的一个目录体系结构。我们知道 /var/named/chroot 这个肯定不是我们的根目录,但是如果在安装了chroot以后,该服务的根目录就会把 /var/named/chroot 当成是自己的根目录,这样就可以对我们的真实根目录进行保护,所以建议大家在安装网络服务时最好都附带安装上chroot这个程序
不同于其他的服务,BIND服务在安装完以后不会有预置的配置文件,其他服务比如samba、httpd服务安装完以后其目录下都会有一些配置文件,而BIND服务是没有的,怎么办呢?我们通常在安装完BIND服务以后,有关该服务的一些文档都会保存在 /usr/share/doc 这个目录下,在 (/usr/share/doc/bind-9.9.4/)这个目录下有我们BIND配置文件的模板,我们只需要将其拷贝到其伪根目录下即可:
cp /usr/share/doc/bind-9.9.4/sample/etc/* /var/named/chroot/etc
cp -a /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var
相关配置文件说明:
主配置文件:/var/named/chroot/etc/named.conf 设置一般的named参数,指向该服务器使用的域数据库的信息源。
根域名服务器指向文件:/var/named/chroot/var/named/named.root 指向根域名服务器,用于唯高速缓存服务器的初始配置。
正向解析文件:/var/named/chroot/var/named/localhost.zone localhost区文件,用于将名字localhost转换为本地回送IP地址(127.0.0.1),正向解析。
反向解析文件:/var/named/chroot/var/named/named.local localhost区文件,用于将本地回送IP地址(127.0.0.1)转换成名字localhost,反向解析。
3. 启动DNS服务器前准备:
执行/usr/sbin/dnssec-keygen来生成TSIG keys。然后替换named.conf中
secret “use /usr/sbin/dnssec-keygen to generate TSIG keys”;引号内的内容。
/usr/sbin/dnssec-keygen HMAC-MD5
cat Khmac-md5.+005+04392.key
编辑/var/named/chroot/etc/named.conf文件,添加TSIG keys:
vim /var/named/chroot/etc/named.conf
修改如下:
key ddns_key
{
algorithm hmac-md5;
secret “5L6JQccNVZ53CHA3iW4VnPgDZXdcX3U3pnhL2txKUsaPqwBRddE58LpA7uiI”;
};
添加好ddns_key后继续配置。
4. 设置/var/named/chroot/var/named/data目录的用户和组为named:named:
cd /var/named/chroot/var/named
chown named:named data
在/var/named/chroot/var/named/目录下新建一个dynamic目录
mkdir dynamic
5. 我们看到在named.conf文件中有这样几个区块:
options //设置data相关文件,对data/目录要有写的权限
logging //debug log
view “localhost_resolver” //本地解析,caching only nameserver
view “internal” //限定同一个局域网的内部用户使用
key ddns_key //设置ddns key
view “external” //限制外部用户请求这个DNS服务器
6.为/var/named/chroot/var/named目录添加写权限:
cd /var/named/chroot/var
chmod g+w named
如果这个目录没有写权限的话,named服务可以启动,但是系统日志里会有,”the working directory is not writable”错误。
7.修改name.conf中view “external”区域内设置:
vim /var/named/chroot/etc/named.conf
recursion yes; //打开递归
allow-query-cache { any; }; //允许查询缓存
8.再重启DNS服务器:
systemctl restart named
启动成功。
此时查看日志:
tail -30 /var/log/messages |grep named
没有报错即可。
9.设置开机自启动:
systemctl enable named
此时这个DNS服务器就可以使用了。
windows系统下修改网络连接里的DNS服务器地址用ping、nslookup命令测试。
linux系统修改/etc/resolv.conf里的nameserver地址,使用host、dig、nslookup命令测试。
二、配置区域主域名服务器
以test.com域为例子:
www.test.com 192.168.1.100 //web服务
ns.test.com 192.168.1.101 //域名服务
work.test.com 192.168.1.100
mail.test.com 192.168.1.103 //邮件服务
ftp.test.com 192.168.1.104 //文件服务
1.编辑/var/named/chroot/etc/named.rfc1912.zones文件:
vim /var/named/chroot/etc/named.rfc1912.zones
在最后添加正向解析区域test.com:
zone “test.com” IN {
type master;
file “test.com.zone”;
allow-update { none; };
};
然后添加反向解析区域1.168.192.in-addr.arpa:
zone “1.168.192.in-addr.arpa” IN {
type master;
file “test.com.resv”;
allow-update { none; };
};
2.创建正向解析数据文件/var/named/chroot/var/named/test.com.zone:
cd /var/named/chroot/var/named
cp localhost.zone test.com.zone
3.编辑test.com.zone文件:
vim test.com.zone
修改如下
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimumIN NS ns.test.com.
www IN A 192.168.1.100
ns IN A 192.168.1.101
work IN CNAME www
mail IN A 192.168.1.103
@ IN MX 10 mail.test.com.
ftp IN A 192.168.1.104
4.创建反向解析数据文件/var/named/chroot/var/named/test.com.resv:
cp named.local test.com.resv
5.编辑test.com.resv文件:
vim test.com.resv
修改如下
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.com.
100 IN PTR www.test.com.
101 IN PTR ns.test.com.
103 IN PTR mail.test.com.
104 IN PTR ftp.test.com.
6.编辑named.conf,将test.com区域加入到view “external”中:
vim /var/named/chroot/etc/named.conf
由于zone “test.com”是写在named.rfc1912.zones文件中的,在view “external”中添加:
include “/etc/named.rfc1912.zones”;
7.重启服务:
systemctl restart named
此时客户端请求解析test.com域会直接使用设置的参数,不会向根去询问。
三、配置辅域名服务器
配置辅域名服务器相对来说简单不少,只要主配置文件中加入一个区域,然后指定可以更新信息的主域名服务器就可以了,无需配置区域数据库文件。
1.编辑/var/named/chroot/etc/named.rfc1912.zones文件:
vim /var/named/chroot/etc/named.rfc1912.zones
在最后添加正向解析区域test.com:
zone “test.com” IN {
type slave;
file “slaves/test.com.hosts”;
masters { 1.1.1.1; }; //这里填主DNS服务器IP
};
然后添加反向解析区域1.168.192.in-addr.arpa:
zone “1.168.192.in-addr.arpa” IN {
type slave;
file “slaves/test.com.resv”;
masters { 1.1.1.1; }; //这里填主DNS服务器IP
};
2.编辑named.conf,将named.rfc1912.zones文件加入到view “external”中:
vim /var/named/chroot/etc/named.conf
在view “external”中添加:
include “/etc/named.rfc1912.zones”;
3.设置/var/named/chroot/var/named/slaves目录用户和组为root:named:
cd /var/named/chroot/var/named
chown root:named slaves
为/var/named/chroot/var/named/slaves添加写权限:
chmod g+w slaves
named用户对slaves目录没有写权限会同步不了主域名服务器上的解析数据文件。
4.重启DNS服务:
systemctl restart named
5.查看/var/named/chroot/var/named/slaves目录:
产生test.com.hosts test.com.resv文件,说明更新成功。
需要注意:
1)主从服务器中正/反向zone名称必须一致。
2)从服务器中file可指定相对路径,也可指定绝对路径。
3)需将辅助DNS服务器的首选DNS服务器指向为主DNS服务器。
6. 错误排查
因为BIND服务的主配置文件 named.conf 以及我们的 zone 配置文件其内容非常复杂,晦涩难懂,所以难免会出现配置出错的情况,因此为了方便我们进行错误排查,BIND还提供了两个非常的命令来对我们的 named.conf 和 zone 文件进行排错检查
①命令 named-checkconf 可以查看BIND的主配置文件的错误:
named-checkconf /var/named/chroot/etc/named.conf
②命令 named-checkzone 可以查看zone配置文件的错误:
named-checkzone cnblogs.com.zone /var/named/chroot/var/named/cnblogs.com.zone
通过这两个命令我们就可以在配置完BIND主配置文件以及zone文件以后对其进行文件排查了,如果没有返回信息,则表示配置没有问题
CentOS7搭建DNS服务器的更多相关文章
- Centos7 搭建DNS服务器与原理配置详解
在搭建我们自己DNS服务器之前,先必须了解下DNS服务器的作用和原理. DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP ...
- centos7 部署dns服务器
=============================================== 2017/12/6_第2次修改 ccb_warlock 20 ...
- centos7 搭建WEB服务器
centos7 搭建WEB服务器 2017年09月17日 09:44:50 逝然1994 阅读数:18321 标签: centosapacheweb服务器 更多 个人分类: centos服务器简单配置 ...
- CentOS7 搭建 SVN 服务器
CentOS7 搭建 SVN 服务器 介绍SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上 ...
- 第一次搭建dns服务器
CentOS 7 搭建DNS服务器 主要参考的是小左先森的一篇博客:https://blog.51cto.com/13525470/2054121. 1.搭建过程中遇到的几个问题说一下: a.在重启服 ...
- centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课
centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更 ...
- [转]DNS服务器原理详解与Centos6.x下搭建DNS服务器
转自:http://blog.it985.com/8958.html DNS 数据库的记录:正解,反解, Zone 的意义 通过DNS解析过程详解这篇文章,我们知道了要想访问www.zmit.cn,最 ...
- CentOS7设置DNS服务器
CentOS7设置DNS服务器 在CentOS7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了.CentOS7和CentOS6下的设置DNS方法不一 ...
- Windows Server 2008 R2 搭建DNS服务器(转)
Windows Server 2008 R2 搭建DNS服务器将本机IP设为首选DNS服务器的地址在dos 下分别输入 nslookup www.mydns.com 和 nslookup 192.16 ...
随机推荐
- Zeppelin的入门使用系列之使用Zeppelin来运行Spark SQL(四)
不多说,直接上干货! 前期博客 Zeppelin的入门使用系列之使用Zeppelin来创建临时表UserTable(三) 1. 运行年龄统计的Spark SQL (1) 输入Spark SQL时,必 ...
- 如何更改Linux yum源?
centos下可以通过yum很方便快捷的安装所需的软件和库,如果yum的源不好,安装速度会非常慢,centos默认官方源似乎都是国外的,所以速度无法保证,我一直使用163的源,感觉速度不错.下面就说说 ...
- Java基础:(六)关键字
一.final 数据: 声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量. 对于基本类型,final使数值不变: 对于引用类型,final使引用不变,也就不能引用其他对象, ...
- linux 安装jdk (二进制文件安装)
1.下载jdk 此处以1.7 为例 :jdk-7u79-linux-x64.tar.gz 2.通过ssh将安装介质传到服务器 我一般放在 /opt 目录下 3.用tar 命令解压缩 tar -zx ...
- 1043 方格取数 2000年NOIP全国联赛提高组
1043 方格取数 2000年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 设有N* ...
- 使用Python+selenium过程中所需安装的库和软件
一.下载地址: 1.setuptools:https://pypi.python.org/pypi/setuptools#downloads 中file对应的后缀为zip的软件 pip:https:/ ...
- HDU 3709 Balanced Number (数位DP)
题意: 找出区间内平衡数的个数,所谓的平衡数,就是以这个数字的某一位为支点,另外两边的数字大小乘以力矩之和相等,即为平衡数. 思路: 一开始以为需要枚举位数,枚举前缀和,枚举后缀和,一旦枚举起来就会M ...
- Android(java)学习笔记114:Service生命周期
1.Service的生命周期 Android中的Service(服务)与Activity不同,它是不能和用户交互,不能自己启动的,运行在后台的程序,如果我们退出应用的时候,Servic ...
- Processing分形之一——Wallpaper
之前用C语言实现过一些分形,但是代码比较复杂.而对于天生对绘图友好的Processing,及其方便. 在大自然中分形普遍存在,我们用图形模拟,主要是找到一个贴近的函数. 代码 /** * Wallpa ...
- mysql命令行导出导入,附加数据库
MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server ...