Linux环境下搭建主从DNS服务器

news/2024/11/28 21:56:27/

一、bind简介
Linux中通常使用bind来实现DNS服务器的架设,bind软件由isc(www.isc.org)维护。在yum仓库中可以找到软件,配置好yum源,直接使用命令yum install bind就可以安装,监听窗口为53。bind的主要配置文件为/etc/named.conf,此文件主要用于配置区域,并指定区域数据库文件名称。区域数据库文件通常保存于/var/named/目录下,用于定义区域的资源类型。
——————————————————————————————————————————————————————————————————
二、架设主DNS服务器、
实例操作:以域名zym.com为例配置一个DNS服务器,实现正向解析。
配置一台ip为172.18.24.17/16的主机作为DNS服务器。
为了实验能成功进行,我们把selinux和防火墙先关闭

[root@centos7~ ]#setenforce 0    #设置selinux为permissvie
[root@centos7~ ]#systemctl stop firewalld   #关闭防火墙
[root@centos7~ ]#ss -ntl         #查看53号端口是否打开,监听本机的IP

修改主配置文件

[root@centos7~ ]#vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1;localhost;}; #监听本地所有的IP
allow-query     { any;};    #所有的客户端都可以查询区域数据库,实现解析 
}

定义用户自定义域

[root@centos7~ ]#vim /etc/named.rfc1912.zones  #用户自定域,也可以把域写在/etc/named.conf文件中
zone "zym.com" IN {     #添加zym.com域type master;    #指定类型为主                                            file "zym.com.zone";   #指定区域数据库文件名                                    
};

写解析数据库文件

