DNS主从同步及解析

DNS 域名解析原理

  • 域名系统的层次结构 :DNS 采用分层树状结构,顶级域名(如.com、.org、.net 等)位于顶层,下面是二级域名、三级域名等。例如,在域名 “www.example.com” 中,“com” 是顶级域名,“example” 是二级域名,“www” 是主机名。

  • 域名解析的过程 :当用户在浏览器中输入一个域名时,首先会查询本地 DNS 缓存,若找到则直接返回 IP 地址。若未找到,系统会向本地 DNS 服务器发送查询请求。本地 DNS 服务器先查询自己的缓存,若命中则返回结果;否则,会向根 DNS 服务器查询顶级域名服务器的地址,再向顶级域名服务器查询权威域名服务器的地址,最后向权威域名服务器查询具体的 IP 地址,并将结果逐级返回给用户。

DNS 主从同步实现过程

  1. 准备两台 DNS 服务器 :通常需要两台服务器,一台作为主 DNS 服务器,另一台作为从 DNS 服务器。

  2. 配置主 DNS 服务器 :在主 DNS 服务器上,编辑 named.conf 文件,添加区域定义,指定区域文件和允许进行区域传输的从 DNS 服务器 IP 地址。例如:

    • 区域定义示例:

      • zone “example.com” IN { type master; file “/var/named/example.com.zone”; allow-transfer {192.168.1.2;}; };

      • 其中,“example.com” 是要解析的域名,“master” 表示这是主 DNS 服务器,“/var/named/example.com.zone” 是区域文件的路径,“allow-transfer” 指定允许进行区域传输的从 DNS 服务器 IP 地址为 192.168.1.2。

  3. 配置从 DNS 服务器 :在从 DNS 服务器上,编辑 named.conf 文件,添加区域定义,指定区域类型为 “slave”,并指定主 DNS 服务器的 IP 地址和区域文件的存储位置。例如:

    • 区域定义示例:

      • zone “example.com” IN { type slave; masters {192.168.1.1;}; file “/var/named/example.com.zone”; };

      • 其中,“masters” 指定主 DNS 服务器的 IP 地址为 192.168.1.1。

  4. 启动 DNS 服务 :在两台服务器上分别启动 named 服务,并设置为开机自启。

  5. 测试主从同步 :在主 DNS 服务器上修改区域文件,如添加或修改某个域名记录,然后保存文件并通知 named 服务重新加载配置。在从 DNS 服务器上,使用 “rndc status” 命令查看同步状态,也可以使用 “dig” 命令查询域名记录,验证是否已经同步成功。

这些实验需要在 Linux 环境下进行实际操作和配置,你可以根据具体的 Linux 发行版和网络环境进行相应的调整和设置。

在DNS域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将自己负责的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。

本文IP地址为随机出现仅为示例所用,若要实验请以自身IP为准。

那么今天我们来做两个实验

实验3:主从同步-完全区域传送 当一个新的DNS服务器添加到区域中并配置为从DNS服务器时,它则会执行 完全区域传送


按i编辑将内容更改以达到完全区域传送

$TTL 1D

  • $TTL :定义了该区域文件中所有记录的默认生存时间(TTL,Time to Live)。TTL 用于指定 DNS 记录在 DNS 缓存中的有效期,单位是秒。这里设置为 1D,即 1 天。当一个 DNS 记录被查询后,它会在缓存中保留 1 天的时间,之后缓存会过期并需要重新查询 DNS 服务器获取最新的记录。

