Linux实验记录:使用BIND提供域名解析服务

前言:

本文是一篇关于Linux系统初学者的实验记录。

参考书籍:《Linux就该这么学》

实验环境:

VmwareWorkStation 17——虚拟机软件

RedHatEnterpriseLinux[RHEL]8——红帽操作系统

备注:

  为了降低用户访问网络资源的门槛,域名系统(Domain Name System,DNS)技术应运而生。

这是一项用于管理和解析域名与IP地址对应关系的技术。

就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配的IP地址或域名,

正向解析:域名解析为IP地址

反向解析:IP地址解析为域名

实验1:安装bind服务程序

BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务器。

安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,确保整个服务器的安全。

yum install bind-chroot

在bind服务程序中有三个比较关键的文件:

主配置文件(/etc/named.conf):用来定义bind服务程序的允许

区域配置文件(/etc/named.rfc1912.zones):

该目录用来保存域名和IP地址对应关系所在位置。

数据配置文件目录(/var/named):

该目录用来保存域名和IP地址真实对应关系的数据配置文件。

vim /etc/named.conf

在Linux系统中,bind服务程序的名称为named。

在/etc目录找到主配置文件,把第11行和第19行地址均修改为any,

分别表示:服务器上所有IP地址均可提供DNS域名解析服务、允许所有人对本服务器发起DNS查询请求

   下面的实验会分别修改bind服务程序的主配置文件、区域配置文件与数据配置文件。

如果遇到bind服务程序启动失败的情况,执行:

named-checkconf
named-checkzone

检查参数是否写错。

实验2:正向解析实验

  在域名解析服务中,正向解析:根据域名查找到对应的IP地址/

当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户。

Step1:配置区域配置文件

vim /etc/named.rfc1912.zones

 

Step2:编辑数据配置文件。

可以从/var/named 目录中复制一份正向解析的模板文件(named.localhost)

然后把域名和IP地址的对应数据填写数据配置文件并保存。

复制时,-a参数可以保留原始文件的所有者、所属组、权限属性信息,以便让bind服务程序读取。

cd /var/named/
ls -al named.localhost
cp -a named.localhost linuxprobe.com.zone
vim linuxprobe.com.zone
$TTL 1D
@       IN SOA  linuxprobe.com. root.linuxprobe.com (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      ns.linuxprobe.com.
ns      IN      A       192.168.31.128
www     IN      A       192.168.31.128

Step3:检验解析结果

要把Linux系统网卡中的DNS地址参数修改成本机IP地址,这样就可以使用由本机提供的DNS查询服务了,nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,进而更准确地检测DNS服务器是否已经能够为用户提供服务。

实验3:反向解析实验

  反向解析将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。

Step1:编辑区域配置文件

在定义区域时,要把IP地址反写。

vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type master;file "linuxprobe.com.zone";allow-update {none;};
};
zone "31.168.192.in-addr.arpa" IN {type master;file "192.168.31.arpa";allow-update {none;};
};

 Step2:编辑数据配置文件

cd /var/named
cp -a named.loopback 192.168.31.arpa
vim 192,168.31.arpa

 

$TTL 1D
@       IN SOA  Linuxprobe.com. Root.linuxprobe.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      ns.linuxprobe.com.A       192.168.31.128AAAA    ::1
10      PTR     na.linuxprobe.com.
10      PTR     www.linuxprobe.com.
20      PTR     bbs.linuxprobe.com.
systemctl restart named

 Step3:检验解析结果

正向解析和反向解析实验完成。

 实验4:部署从服务器

    在DNS域名解析服务中,从服务器可以从主服务器上获取指定的数据文件,从而起到备份解析记录与负载均衡的作用。因此,通过部署从服务器不仅可以减轻主服务器的负载压力,还可以提升用户的查询效率。

主机名称操作系统IP地址
主服务器RHEL 8192.168.31.128
从服务器RHEL 8192.168.31.130

Step1:在主服务器上的区域配置文件中允许该从服务器更新请求

即修改allow-update参数,然后重启服务器的DNS程序

