在CentOS 7中使用BIND部署DNS服务器 - 正向/反向解析

2023-11-15

        DNS(Domain Name System,域名系统)用于解析域名与IP地址的映射关系。根据主机名(域名)解析对应的IP地址称之为正向解析,根据IP地址解析对应的主机名(域名)称为之反向解析。

        DNS服务器又分为主服务器、从服务器和缓存服务器。主服务器在特定区域内具有唯一性、负责维护该区域内的域名与IP地址映射关系。从服务器拷贝主服务器中域名与IP地址的映射关系,以防止主服务器宕机等情况。缓存服务器通过向其他域名解析服务器查询获得域名与IP地址映射关系,从而提高重复查询时的效率。

        BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,可以有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

一、安装bind及其相关软件

        使用bind部署DNS服务器,通常会安装bind、bind-chroot、bind-utils和bind-libs四个软件。bind提供了域名服务的主要程序及相关软件,bind-utils提供了对DNS服务器的测试工具程序(比如:nslookup),bind-libs提供了bind、bind-utils需要使用的库函数,bind-chroot为Bind服务提供一个伪装的根目录(将var/named/chroot文件夹作为Bind的根目录),以提高安全性。

1、查看系统中已安装的bind及其相关软件。

rpm -aq | grep bind

2、安装bind及其相关软件,根据步骤1,系统默认已安装utils和libs,因此只需要安装bind、bind-chroot。

yum -y install bind bind-chroot

二、bind配置文件简述

        配置DNS服务,需要编辑bind相关的配置文件。相关的配置文件有三类(4个)配置文件,分别是DNS主配置文件(/etc/named.conf)、区域配置文件(/etc/named.rfc1912.zones)和数据文件。数据文件分为正向解析数据文件和反向数据解析模版,正向解析数据文件可以通过正向解析数据模版文件(/var/named/named.localhost)来创建,反向数据解析数据文件可以通过反向解析数据模版文件(/var/named/named.loopback)来创建。

1、编辑DNS主配置文件。

        把第13行127.0.0.1修改为any,表示服务器上的所有IP地址均可提供DNS域名解析服务。

        把第19行的localhost修改为any,表示本服务器接受所有DNS查询请求。