@ IN SOA xixi.admin. (

  • @ :代表当前区域的根(即该区域的起始点)。

  • IN :表示互联网类(Internet class),这是 DNS 记录的类型之一,用于指定记录适用于互联网。

  • SOA :开始授权启动(Start of Authority)记录,是一个区域的权威信息,包含了关于该区域的一些重要参数,如主 DNS 服务器、管理员邮箱、序列号、刷新时间、重试时间、过期时间和最小生存时间等。

  • xixi.admin. :这里应该是管理员邮箱的前缀部分。在 DNS 配置中,通常会省略 “@” 符号,只保留邮箱的前缀部分,后面加上一个点来表示域名的结尾。例如,如果管理员邮箱是 xixi@admin.com,这里可能会写成 xixi.admin.(不过这个例子可能不太准确,因为实际应用中可能需要正确配置域名格式,但这里主要是为了说明这个字段的含义)。

0 ; serial

  • 0 :序列号,用于标识区域文件的版本。当区域文件发生更改时,序列号应该递增,以便通知从 DNS 服务器该区域文件已更新,从而触发区域传输。序列号的格式通常是年月日序号的形式,例如 2024092501 表示 2024 年 9 月 25 日的第一次更新。这里的 0 是一个简单的示例,但在实际应用中应该使用更合理的编号方式。

1D ; refresh

  • 1D :刷新时间,即从 DNS 服务器检查主 DNS 服务器以获取区域更新的时间间隔。这里设置为 1 天,表示从 DNS 服务器每隔 1 天会向主 DNS 服务器发送一次查询,以检查区域文件是否有更新。

1H ; retry

  • 1H :重试时间,如果从 DNS 服务器在刷新时间内未能成功获取区域更新,会等待这个时间后再次尝试获取更新。这里设置为 1 小时,表示如果第一次尝试失败,会在 1 小时后重新尝试获取区域更新。

1W ; expire

  • 1W :过期时间,表示如果从 DNS 服务器在过期时间内未能成功获取区域更新,它将停止响应关于该区域的查询请求。这里设置为 1 周(1W),表示如果从 DNS 服务器在 1 周内无法获取区域更新,它将不再提供该区域的 DNS 解析服务。

3H ) ; minimum

  • 3H :最小生存时间,用于指定该区域的 DNS 记录在缓存中的最小生存时间。当一个 DNS 记录被查询后,它在缓存中的生存时间不会低于这个值。这里设置为 3 小时,表示即使区域文件中某个记录的 TTL 值低于 3 小时,也会以 3 小时为准。这个字段以 “)” 结束,表示 SOA 记录的结束。

dns NS dns

  • dns :这是该区域的一个域名记录,表示该区域的权威 DNS 服务器的名称。

  • NS :名称服务器(Name Server)记录,用于指定该区域的权威 DNS 服务器。

  • dns :这里表示该区域的权威 DNS 服务器的名称为 “dns”,通常需要与一个 A 记录关联,以指定其 IP 地址。

www A 192.168.5.128

  • www :这是该区域的一个域名记录,表示一个主机名。

  • A :地址(Address)记录,用于将域名解析到一个 IPv4 地址。

  • 192.168.5.128 :这是 “www” 主机对应的 IPv4 地址,表示当用户查询 “www. 该区域域名” 时,DNS 服务器会返回这个 IP 地址。

以下是对这段配置文件的整体总结:

  • 这段配置文件定义了一个 DNS 正向解析区域,其中包含了该区域的 SOA 记录、NS 记录和 A 记录。

  • SOA 记录提供了区域的基本信息和参数,如序列号、刷新时间、重试时间、过期时间和最小生存时间等。

  • NS 记录指定了该区域的权威 DNS 服务器的名称。

  • A 记录将一个主机名(如 “www”)解析到一个具体的 IP 地址(如 “192.168.5.128”)。

  • 这些记录共同作用,使得 DNS 服务器能够正确地将域名解析到对应的 IP 地址,从而实现域名解析的功能。

zone "12138.com." IN {type master;file "named.12138.com";
};
[root@server ~]# vim /var/named/named.12138.com 
$TTL 1D
@       IN SOA @ admin.12138.com. ( 1 1M 1H 1W 1H )IN NS ns.12138.com. IN NS slave.12138.com.
ns      IN A 192.168.78.132
slave IN A 192.168.78.132
mail IN A 192.168.78.123
www IN A 192.168.78.123
ftp IN CNAME www
w IN CNAME www
编辑好之后退出即可。
接下来配从机:134

[root@slave ~]# systemctl start named
[root@slave ~]# vim /etc/named.conf allow-query     { any; };#这个可以没有listen-on port 53 { 192.168.78.134; }; 
zone "12138.com" IN {type slave;masters { 192.168.78.132; };file "slaves/named.12138.com";
};
[root@slave ~]# systemctl restart named
[root@slave ~]# ll /var/named/slaves/
总用量 4
-rw-r--r--. 1 named named 493  8月 29 07:33 named.12138.com
#测试:133
[root@client ~]# host www.12138.com 192.168.78.134
Using domain server:
Name: 192.168.78.134
Address: 192.168.78.134#53
Aliases: 
www.12138.com has address 192.168.78.123

这样,测试完成就可以了

到下一个实验