vim /etc/named.rfc1912.zones 
zone "linuxprobe.com" IN {type master;file "linuxprobe.com.zone";allow-update {192.168.31.130;};
};
zone "31.168.192.in-addr.arpa" IN {type master;file "192.168.31.arpa";allow-update {192.168.31.130;};
};

Step2:在主服务器上配置防火墙放行规则

iptables -F 
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload

Step3:在从服务器上安装bind-chroot软件包,修改配置文件,测试与主服务器网络连通性

dnf install bind-chroot
vim /etc/named.conf

Step4:在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务

vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {type slave;masters { 192.168.31.128; };file "slaves/linuxprobe.com.zone";
};
zone "31.168.192.in-addr.arpa" IN {type slave;masters { 192.168.31.128; };file "slaves/192.168.31.arpa";
};
systemctl restart named

 Step5:检测解析结果

将从服务器DNS指向自身IP地址。

实验完成。

实验5:安全的加密传输

  互联网中绝大多数DNS服务器都是基于BIND域名解析服务搭建的,而bind服务程序为了提供安全的解析服务,已经对TSIG加密机制提供了支持。

  TSIG主要是利用了密码编码的方式来保护区域信息的传输,即TSIG加密机制保证了DNS服务器之间传输域名信息的安全性。

接上文,此时从服务器可以获取到主服务器上的数据配置文件

