专栏名称: Linux就该这么学
专注于Linux运维技术培训,让您学习的每节课都有所收获,订阅本号后可每天获得最新Linux运维行业资讯、最实用的Linux免费教程以及独家Linux考证资料,三十多万技术小伙伴的选择,Linux就该这么学!
目录
相关文章推荐
Linux就该这么学  ·  Win10 更新翻车!USB DAC 音频设备罢工 ·  6 小时前  
Linux就该这么学  ·  鹅厂年终奖开奖细节流出,字节员工除超额年终奖 ... ·  6 小时前  
Linux就该这么学  ·  Linux TCP 内核参数设置与调优 ( ... ·  昨天  
Linux就该这么学  ·  Fedora 42 获准发布 WSL ... ·  昨天  
Linux就该这么学  ·  B站程序员在前端代码中 “ 投毒 ” ... ·  3 天前  
51好读  ›  专栏  ›  Linux就该这么学

Bind DNS 服务——DNS 正向解析

Linux就该这么学  · 公众号  · linux  · 2025-01-24 08:02

主要观点总结

本文介绍了在Linux环境下搭建Bind DNS服务的过程,包括环境准备、依赖安装、配置步骤和启动服务等内容。

关键观点总结

关键观点1: 文章概述了DNS服务的基本概念和实验环境准备。

文章首先介绍了DNS服务的作用和实验环境的搭建,包括在Linux环境下使用CentOS 8.3.2011版本的系统,IP地址为192.168.100.50的VMware虚拟环境等。

关键观点2: 文章详细描述了安装和配置Bind DNS服务的步骤。

文章介绍了如何安装net-tools、vim等常用工具,并解释了如何关闭SElinux和防火墙等安全措施。然后详细说明了Bind DNS服务的配置过程,包括主配置文件和区域文件的编写。

关键观点3: 文章介绍了DNS服务的启动和测试方法。

文章最后介绍了如何启动Bind DNS服务并测试其是否正常工作,包括修改文件所有者、开启自启服务并启动服务,以及使用主机测试DNS解析是否正常等步骤。


正文

链接:https://www.cnblogs.com/RichardLuo/p/DNS_P1.html

Linux基础服务——Bind DNS服务 Part1

DNS正向解析

实验环境:

CentOS8.3.2011 IP地址:192.168.100.50
VMware虚拟环境 NAT网段
需要解析的区域为 test.com


环境准备

Yum源配置(略),安装net-tools vim等常用工具。

highlighter- code-theme-dark Bash

[root@localhost ~]# yum install -y vim net-tools bind bind-utils
Last metadata expiration check: 0:00:07 ago on Thu 03 Jun 2021 08:07:03 AM EDT.
Package vim-enhanced-2:8.0.1763-15.el8.x86_64 is already installed.
Package net-tools-2.0-0.52.20160912git.el8.x86_64 is already installed.
Package bind-32:9.11.20-5.el8.x86_64 is already installed.
Package bind-utils-32:9.11.20-5.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!


关闭SElinux与防火墙(防火墙可选择开放相应服务或端口)

highlighter- code-theme-dark Bash

[root@localhost ~]# setenforce 0	(临时关闭SElinux,重启系统后SElinux将回到Enforcing状态)
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld(关闭防火墙与禁止防火墙开启自启动)


永久关闭SElinux方法

highlighter- code-theme-dark Bash

[root@localhost ~]# vim /etc/sysconfig/selinux


将文件内的 SELINUX=enforcing 改为 SELINUX=disabled

防火墙配置

highlighter- code-theme-dark Bash

[root@localhost ~]# firewall-cmd --add-service=dns --permanent
[root@localhost ~]# firewall-cmd --reload


(亦可开放tcp与udp53端口,若使用rndc则需开启tcp/953端口)


实验步骤

Bind主配置文件为/etc/named.conf,DNS区域文件存储与/var/named下,服务名称为named,服务账户为named,首先配置主配置文件。

highlighter- code-theme-dark Bash

[root@localhost ~]# vim /etc/named.conf


主配置文件默认分为options中的全局设置、logging的日志设置 、zone定义的区域设置和include包含其他的配置文件。
先查看下列的部分全局设置。

默认服务监听在IPV4和IPV6的本地环回的53端口上(TCP/UDP),并定义了服务所使用的文件与目录,指定了允许访问的主机,这些选项根据实际需要进行修改。我们将服务监听所有地址上、并允许任何主机进行访问。如下图所示。

对于日志的配置先按下不提,对于test.com这个域进行解析则需要先定义该区域。
如下图,默认配置已经定义了根(hint)区域,并包含了其他文件中预定义的区域。

我们可以直接在主配置文件中定义,也可以进入其他的配置文件进行定义(不建议进入默认的引入的配置文件定义区域),此处在主配置文件中进行定义。注意配置时行末需要添加分号

zone后跟双引号内的内容为区域名称
区域内的参数,type为区域类型。区域分为大致四个类型,分别是:

  • Forward(转发)

  • master(主)

  • salve(从)

  • hint(根)

file指的是区域文件保存的位置,默认路径是相对于/var/named目录下的。
此时对主配置文件的操作已经结束了


区域文件编写

接下来编写区域文件,进入/var/named目录

highlighter- code-theme-dark CSS

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves


默认/var/named目录具有以上内容,salves用于存放从域的区域文件,named.ca存放dns的根服务器的信息,一般编写区域文件可以复制named.localhost文件的内容开始,修改该文件的内容。

highlighter- code-theme-dark Bash

[root@localhost named]# cp named.localhost test.com.zones
[root@localhost named]# vim test.com.zones



默认文件内容如上

对于@符号的意义如下(Bind官网文档),可以理解为这里的@为区域名称后加上一个. 在这里的意思为test.com.

4.3.5.1. The @ (at-sign)
When used in the label (or name) field, the asperand or at-sign (@) symbol represents the current origin. At the start of the zone file, it is the , followed by a trailing dot (.).

第一行的$TTL设置了DNS信息的TTL 默认为1天
第二行则是本区域的SOA记录,SOA这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
紧随SOA的@代表着该区域的主DNS服务器,之后配置中我们将会替换该值,rname.invalid.为区域管理员的邮箱,邮箱地址中的@符号使用.进行替换。在后续括号中的内容则为其他的DNS相关信息。

  1. NS记录指定了那些主机能够为该域提供解析。

  2. A记录则是指定域名与IP地址关系的记录。

  3. AAAA则是IPV6的解析。
    记录的一般形式为 [域名] [类型] [IP地址]
    若域名为空,则会自动填充@在其中。

下面进行配置,结果如下图。

为什么部分A记录采用的是完全合格域名(FQDN),其他的则只需要整个域名的其中一部分呢?它们之间并没有区别,因为在区域文件中隐藏着一个变量——$ORIGIN。
这个变量实际上代表着区域名称后跟一个.(英文句点),它会对不是完全合格域名的记录进行补齐。
所以实际上NS记录的完整形式是 test.com. NS dns.test.com.
这样减轻了配置量,也使配置文件的可读性提高了,简单的区域文件编写完毕,可以启动服务以提供解析服务。


启动服务与功能检测

highlighter- code-theme-dark Bash

[root@localhost named]# chgrp named test.com.zones

修改文件所有者以使得named账户可读。
[root@localhost named]# systemctl enable --now named(开启自启服务并启动服务)


使用主机测试DNS解析是否正常。(解析成功)

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:2636170

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!