[root@centos7~ ]#vim /var/naemd/zym.com.zone
$TTL 1D
@   2D  IN  SOA  dns1 admin.magedu.com. (       200005    ; serial  #版本号,版本号可以任意数值,位数不能超过10个1D        ; refresh #更新间隔时间,1D表示一天1H        ; retry   #同步数据失败后,再次尝试同步间隔时间。1H表示1小时1W        ; expire #一直不能同步数据,此间隔时间后从服务器不再提供解析服务3H )      ; minimum  #错误请求间隔时间,此时间内不再重启查询,直接将结果返回给客户端NS             dns1          #指明服务器名称
dns1    2D IN  A              172.18.24.17  #服务器IP
www            CNAME              web       #指明www为web的别名 
web            A              172.18.24.26  #域名对应的IP
zym.com.       A              172.18.24.27        
[root@centgos7 named]# ll zym.com.zone 
-rw-r----- 1 root root 296 Sep 22 05:49 zym.com.zone 
#只有所有者和所属组有读的权限,这里所有主和所属组都是root用户,其他用户没有读的权限,故需要下面的一步修改,让named有读解析数据文件的权限
[root@centos7~ ]#chgrp named /var/named/zym.com.zon  
#很重要的一步,把zym.com.zon解析数据文件的属组改为named,这是DNS服务创建的一个用户,用于方便调用DNS服务,这里把属组改成named,named就有权限为客户端读取解析数据,达到查询解析的目的

主配置文件语法检查

[root@centos7~ ]#named-checkconf  #检查配置文件中的语法/etc/named.conf /etc/named.rfc1912.zones
[root@centos7~ ]#named-checkzone zym.com /var/named/zym.com.zone #解析库文件语法检查
[root@centos7~ ]#rndc reload     #加载DNS配置文件  

这里写图片描述

测试主DNS服务器能否解析
用IP为172.18.24.6/16的主机测试IP为172.18.24.17的DNS主服务器能否正常解析域名
保证两台主机能正常通信
在IP为172.18.24.6/16的主机上用yum安装bind-utils包,安装此包中有dig命令dig命令的这里不详细讲解了,有兴趣的同学可以看我另外一篇关于DNS的博客,里面有详解讲解dig的用法

[root@centos7~ ]#dig www.zym.com @172.18.24.17  #在指定ip为172.18.24.17的主机上查询域名为www.zym.com的ip地址
[root@centos7~ ]#dig zym.com @172.18.24.17  #在指定ip为172.18.24.17的主机上查询域名为zym.com的ip地址,这里

这里写图片描述
——————————————————————————————————————————————————————————————————
三、架设从DNS服务器
准备:
1. 一台IP为172.18.24.7/24的主机,并且能于IP为172.18.24.17/16主DNS服务器、IP为172.18.24.6/测试主机通信。
2. 为了保证实验顺利进行,我们先把selinux和防火墙关闭,第二步架设主DNS服务器有写,这里不再赘述。

同理修改主配置文件

[root@centos7~ ]#vim /etc/named.conf
options {listen-on port 53 { localhost;};   #监听本地所有的IPallow-query       { any;};         #所有的客户端都可以查询区域数据库,实现解析 
}

定义用户自定义域

[root@centos7~ ]#vim /etc/named.rfc1912.zones  #用户自定域,也可以把域写在/etc/named.conf文件中
zone "zym.com" IN {           #添加zym.com域type slave;               #指定类型为从服务器masters {172.18.24.17;};   #指定从当前从服务器对应的主服务器IP地址file  "slaves/zym.com.slave.zone";  #指定从解析数据库文件名

这里我们就不需要在自己写解析数据文件了,我们要实现主从DNS服务器,那么数据就必须要同步,接下来,我们就开始同步解析数据文件

[root@localhost ~]#cd /etc/named/slaves 
[root@localhost slaves]#ls
[root@localhost slaves]#rndc reload   #从主服务器同步解析数据到从服务器上
server reload successful
[root@localhost slaves]# ls
zym.com.slave.zone
#注意:区域数据库文件zym.com.slave.zone在centos6是明文,而在centos7是密文 

在IP为172.18.24.6/主机上测试两台主机能否正常解析
测试主DNS服务器能否正常解析

这里写图片描述

测试主DNS服务器能否正常解析

这里写图片描述

从上面两个图可以清楚的看到,主从服务器都能正常解析
——————————————————————————————————————————————————————————————————
四、实现容错

原理:
搭建主从服务器,除了减轻负载,还有一个更重要的作用,实现容错。容错,顾名思义,就是允许出现错误,出现问题后任然对外能够提供服务,实现思想是,一台服务器坏了,另外一台能正常工作,对外提供服务。
实验过程分析:
我们这里模拟真实环境,dig测试不再指定用哪个服务器来解析域名,那么我们需要修改测试主机上的网卡配置,指定DNS主从服务器

[root@CentOS6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
IPADDR=172.18.24.6
PREFIX=16
DNS1=172.18.24.17    #主
DNS2=172.18.24.7     #从
BOOTPROTO=static
GATEWAY=172.18.0.1
[root@CentOS6 ~]#dig www.zym.com 

这里写图片描述

现在我们把主服务器上的ip为172.18.24.17的网卡down掉,模拟主机服务器出问题。

[root@CentOS7 ~]#ifconfig ens37 down 

这里写图片描述

再次在测试主机上测试
这里写图片描述

测试成功。
说明:在执行 dig www.zym.com 命令后,明显可以感觉停顿了一两秒时间才显示出结果,比down掉网卡前慢了些许,因为我们配置网卡的时候,把主服务器的IP放在了从服务器IP的前面,当执行解析命令后,主机首先会到主服务器上去查询,结果主服务器网卡坏掉了,不能提供服务,然后主机会到从服务器去查询,从服务器正常工作,解析出域名,返回给主机,显示出结果。
——————————————————————————————————————————————————————————————————
五、安全加强
利用dig命令可以直接抓取的服务器上的解析数据的所有解析记录,而且是明文,现在存在很大的危险漏洞。
先把第四步禁掉的网卡启用起来,然后抓取主服务器上的解析纪录

[root@CentOS7 ~]#ifconfig ens37 up

在测试主机抓取

[root@CentOS6 ~]#dig -t axfr zym.com @172.18.24.17    

这里写图片描述

在主DNS服务器上安全加强

[root@CentOS7 ~]#vim /etc/named.conf
options{
allow-transfer  {172.18.24.7;};  #在options中加入此行,表示只允许172.18.24.7这个IP查询解析数据,我们知道172.18.24.7是从服务器的IP,所以一般设置的都是从服务器才有权限查询解析数据
};

再次测试

这里写图片描述

虽然我们在主服务上设置了安全策略,但是外部主机还是可以照样抓取从服务器上的解析纪录,同样存在安全漏洞。

这里写图片描述

从服务器上安全加强

[root@CentOS7 ~]#vim /etc/named.conf
options{allow-transfer  {none;};  #从服务器一般没有谁需要同步解析纪录,所以我们这里设置为none
};

测试

这里写图片描述

测试成功。
注意:这里我们只是设置了同步解析数据纪录的纪录,并没有限制查询,外部的主机都是可以在主从DNS服务器查询域名的,因为DNS本身就是对外提供查询服务的。

总结:这里我们是实验环境,为了方便实验把防火墙和selinux都关闭了,但是在生产中环境中,可不能随便把防火墙强关闭,需要提前设置防火墙策略,有安全要求较高的话,还需要设置selinux策略,然后搭建服务。同时我们应该知道,无论是实验环境还是真实生产环境,原理都是想通的。主从DNS服务器不仅能均衡负载,还可以实现容错,在生产中广泛使用。


http://www.ppmy.cn/news/155658.html

相关文章

基于FTP协议的文件上传与下载

FTP协议 FTP协议建立在TCP协议之上,是进行文件传输服务的常用协议,采用C/S模式,是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。 (TCP协议可参考:http://t.csdn.cn/6a78D ) FTP服务器的简单…

Xmodem、Ymodem、Zmodem

文件传输协议: 文件传输是数据交换的主要形式。在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议。这个协议包括了文件的识别、传送的起止时间、错误的判断与纠正等内容。 在SecureCRT下的传输协议…

Datawahle组队学习——妙趣横生大数据 Day1

妙趣横生大数据 Day1 [妙趣横生大数据 Juicy Big Data](https://datawhalechina.github.io/juicy-bigdata/#/?id妙趣横生大数据-juicy-big-data)一、大数据概述大数据——第三次信息化浪潮大数据概念大数据应用大数据关键技术 二、Hadoop背景介绍特性项目架构 实验1. 准备工作…

length() 用法

length:(字符串 | 列):求出字符串的长度; 求出bqh4表中zym列的长度。 select * from bqh4select a.*,length(zym) from bqh4 a 转载于:https://www.cnblogs.com/su-root/p/9752050.html

ROS 解决catkin_make时cmake error Invoking cmake failed

照着官网教程做的时候执行catkin_make命令时报错 CMakeLists.txt:52 (find_package) Configuring incomplete, errors occurred! See also "/home/zym-sf/catin_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/zym-sf/catin_ws/build/CMakeFiles/C…

探究Ptcms小说采集规则

1、首页的更新列表页采集 ,新增http://www.31xs.org/首页采集规则 PTCMS内置 [subnovelid] // floor(小说ID/1000) [novelid] //小说ID [页码] //列表采集页码 [空白] //空白 包含换行和空格 [内容] //等同于 .? 匹配之间的任何字符 [数字] // 等同于 \d 匹配0-9数字组合 常用…

dpdk源码---vfio(zym)

主要想找到从nvme设备 到 vfio驱动的代码路径 [spdk/lib/nvme/nvme_pcie.c] nvme_pcie_ctrlr_scan(struct spdk_nvme_probe_ctx *probe_ctx,bool direct_connect) (nvme_tcp,nvme_rdma等都有自己的scan,probe等函数,统一被封装起来,如下) 1 int nvme_transport_c…

Linux系统下安装minio并设置SSL证书进行HTTPS远程连接访问

下载minio并且设置权限 创建一个文件夹用于保存下载的minio mkdir /usr/local/minio在创建的文件夹中用wget下载Linux版本的minio服务端 wget https://dl.min.io/server/minio/release/linux-amd64/minio下载完成后设置权限 chmod x minio启动安装minio默认HTTP访问 启动m…