rm -rf /var/named/slaves/*

Step1:在主服务器中生成密钥

  dnssec-keygen命令用于生成安全的DNS服务密钥,

格式:"dnssec-keygen[参数]“

参数作用
-a指定加密算法,包括:RSAMD5、RSASHA1、DSA
-b密钥长度
-n密钥的类型

生成一个主机名称为master-slave的128位HMAC-MD5算法的密钥文件。

需要把私钥文件中Key参数后面的值记录下来,一会儿要将其写入传输配置文件中。

[root@linuxprobe ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+18003
[root@linuxprobe ~]# ls -l Kmaster-slave.+157+18003.*
-rw-------. 1 root root  56 Feb  4 20:07 Kmaster-slave.+157+18003.key
-rw-------. 1 root root 165 Feb  4 20:07 Kmaster-slave.+157+18003.private
[root@linuxprobe ~]# cat Kmaster-slave.+157+18003.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: qvwiBDk12W9lczRsWhNtHQ==
Bits: AAA=
Created: 20240204120748
Publish: 20240204120748
Activate: 20240204120748

Key: qvwiBDk12W9lczRsWhNtHQ== 

Step2:在主服务器中创建密钥验证文件。

进入bind服务程序用于保存配置文件的目录,把刚刚生成的密钥名称、加密算法和私钥加密字符串按照格式写入tansfer.key传输配置文件中。

为了安全起见,需要将文件的所属组修改成named,并将文件权限设置小一定,创建一个硬链接,指向/etc目录。

cd /var/named/chroot/etc/
vim transfer.key
key "master-slave" {algorithm hmac-md5;secret "qvwiBDk12W9lczRsWhNtHQ==";
};
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key

Step3:开启并加载bind服务的密钥验证功能。

首先需要在主服务器的主配置文件中加载密钥验证文件,然后进行设置,使得只允许带有master-slave密钥认证的DNS服务器同步数据配置文件。

vim /etc/named.conf

   现在:DNS主服务器的TSIG密钥加密传输功能已经配置完成。

然后清空DNS从服务器同步目录中的数据配置文件,重启bind服务。已经无法自动获取数据配置文件。

 Step4:配置从服务器使其支持密钥验证。

在bind服务程序的配置文件目录中创建密钥认证文件,并设置相应的权限,然后设置该文件的一个硬链接,并指向/etc目录,

cd /var/named/chroot/etc/
vim transfer.key
key "master-slave" {algorithm hmac-md5;secret "qvwiBDk12W9lczRsWhNtHQ==";
};
chown root:named transfer.key
chmod 640 transfer.key
ln transfer.key /etc/transfer.key

 Step5:开启并加载从服务器的密钥验证功能。

在主配置文件中加载密钥认证文件,然后按照指定的格式写上主服务器的IP地址和密钥名称。

这里参数位置不宜太靠前:51行处左右较为合适

 Step6:DNS从服务器同步域名区域数据。

现在两台服务器的bind服务程序都已经配置妥当,并匹配到了相同的密钥认证文件。

systemctl restart named
ls /var/named/slaves/

  实验成功。

实验6:部署缓存服务器

DNS缓存服务器是一种不负责域名数据维护的DNS服务器。

简单来说,缓存服务器就是把用户经常使用到的域名与IP地址解析记录保存在主机本地,从而提升下次解析的效率。

DNS缓存服务器一般用于经常访问某些固定站点而对这些网站的访问速度由较高要求的企业内网中,但实际的应用并不广泛。

缓存服务器是否可以成功解析还与指定的上级DNS服务器的允许策略有关。

Step1:配置系统的双网卡参数。

为了更加贴近真实的网络环境,实现外网查询功能,在缓存服务器再添加一块网卡。

主机名称操作系统IP地址
缓存服务器

RHEL 8 

网卡(外网):根据物理设备的网络参数进行配置

网卡(内网):192.168.31.128

客户端RHEL 8192.168.31.130

Step2:将新添加的网卡设置为“桥接模式”

Step3:在bind服务的主配置文件中添加缓存转发参数。

在大约第二十行添加参数:"forwarders{上级DNS服务器地址;};"

上级DNS服务器地址指的是获取数据配置文件的服务器。

iptables -F
iptables-save
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload

Step4:重启DNS服务,验证成果

客户端主机的DNS服务器地址参数改为缓存服务器的IP地址。

然后重启客户端网络。

关于报错和排查:

如果检查配置无误,未显示报错,但运行结果异常:

执行:

cat /var/named/data/named.run

查看日志,分析报错原因。 

设置防火墙:

iptables -F
iptables-save
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle

目录 RDD持久化 RDD 的数据是过程数据 RDD 缓存 RDD CheckPoint 共享变量 广播变量 累加器 Spark 内核调度 DAG DAG 的宽窄依赖和阶段划分 内存迭代计算 Spark是怎么做内存计算的? DAG的作用?Stage阶段划分的作用? Spark为什么比MapReduce快? Spar…

【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode:1883. 准时抵达会议现场的最小跳过休息次数 给你一个整数 hoursBefore ,表示你要前往会议所剩下的可用小时数。要想成功抵达会议现场&#…

pthread实现生产者消费者模式

总感觉Java线程这块缺了些啥,看源代码有时候看不太懂。因此就萌生了我下面的想法,学习pthread的相关知识,去探究Java Thread对象的底层是如何实现。基于这样的缘由我在某位大佬的基础写了下面的代码。 之前没有写过pthrea的代码,这…

Springboot写一个对接钉钉机器人的小插件

钉钉机器人 有时候我门需要监控各种事件,需要机器人给我发给提醒 如:git代码交接,代码合并, 服务器异常捕获,。。。。 参照钉钉给我们的开发文档,可以发现对接起来是非常简单哈哈 这是我写的小插件以及例子…

ChatGPT生产力|chat gpt实战介绍

标注说| ⭐ : 使用稳定,推荐 | 😄 : 免费使用 | 🔑 : 需要登陆或密码 | ✈️ : 需waiwang进行访问 | ChatGPT 1PoePoe - Fast, Helpful ...🔑😄🔗2 AItianhuGPT4😄⭐🔗3 PhantoNa…

XCTF:3-1[WriteUP]

从题目中获取文件 使用file命令查看文件类型 修改后缀为.rar后进行解压缩 再次使用file命令查询该文件的类型 再次修改后缀为.pcap或者.pcapng 使用wireshark打开,直接搜索flag字样 在多个数据包里发现了flag.rar、flag.txt等文件 尝试使用http导出文件 有一个fl…

数据结构——框架简介

1.数据结构的作用 数据结构是计算机科学中一种重要的概念,它主要用于组织和存储数据以便有效地进行操作。数据结构可以看作是数据的组织方式,通过合理的数据结构设计,可以更高效地执行各种操作,提高程序的性能和可维护性。 以下是…

文献速递:肿瘤分割---- ALA-Net:用于3D结直肠肿瘤分割的自适应病变感知注意力网络

文献速递:肿瘤分割---- ALA-Net:用于3D结直肠肿瘤分割的自适应病变感知注意力网络 01 文献速递介绍 结直肠癌(CRC)在全球范围内与高发病率和死亡率相关,。肿瘤的预后高度依赖于诊断时疾病的阶段。准确检测和分割肿瘤…

不需英文基础也可以轻松学编程,中文编程开发工具免费版下载,编程工具构件箱之扩展控制面板构件用法

不需英文基础也可以轻松学编程,中文编程开发工具免费版下载,编程工具构件箱之扩展控制面板构件用法 一、前言 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——常…

1-3 动手学深度学习v2-线性回归的从零开始实现-笔记

手动创建训练数据集 根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数 w [ 2 , − 3.4 ] T \pmb{w} [2,-3.4]^{T} w[2,−3.4]T、 b 4.2 b 4.2 b4.2和噪声项 ϵ \epsilon ϵ生成数据集及其标签: y X w b ϵ \pmb{y} \pmb{Xw}b\epsilon yXw…

2024年【化工自动化控制仪表】考试题及化工自动化控制仪表最新解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年化工自动化控制仪表考试题为正在备考化工自动化控制仪表操作证的学员准备的理论考试专题,每个月更新的化工自动化控制仪表最新解析祝您顺利通过化工自动化控制仪表考试。 1、【单选题】()指用多个相…

spring-security authentication persistence

翻译版本【spring-security 6.2.1】persistence Persisting Authentication 用户第一次请求受保护的资源时,系统会提示他们输入凭据。提示输入凭据的最常见方法之一是将用户重定向到登录页面。未经身份验证的用户请求受保护的资源的HTTP交换可能如下所示: 例1。未…

关于Linux和消息队列常见的十道面试题

实际工作中如何排查CPU飙升问题? 在实际工作中,我们可以通过以下步骤来排查CPU飙升的问题: 使用系统监控工具:首先,我们可以使用系统监控工具,如top命令,来查看所有进程占系统CPU的排序。这样可…

UML---用例图,类图

用例图 用例图(Use Case Diagram)主要描述系统的功能需求和参与者与系统之间的交互。它是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。用例图被视为系统的蓝图,通过它,人们可以获知系统不同种…

mysql:事务的特性ACID、并发事务(脏读、不可重复读、幻读、如何解决、隔离级别)、undo log和redo log的区别、相关面试题和答案

事务是一组操作的集合,它会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的特性(ACID) 原子性(Atomicity):事务是不可分割的…

idea开发工具的简单使用与常见问题

1、配置git 选择左上角目录file->setting 打开,Version Control 目录下Git,选择git安装目录下的git.exe文件; 点击test,出现git版本,则表示git识别成功,点击右下角确认即可生效。 2、配置node.js 选…

ubuntu开机报错/dev/nume0n1p2:clean

本来是开机卡在这个界面,经过以下操作,变成这种了 现在的问题变成linux卡在 failed to start NVIDIA Persistence Daemon 按照下面的操作方法,可以有开机界面了。但是输入密码后,一直在登录界面 1.方式一:重新安装显…

TypeScript 学习笔记(Day4)

「写在前面」 本文为 b 站黑马程序员 TypeScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. TypeScript 学习笔记(Day1) 2. TypeScript 学习笔…

【计算机网络】Socket的SO_TIMEOUT与连接超时时间

SO_TIMEOUT选项是Socket的一个选项,用于设置读取数据的超时时间。它指定了在读取数据时等待的最长时间,如果在指定的时间内没有数据可读取,将抛出SocketTimeoutException异常。 SO_TIMEOUT的设置 默认情况下,SO_TIMEOUT选项的值…

SystemVerilog约束随机(二)

文章目录 前言一、SystemVerilog约束随机1.1 集合操作set membership1.2 权重约束weighted constraints1.3 队列约束array constranint1.4 条件约束order constraints1.5 等价约束equivalence constraints1.6 顺序约束solver order 总结 前言 这里主要记录一下systemverilog中…