实验4:主从同步-增量区域传输 在主DNS服务器上获取完整的资源记录副本;同时,为了保证数据同步,主域名服务器有更新时也会及时通知辅助域
名服务器从而执行 增量区域传送
无法在辅助服务器上更改区域的DNS记录,但在某些情况下,辅助服务器可以将更改请求传递到主服务器。
#主:132
[root@server ~]# vim /var/named/named.12138.com 
$TTL 1D
@       IN SOA @ admin.12138.com. ( 3 1M 1H 1W 1H )IN NS ns.12138.com. IN NS slave.12138.com.IN MX 10 mail.12138.com.
ns      IN A 192.168.78.132
slave IN A 192.168.78.132
mail IN A 192.168.78.123
www IN A 192.168.78.123
ftp IN CNAME www
w IN CNAME www
[root@slave ~]# systemctl restart named
#从134
[root@slave ~]# rndc  refresh  12138.com
zone refresh queued
#测试
[root@client ~]# host w.zhang.com 192.168.78.134
Using domain server:
Name: 192.168.78.134
Address: 192.168.78.134#53
Aliases: 
w.12138.com is an alias for www.12138.com.
www.12138.com has address 192.168.78.123

这样就可以完成实验咯

后面可以用[root@localhost ~]# rndc  refresh  zhang.com
[root@localhost ~]# rndc  refresh  5.168.192.in-addr.arpa这两条命令来测试是否成功

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

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

相关文章

再看 BBR 到 BBRv3 的公平性改进

从看一篇论文开始:Performance Evaluation of TCP BBRv3 in Networks with Multiple Round Trip Times,结论比较悲观: 虽然 BBRv2/3 试图解决 BBRv1 的公平性问题,但结果依旧不够理想,BBR 的迭代依旧任重而道远。 BB…

locust压力测试

安装 pip install locust验证是否安装成功 locust -V使用 网上的教程基本上是前几年的,locust已经更新了好几个版本,有点过时了,在此做一个总结 启动 默认是使用浏览器进行设置的 # 使用浏览器 locust -f .\main.py其他参数 Usage: locust […

优先队列和单调队列(双端队列实现的)

这里写自定义目录标题 一、优先队列与单调队列二、优先队列2.1 概念2.2 增删查 判空2.3 示例代码 三、双端队列四、单调队列4.1 单调递增队列4.2 单调递减队列 一、优先队列与单调队列 二、优先队列 2.1 概念 一种特殊的队列,它与普通队列的主要区别在于元素的出…

如何在idea中写spark程序

在 IntelliJ IDEA 中编写 Spark 程序是一个高效且便捷的方式,以下是一个详细的步骤指南,帮助你在 IntelliJ IDEA 中创建和运行 Spark 程序。 一、环境准备 安装 Java: 确保已经安装了 JDK 1.8 或更高版本。可以通过以下命令检查:…

BERT BERT

BERT ***** 2020年3月11日更新:更小的BERT模型 ***** 这是在《深阅读的学生学得更好:预训练紧凑模型的重要性》(arXiv:1908.08962)中提到的24种较小规模的英文未分词BERT模型的发布。 我们已经证明,标准的BERT架构和…

SpringBoot启动警告:OpenJDK 64-Bit Server VM warning

问题描述 以Debug模式启动Spring boot项目之后,日志打印:OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended, 警告信息 解决方案:配置VM opt…

“该虚拟机似乎正在使用中“

当某一天打开虚拟机突然弹出"该虚拟机似乎正在使用中"。 遇到这种问题的解决方法很简单,出现这种问题是因为错误关闭虚拟机导致,当我们点击获取所有权时发现不能解决问题。这里分享一种简单的解决方法。 打开虚拟机的文件目录 找到lck文件夹下…

【CSS】层叠,优先级与继承(三):超详细继承知识点

目录 继承一、什么是继承?2.1 祖先元素2.2 默认继承/默认不继承 二、可继承属性2.1 字体相关属性2.2 文本相关属性2.3 列表相关属性 三、不可继承属性3.1 盒模型相关属性3.2 背景相关属性 四、属性初始值4.1 根元素4.2 属性的初始值4.3 得出结论 五、强制继承5.1 in…

Android LiveData关键代码

