详解如何在 CentOS7.0 上搭建DNS 服务器

BIND也叫做NAMED,是现今互联网上使用最为广泛的DNS 服务器程序。这篇文章将要讲述如何在 chroot 监牢中运行 BIND,这样它就无法访问文件系统中除“监牢”以外的其它部分。

例如,在这篇文章中,我会将BIND的运行根目录改为 /var/named/chroot/。当然,对于BIND来说,这个目录就是 /(根目录)。 “jail”(监牢,下同)是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性(LCTT 译注:chroot “监牢”,所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件进行操作,从而保证整个服务器的安全)。Bind Chroot DNS 服务器的默认“监牢”为 /var/named/chroot。

你可以按照下列步骤,在CentOS 7.0 上部署 Bind Chroot DNS 服务器。

1、安装Bind Chroot DNS 服务器

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

2、拷贝bind相关文件,准备bind chroot 环境

代码如下:

[root@centos7 ~]# cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/

3、在bind chroot 的目录中创建相关文件

[root@centos7 ~]# touch /var/named/chroot/var/named/data/cache_dump.db
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named_stats.txt
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named_mem_stats.txt
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named.run
[root@centos7 ~]# mkdir /var/named/chroot/var/named/dynamic
[root@centos7 ~]# touch /var/named/chroot/var/named/dynamic/managed-keys.bind

4、 将 Bind 锁定文件设置为可写

[root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/data
[root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/dynamic

5、 将 /etc/named.conf 拷贝到 bind chroot目录

[root@centos7 ~]# cp -p /etc/named.conf /var/named/chroot/etc/named.conf

6、 在/etc/named.conf中对 bind 进行配置。

在 named.conf 文件尾添加 example.local 域信息, 创建转发域(Forward Zone)与反向域(Reverse Zone)(LCTT 译注:这里example.local 并非一个真实有效的互联网域名,而是通常用于本地测试的一个域名;如果你需要做权威 DNS 解析,你可以将你拥有的域名如这里所示配置解析。):

[root@centos7 ~]# vi /var/named/chroot/etc/named.conf
..
..
zone "example.local" {
  type master;
  file "example.local.zone";
};

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.0.zone";
};
..
..

named.conf 完全配置如下:

//
// named.conf
//
// 由Red Hat提供,将 ISC BIND named(8) DNS服务器
// 配置为暂存域名服务器 (用来做本地DNS解析).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory    "/var/named";
    dump-file    "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query   { any; };

    /*
     - 如果你要建立一个 授权域名服务器 服务器, 那么不要开启 recursion(递归) 功能。
     - 如果你要建立一个 递归 DNS 服务器, 那么需要开启recursion 功能。
     - 如果你的递归DNS服务器有公网IP地址, 你必须开启访问控制功能,
      只有那些合法用户才可以发询问. 如果不这么做的话,那么你的服
      服务就会受到DNS 放大攻击。实现BCP38将有效抵御这类攻击。
    */
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

zone "." IN {
    type hint;
    file "named.ca";
};

zone "example.local" {
  type master;
  file "example.local.zone";
};

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.0.zone";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

7、 为 example.local 域名创建转发域与反向域文件

a)创建转发域

代码如下:

[root@centos7 ~]# vi /var/named/chroot/var/named/example.local.zone

添加如下内容并保存:

;
;    Addresses and other host information.
;
$TTL 86400
@    IN   SOA   example.local. hostmaster.example.local. (
                2014101901   ; Serial
                43200   ; Refresh
                3600    ; Retry
                3600000  ; Expire
                2592000 ) ; Minimum

;    Define the nameservers and the mail servers

        IN   NS   ns1.example.local.
        IN   NS   ns2.example.local.
        IN   A    192.168.0.70
        IN   MX   10 mx.example.local.

centos7     IN   A    192.168.0.70
mx        IN   A    192.168.0.50
ns1       IN   A    192.168.0.70
ns2       IN   A    192.168.0.80

b)创建反向域

[root@centos7 ~]# vi /var/named/chroot/var/named/192.168.0.zone
;
;    Addresses and other host information.
;
$TTL 86400
@    IN   SOA   example.local. hostmaster.example.local. (
                2014101901   ; Serial
                43200   ; Refresh
                3600    ; Retry
                3600000  ; Expire
                2592000 ) ; Minimum

