在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 的 NetBeans 中编译 C++ 和 OpenGL (GLFW) 的简单源代码

    我开始学习 OpenGL glfw 我从教程中复制源代码并尝试编译它 但出现了错误 我想我已经正确安装了所有头文件 glm glfw 等 这是我的来源 我没有在头文件中使用这些字符 include iostream include stdi
  • 内核驱动程序从用户空间读取正常,但写回始终为 0

    因此 我正在努力完成内核驱动程序编程 目前我正在尝试在应用程序和内核驱动程序之间构建简单的数据传输 我使用简单的字符设备作为这两者之间的链接 并且我已成功将数据传输到驱动程序 但我无法将有意义的数据返回到用户空间 内核驱动程序如下所示 in
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • 确定 TCP Listen() 队列中当前积压的连接数

    有没有办法找出currentLinux 上 TCP 套接字上等待 Accept 的连接尝试次数 我想我可以在每个事件循环上点击 EWOULDBLOCK 之前计算成功的 Accept 数量 但我使用的是隐藏这些细节的高级库 Python Tw
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