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

news2024/11/24 19:17:37

前言:

本文是一篇关于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       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      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       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.linuxprobe.com.
        A       192.168.31.128
        AAAA    ::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.coloradmin.cn/o/1434013.html

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

相关文章

SpringMVC速成(一)

文章目录 SpringMVC速成(一)1.SpringMVC概述2.SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行…

《短链接--阿丹》--技术选型与架构分析

整个短链接专栏会持续更新。有兴趣的可以关注一下我的这个专栏。 《短链接--搭建解析》--立项+需求分析文档-CSDN博客 阿丹: 其实整套项目中的重点,根据上面的简单需求分析来看,整体的项目难题有两点。 1、快速的批量生成短链,并找到对应的存储。 并且要保持唯一性质。…

解析qlib表达式引擎

定义基础类 import abc import pandas as pd import numpy as np import reclass Expression(abc.ABC):def __str__(self):return type(self).__name__def __repr__(self):return str(self)def __add__(self, other):return Add(self, other) # 重载运算符 def __radd__(sel…

数字孪生网络攻防模拟与城市安全演练

在数字化浪潮的推动下,网络攻防模拟和城市安全演练成为维护社会稳定的不可或缺的环节。基于数字孪生技术我们能够在虚拟环境中进行高度真实的网络攻防模拟,为安全专业人员提供实战经验,从而提升应对网络威胁的能力。同时,在城市安…

ONLYOFFICE 8.0 正式发布:开发者视角

ONLYOFFICE 8.0 正式发布:开发者视角 😊引言 🎉 一、ONLYOFFICE介绍🌟 二. 开发者版与企业版介绍ONLYOFFICE 文档开发者版ONLYOFFICE 文档企业版 🤓 三. 开发者的主要特点1.开源模式2.自主部署,保障数据安全…

算法day10

算法day10 20 有效的括号1047 删除字符串中的所有相邻重复性150 逆波兰表达式求值 20 有效的括号 拿到这个题的想法,首先我在想我能不能用数组的操作来扫描做。后来想想,如果这样做那特判也太多了,不好做。然后第二个想法就是用栈来做&…

[Python]MacBook安装pyenv多版本管理

对比之前文章提到过Go的多版本工具[每周一更]-(第54期):Go的多版本管理工具相应的经验,然后本地将python也配置下多版本切换,有助于项目的灵活切换; 以下展示用MacBook系统做个栗子;其他系统见末尾的参考; …

力扣热门100题刷题笔记 - 10. 正则表达式匹配

力扣热门100题 - 10. 正则表达式匹配 题目链接:10. 正则表达式匹配 题目描述: 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配&#xff…

echarts使用之地图(五)

1 基本使用 百度地图 API : 使用百度地图的 api , 它能够在线联网展示地图 , 百度地图需要申请 ak 矢量地图 : 可以离线展示地图 , 需要开发者准备矢量地图数据。本文使用该方式。 json格式的数据如下&#xff1a; 格式参照&#xff1a;GeoJSON <!DOCTYPE html&…

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

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

windows10忘记密码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C语言——O/动态内存管理

目录 一、为什么要有动态内存分配 二、malloc 和 free 1、malloc 2、free 三、calloc和realloc 1、calloc 2、realloc 四、常见的动态内存的错误 1、对NULL指针的解引用操作 2、对动态开辟空间的越界访问 3、对非动态开辟内存使用 free 释放 4、使用free释放一块动…

必看!第六版CCF(中国计算机学会)推荐A类国际学术会议!

中国计算机学会 中国计算机学会&#xff08;CCF&#xff09;是全国性、学术性、非营利的学术团体&#xff0c;由从事计算机及相关科学技术领域的个人和单位自愿组成。作为独立社团法人&#xff0c;CCF是中国科学技术协会的成员之一&#xff0c;是全国一级学会&#xff01; CCF的…

JetPack Compose之Button使用指南

Jetpack Compose系列(8) - Button 跟View体系一样&#xff0c;Compose通过Button来显示按钮状态及响应相关事件等。官方表示其默认遵从Material Design设计理念。 OptIn(ExperimentalMaterialApi::class) Composable fun Button(onClick: () -> Unit,modifier: Modifier …

新数据不影响原来的数据

问题描述 新数据修改时&#xff0c;原来的数据也会受影响 const obj1 ref({ name: slx, age: 20 })const obj2 obj1obj2.value.name hhhhconsole.log(obj1, obj1.value)console.log(obj2, obj2.value)解决方法 (仅适用于对象 在这段代码中&#xff0c;obj1 和 obj2 指向同…

深度学习(生成式模型)—— Consistency Models

文章目录 前言预备知识&#xff1a;SDE与ODEMethod实验结果 前言 Diffusion model需要多次推断才能生成最终的图像&#xff0c;这将耗费大量的计算资源。前几篇博客我们已经介绍了加速Diffusion model生成图像速率的DDIM和Stable Diffusion&#xff0c;本节将介绍最近大火的Co…

idea中找到所有的TODO

idea中找到所有的TODO &#xff08;1&#xff09;快捷键 Alt6 &#xff08;2&#xff09;View -> Tool Windows -> TODO

【GameFramework框架】二、GameFramework框架介绍

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程

说明&#xff1a; 安装与卸载中&#xff0c;用户全部切换成为 root&#xff0c;一旦安装&#xff0c;普通用户就能使用。 一、卸载内置环境 1、卸载不要的环境 [rootVM-8-5-centos ~]$ ps ajx | grep mariadb # 先检查是否有mariadb存在 13134 14844 14843 13134 pts/0 14843…

ASP.NET Core 预防开放式重定向攻击

写在前面 为预防钓鱼网站的常用套路&#xff0c;在进行 Web 应用程序的开发时&#xff0c;原则上应该将所有由用户提交的数据视为不可信。如果应用程序中包含了基于 URL 内容重定向的功能&#xff0c;需要确保这种类型的重定向操作只能在应用本地完成&#xff0c;或者明确判断…