0.168.192.in-addr.arpa. IN   NS   centos7.example.local.

70.0.168.192.in-addr.arpa. IN PTR mx.example.local.
70.0.168.192.in-addr.arpa. IN PTR ns1.example.local.
80.0.168.192.in-addr.arpa. IN PTR ns2.example.local.。

8、开机自启动 bind-chroot 服务

[root@centos7 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
[root@centos7 ~]# systemctl stop named
[root@centos7 ~]# systemctl disable named
[root@centos7 ~]# systemctl start named-chroot
[root@centos7 ~]# systemctl enable named-chroot
ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.s

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Centos修改DNS重启或重启network服务后丢失问题解决方法

    介绍 我们在配置Centos的时候,很多情况需要能联外网,那么就需要DNS解析功能,默认的是没有配置DNS信息的,所以我们得配置DNS信息 起因 我们在搜索Centos配置DNS信息的时候,很多都是说在这个文件进行配置"/etc/resolv.conf",我们在这个里面加了nameserver后确实可以ping通域名,但是重启centos或者重启network服务后就无法ping通了,在"/etc/resolv.conf"配置的nameserver信息也丢失了. 处

  • Centos下IP与DNS设置方法详解

    本文较为详细的讲述了Centos下IP与DNS设置方法.分享给大家供大家参考,具体如下: 1.CentOS 修改DNS 修改对应网卡的DNS的配置文件 # vi /etc/resolv.conf 修改以下内容 nameserver 8.8.8.8 #google域名服务器 nameserver 8.8.4.4 #google域名服务器 2.CentOS 修改网关 修改对应网卡的网关的配置文件 [root@centos]# vi /etc/sysconfig/network 修改以下内容 NETW

  • 用DNSPod和Squid打造自己的CDN (三) 安装CentOS Linux

    第 4 章 安装CentOS Linux 1.基本安装 把光盘塞进光驱,设置BIOS从光驱启动(别告诉我你不会),然后会看到启动界面,上面有一些提示,可以输入一些命令进行高级安装或者进入系统修复模式.不用管,直接按回车. 稍等一下,会出现一个界面要求你做光盘的完整性检查.一般来说现在刻出来的盘不会有坏的,除非是下载回来的ISO文件有问题.所以这里我们跳过. 跳过的方法是:按键盘的TAB键进行控件的选择,被选择上的控件会高亮,我们选择Skip(建议大家随时打开翻译工具或者网站对不懂的英文进行翻译)

  • CentOS 6.6实现永久修改DNS地址的方法

    本文实例讲述了CentOS 6.6实现永久修改DNS地址的方法.分享给大家供大家参考,具体如下: 1.配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-eth0 添加一行: 复制代码 代码如下: DNS1=8.8.8.8    #手动添加一个dns地址: DNS配置文件/etc/resolv.conf 的地址会自动匹配手动添加的地址:重启网卡后不会清除: 2.手动添加dns地址 DNS配置文件 /etc/resolv.conf 复制代码 代码如下: na

  • 详解如何在 CentOS7.0 上搭建DNS 服务器

    BIND也叫做NAMED,是现今互联网上使用最为广泛的DNS 服务器程序.这篇文章将要讲述如何在 chroot 监牢中运行 BIND,这样它就无法访问文件系统中除"监牢"以外的其它部分. 例如,在这篇文章中,我会将BIND的运行根目录改为 /var/named/chroot/.当然,对于BIND来说,这个目录就是 /(根目录). "jail"(监牢,下同)是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性(LCTT 译注:chroo

  • 详解如何热更新线上的Java服务器代码

    一.前言 1.热更新代码的场景 (1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题 二.Arthas的使用 使用阿里巴巴开源的Java诊断工具---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指

  • 详解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud

    Nextcloud 是一款自由 (开源) 的类 Dropbox 软件,由 ownCloud 分支演化形成.它使用 PHP 和 JavaScript 编写,支持多种数据库系统,比如 MySQL/MariaDB.PostgreSQL.Oracle 数据库和 SQLite.它可以使你的桌面系统和云服务器中的文件保持同步,Nextcloud 为 Windows.Linux.Mac.安卓以及苹果手机都提供了客户端支持.Nextcloud 并非只是 Dropbox 的克隆,它还提供了很多附加特性,如日历.联

  • 详解如何在 CentOS 7 上安装和安全配置 MariaDB 10

    MariaDB 是 MySQL 数据库的自由开源分支,与 MySQL 在设计思想上同出一源,在未来仍将是自由且开源的. 在这篇博文中,我将会介绍如何在当前使用最广的 RHEL/CentOS 和 Fedora 发行版上安装 MariaDB 10.1 稳定版. 目前了解到的情况是:Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB. 在本文中需要注意的是,我们假定您能够在服务器中使用 root 帐号工作,或者可以使用

  • 详解Node.js利用node-git-server快速搭建git服务器

    本文用到了node-git-server 1.检测本地git版本 该包的使用需要机器上本来就安装git,且git的版本大于等于2.7: ╭─root@lt /home/workspace ╰─# git --version git version 2.7.4 2.利用npm安装包 ╭─root@lt /home/workspace ╰─# npm install node-git-server /home/workspace └─┬ node-git-server@0.3.0 ├─┬ http-

  • 详解如何在Ubuntu 20.04上安装Xrdp服务器(远程桌面)

    Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统.通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样. 这篇指南讲解如何在 Ubuntu 20.04 上安装和配置 Xrdp 服务器. 一.安装桌面环境 Ubuntu 服务器通常使用命令行进行管理,并且默认没有安装桌面环境.如果你正在运行 Ubuntu 桌面版,忽略这一步. 在 Ubuntu 源仓库有很多桌面环境供你选择.一个选择是安装 Gnome,它是 Ubuntu 20.0

  • 详解如何在VMware workstation 14 pro(虚拟机)上安装系统

    本文介绍了详解如何在VMware workstation 14 pro(虚拟机)上安装系统,分享给大家,具体如下: 点击创建新的虚拟机 选择稍后安装系统,否则你会陷入无穷的简易安装等待中. 我这次安装的系统为win10 安装地址可以自己选择 接着可以按照推荐的一直点下去 之后点击编辑虚拟机设置 选择自己下载好的win10映像文件启动 之后便可开启虚拟机 一旦进去立即按回车否则就会出现如下画面(但是有办法解决,不要马上关) 这时你就要按Esc才能安装,但是如果你一不小心又忘记点了,又会出现如下画面

  • 详解Linux搭建DNS服务器

    1.DNS服务器概念 在互联网上通信需要借助于IP地址,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0.1代码,这时就需要一种机制来解决IP地址与主机名的转换问题,DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的"网址"解析为IP地址 联机分布式数据库系统,DNS大多数名字在本地解析,仅少量需要在网上通讯,所以效率高 2.DNS相关概念 DNS利用树形目录结构,将主机名的管理分配给不同的层级

  • 详解如何在C#/.NET Core中使用责任链模式

    最近我有一个朋友在研究经典的"Gang Of Four"设计模式.他经常来询问我在实际业务应用中使用了哪些设计模式.单例模式.工厂模式.中介者模式 - 都是我之前使用过,甚至写过相关文章的模式.但是有一种模式是我还没有写过文章,即责任链模式. 什么是责任链?# 责任链模式(之前我经常称之为命令链模式)是一种允许以使用分层方式"处理"对象的模式.在维基百科中的经典定义是 在面向对象设计中,责任链模式是一种由命令对象源及其一系列处理对象组成的设计模式.每个处理对象包含了

  • 详解如何在PyCharm控制台中输出彩色文字和背景

    最近的话呢也是因为一些特殊的需求,所以要求在Pycharm控制台中输出彩色的文字和背景,也有同学问到我关于这个问题,之前百度其他人的关于这个操作,比较凌乱,那么我这里的话就写一篇博文来总结一下.其实的话呢,Python控制台中默认输出的字体应该是黑色,而背景呢则是白色. 那么,如何使PyCharm中输出的内容,有不同的背景色和字体颜色?其实非常的简单,我们只需要在print输出语句中进行一些简单的设置即可,在PyCharm控制台中设置字体和背景色,需要使用下面语法: \033[显示方式;前景色;

随机推荐