vim /etc/named.conf

 12 options {
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         allow-query     { any; };

三、DNS正向解析

1、编辑区域配置文件中正向解析部分。

        删除已有的所有内容,并添加下面5行。

vim /etc/named.rfc1912.zones

  1 zone "lw.com.cn" IN {                   #维护的正向区域(lw.com.cn);
  2         type master;                    #设置服务器类型为主服务器;
  3         file "lw.com.cn.zone";          #设置正向解析数据文件的名称;
  4         allow-update { none; };         #不允许动态更新解析信息;
  5 };

2、复制正向解析数据文件模板,作为服务器的正向解析数据文件。

cp -a /var/named/named.localhost /var/named/lw.com.cn.zone
说明:
文件名必须和区域配置文件中定义的file的名称相同。 

3、编辑正向解析数据文件。

        注意域名后面的“.”,不要漏了。

vim /var/named/lw.com.cn.zone

  1 $TTL 1D
  2 @       IN SOA  lw.com.cn. root.lw.com.cn. (    #域名=lw.com.cn. root的邮箱=root.lw.com.cn.
  3                                         0       ; serial
  4                                         1D      ; refresh
  5                                         1H      ; retry 
  6                                         1W      ; expire
  7                                         3H )    ; minimum
  8         NS      ns.lw.com.cn.           #域名服务器记录
  9 ns      IN A    192.168.10.10           #地址记录
 10 www     IN A    192.168.10.10           #地址记录
 11 mail    IN A    192.168.10.10           #地址记录

4、重启named服务并将其设置为开机启动。

systemctl restart named
systemctl enable named

        如果出现错误提示:Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.请认真检查前面的配置,直到使用命令systemctl restart named重启named服务不出现错误提示为止。

5、在服务器上进行测试,使用命令ping和nslookup进行测试。

[root@localhost ~]# ping www.lw.com.cn
PING www.lw.com.cn (192.168.10.10) 56(84) bytes of data.
64 bytes from localhost.localdomain (192.168.10.10): icmp_seq=1 ttl=64 time=0.015 ms

[root@localhost ~]# nslookup
> www.lw.com.cn                     #在这里输入需要解析的域名
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	www.lw.com.cn
Address: 192.168.10.10
> exit

6、若要使用DNS客端使用命令ping或命令nslookup进行测试,需要在DNS服务器上设置或关闭防火墙,还需要在客户端设置首选DNS的IP(192.168.10.10)地址,设置DNS的IP地址比较简单这里省略该设置。

firewall-cmd --permanent --add-service=dns	#默认区域添加dns服务
firewall-cmd --reload		    			#重新加载防火墙
或
systemctl stop firewalld		#关闭防火墙
systemctl disable firewalld		#禁用防火墙

四、DNS反向解析

1、编辑区域配置文件中反向解析部分。

        正向解析部分配置了5行,反向解析部分从第6行开始,也配置5行。

vim /etc/named.rfc1912.zones

  6 zone "10.168.192.in-addr.arpa" IN {             #设置维护的反向区域;
  7         type master;                            #设置服务器类型为主服务器;
  8         file "192.168.10.arpa";                 #设置反向解析数据文件的名称;
  9         allow-update { none; };                 #不允许动态更新解析信息;
 10 };

2、复制反向解析数据文件模板,作为服务器的反向解析数据文件。

cp -a /var/named/named.loopback /var/named/192.168.10.arpa
说明:
文件名必须和区域配置文件中定义的file的名称相同。 

3、编辑反向解析数据文件。

      注意域名后面的“.”,不要漏了。

vim /var/named/192.168.10.arpa

  1 $TTL 1D
  2 @       IN SOA  lw.com.cn. root.lw.com.cn. (    #域名=lw.com.cn.root的邮箱=root.lw.com.cn.
  3                                         0       ; serial
  4                                         1D      ; refresh
  5                                         1H      ; retry 
  6                                         1W      ; expire
  7                                         3H )    ; minimum
  8         NS      ns.lw.com.cn.           #域名服务器记录
  9 ns      IN A    192.168.10.10           #地址记录
 10 10      PTR     www.lw.com.cn.          # PTR为指针记录,仅用于反向解析;
 11 10      PTR     mail.lw.com.cn.         # PTR为指针记录,仅用于反向解析;

4、重启named服务。

systemctl restart named

        如果出现错误提示:Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.请认真检查前面的配置,直到使用命令systemctl restart named重启named服务不出现错误提示为止。

5、在服务器或客户端使用命令nslookup进行测试。

[root@localhost ~]# nslookup
> 192.168.10.10                             #在这里输入需要解析的IP地址。
Server:		127.0.0.1
Address:	127.0.0.1#53

10.10.168.192.in-addr.arpa	name = mail.lw.com.cn.
10.10.168.192.in-addr.arpa	name = www.lw.com.cn.

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在CentOS 7中使用BIND部署DNS服务器 - 正向/反向解析 的相关文章

  • Linux 中如何获取内存修改通知

    在Linux的用户空间程序中 我通过从堆中分配来获取一块内存 然后将指针分发给在其他线程中运行的许多其他组件来使用 当上述内存被修改时我想收到通知 我当然可以开发一个自定义用户空间解决方案 供其他组件在尝试修改内存时使用 我的情况的问题是这
  • __libc_start_main 发生了什么?

    我真的很想理解从高级代码到可执行文件的步骤 但是遇到了一些困难 我写了一个空的int main C 文件并尝试通过以下方式破译反汇编objdump d 这是发生的事情 in start 设置对齐方式 将参数压入堆栈 调用 libc star
  • MYSQL插入GB大小的巨大SQL文件

    我正在尝试创建 Wikipedia DB 副本 大约 50GB 但在处理最大的 SQL 文件时遇到问题 我使用 linux split 实用程序将 GB 大小的文件拆分为 300 MB 的块 例如 split d l 50 enwiki 2
  • 在命令行上解密使用 PHP openssl_encrypt 制作的文件

    我有一个要加密的字符串 encryptThis Super Secret Text echo openssl encrypt encryptThis aes 128 cbc 1234 FALSE F68A9A229A516752 然后我通过
  • 将用户添加到组但运行“id”时未反映

    R 创建了一个名为 Staff 的组 我希望能够在不以 sudo 身份启动 R 的情况下更新软件包 所以我使用以下方法将自己添加到员工中 sudo usermod G adm dialout cdrom plugdev lpadmin ad
  • libusb 和轮询/选择

    我正在使用 Linux 操作系统 想知道是否有任何文件描述符可以轮询 选择 当数据等待从 USB 设备读取时会触发这些文件描述符 我也在使用 libusb 库 但尚未找到可以使用的文件描述符 Use libusb 的轮询函数 http li
  • 类似 wget 的 BitTorrent 客户端或库? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 是否有任何
  • 在 Linux 2.6.21 (glibc 2.3.5) 上进行 ARP 和反向 ARP

    我需要在任意 IP 网络上存储对第三方设备的持久引用 其中设备的 IP 地址可能是静态的或由 DHCP 随机分配 我不控制网络上的设备 也不能依赖 DNS 和其他现有的或与设备一起使用的临时网络协议 所以我被指示使用硬件地址和 ARP 进行
  • 代码::块 - 警告:GDB:无法设置控制终端:不允许操作

    我已经通过官方存储库在 Ubuntu 14 04 中安装了 Code Blocks 13 12 当我编译时 一切正常 但是当我调试时 shell 中会显示以下消息 警告 GDB 无法设置控制终端 操作不正确 允许的 程序执行到断点 但当我执
  • Linux shell 命令逐块读取/打印文件

    是否有一个标准的 Linux 命令可以用来逐块读取文件 例如 我有一个大小为 6kB 的文件 我想读取 打印第一个 1kB 然后是第二个 1kB 看来猫 头 尾在这种情况下不起作用 非常感谢 你可以这样做read n在循环中 while r
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • 如何从脚本向 sudo 提供密码?

    请注意 这是在我的本地计算机上运行的来宾虚拟机 VBox 我不担心安全性 我正在编写一个将在 Linux Ubuntu VM 上执行的脚本myuser用户 该脚本将在下面创建一个非常大的目录树 etc myapp 目前我必须手动完成所有这些
  • 是否有我可以运行的操作系统命令来确定是否在基于 Xen 的虚拟机内运行

    我可以在基于 Xen 的虚拟机中运行一个操作系统命令来告诉我它是一个虚拟机而不是物理机 我听说内核对此有一些自我意识智能 例如就像 ps 输出中的额外列之类的 我知道 vmstat 提供了 st 列 但我在运行 Linux 内核 2 6 1
  • Snap-confine 具有提升的权限,并且不受限制,但应该受到限制。拒绝继续避免权限升级攻击

    我已经使用 snap 一段时间了 但最近升级后 当我尝试打开任何应用程序时 出现此错误 Snap confine has elevated permissions and is not confined but should be Refu
  • 即使 makefile 和源代码存在,为什么“Build Project”在 Eclipse Helios CDT 中显示为灰色?

    我无法构建我的项目 我在 Eclipse Helios 中创建了一个新的 CDT 项目 并告诉它使用现有的源代码和 makefile 这两者都正确显示在 Package 和 Project 视图中 然而 项目 菜单中的 构建全部 和 构建项
  • Composer 已安装,但获取 /usr/bin/env: php: No such file or directory

    在 CentOS 7 上 我安装了 PHP 7 1 然后我安装了作曲家 cd tmp curl sS https getcomposer org installer php71 gt used php71 instead of php ph
  • 在单个命令中使用前缀重命名文件夹中的所有文件

    重命名带有前缀的文件夹中的所有文件 Unix 假设一个文件夹有两个文件 a txt b pdf 那么它们都应该从一个命令重命名为 Unix a txt Unix b pdf 如果您的文件名包含没有空格并且你没有任何子目录 你可以使用一个简单
  • 从 Linux 命令行发送 SNMP 陷阱消息

    Folks 我需要从 Linux 命令行使用此命令 snmptrap 将自定义消息发送到陷阱侦听器 我需要根据用户设置在 v1 和 v2c 中发送相同的消息 这是我发现的 For v1 snmptrap v 1 c Tas hostname
  • 是否可以找到哪个用户位于 localhost TCP 连接的另一端?

    这是一个编程问题 但它是 Linux Unix 特定的 如果我从本地主机获得 TCP 连接 是否有一种简单的方法可以告诉哪个用户在 C 程序内建立了连接而无需 shell 我知道这对于 Unix 域套接字来说并不太难 我已经知道远程 IP
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是

随机推荐