1、observer方法 public void observe(NonNull LifecycleOwner owner, NonNull Observer<? super T> observer) {assertMainThread("observe");if (owner.getLifecycle().getCurrentState() DESTROYED) {// ignorereturn;}LifecycleBoundObserver wrapper …

Docker-高级使用

前言 书接上文Docker-初级安装及使用_用docker安装doccano-CSDN博客&#xff0c;我们讲解了Docker的基本操作&#xff0c;下面我们讲解的是高级使用&#xff0c;请大家做好准备&#xff01; 大家如果是从初级安装使用过来的话&#xff0c;建议把之前镜像和搭载的容器数据卷里面…

Spring Boot常用注解详解:实例与核心概念

Spring Boot常用注解详解&#xff1a;实例与核心概念 前言 Spring Boot作为Java领域最受欢迎的快速开发框架&#xff0c;其核心特性之一是通过注解&#xff08;Annotation&#xff09;简化配置&#xff0c;提高开发效率。注解驱动开发模式让开发者告别繁琐的XML配置&#xff…

TRO再添新案 TME再拿下一热门IP,涉及Paddington多个商标

4月2日和4月8日&#xff0c;TME律所代理Paddington & Company Ltd.对热门IP Paddington Bear帕丁顿熊的多类商标发起维权&#xff0c;覆盖文具、家居用品、毛绒玩具、纺织用品、游戏、电影、咖啡、填充玩具等领域。跨境卖家需立即排查店铺内的相关产品&#xff01; 案件基…

经验分享-上传ios的ipa文件

.ipa格式的二进制文件&#xff0c;是打包后生成的文件&#xff0c;无论我们是放上去testflight测试还是正式上传到app store&#xff0c;都需要先上传到苹果开发者中心的app store connect上的构建版本上。 在app store connect上&#xff0c;上传构建版本的功能&#xff0c;它…

docker(3) -- 图形界面

1. 前言 在wsl(8) – 图形界面文章中介绍了wsl2默认是支持图形界面的&#xff0c;现在我们尝试下在docker中运行gui程序试试看。 2. x11-apps 启动一个docker&#xff0c;安装一些gui小程序&#xff0c;然后运行&#xff0c;发现会失败。ubuntu_base详见文章wsl(6) – 安装d…

Docker容器跑定时任务脚本

最近搞了一个Docker容器跑脚本&#xff0c;想设置一个定时任务&#xff0c;每天8点运行一次&#xff0c;结果死活不成功。排查了一天&#xff0c;有一点当局者迷了&#xff0c;明明时间是对的&#xff0c;明明时区是对的&#xff0c;定时任务也是启动的&#xff0c;它就是不执行…

【Linux】什么是完全限定域名

FQDN 是 “完全限定域名” (Fully Qualified Domain Name) 的缩写。 FQDN 是一个互联网上特定计算机或主机的完整且唯一的域名。它详细说明了该主机在域名系统 (DNS) 层级结构中的确切位置。 一个 FQDN 通常由以下几个部分组成&#xff0c;从左到右依次是&#xff1a; 主机名…

小结:BFD

*BFD&#xff08;双向转发检测&#xff0c;Bidirectional Forwarding Detection&#xff09;是一种快速、轻量级的故障检测机制&#xff0c;用于检测网络中两点之间的连通性。它广泛应用于各种场景 1. 检测 IP 链路 应用场景&#xff1a; BFD 用于检测两台设备之间的 IP 层连…

配置Spark历史服务器,轻松查看任务记录

在大数据处理中&#xff0c;Spark是一个强大的分布式计算框架。但当Spark服务重启后&#xff0c;之前的运行记录就会消失&#xff0c;给我们排查问题和分析任务执行情况带来不便。这时&#xff0c;配置Spark历史服务器就显得尤为重要&#xff0c;它能帮助我们保存和查看历史任务…

(六)RestAPI 毛子(外部导入打卡/游标分页/Refit/Http resilience/批量提交/Quartz后台任务/Hateoas Driven)

文章目录 项目地址一、外部导入打卡功能1.1 创建实体1. Entry实体2. EntryImport实体3. 添加数据库配置4. 创建表 1.2 创建DTOs1.3 创建GetEnties Controller 二、游标分页2.1 创建所需要的DTOs1. 创建游标分页的请求参数2. 创建CollectionResponse3. 添加游标编码和解码的DTO …

Node.js CSRF 保护指南:示例及启用方法

解释 CSRF 跨站请求伪造 (CSRF/XSRF) 是一种利用用户权限劫持会话的攻击。这种攻击策略允许攻击者通过诱骗用户以攻击者的名义提交恶意请求,从而绕过我们的安全措施。 CSRF 攻击之所以可能发生,是因为两个原因。首先,CSRF 攻击利用了用户无法辨别看似合法的 HTML 元素是否…