DNS正向解析,反向解析,双向解析,集群,远程更新,DDNS

2023-12-27 21:38

本文主要是介绍DNS正向解析,反向解析,双向解析,集群,远程更新,DDNS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。
以下实验需要做到selinux关闭,以及火墙关闭的情况下完成。

1,安装部署DNS

[root@dns ~]# yum install -y bind
主配置文件: /etc/named.conf
子配置文件: /etc/named.rfc1912.zones
数据目录: /var/named

2,高速缓存DNS:(非权威)

vim /etc/name.conf
11 listen-on port 53 { any; }; #端口对所有人打开
17 allow-query { any; }; #允许所有用户使用dns解析
18 forwarders { 172.25.254.250; }; #如果在本地高速缓存dns中找不到解
析则访问172.25.254.250
[root@dns ~]# systemctl restart named

listen-on port 53 { 127.0.0.1; };未修改情况下的报错:
这里写图片描述

allow-query { localhost; };未修改情况下的报错:
这里写图片描述

forwarders { 172.25.254.250; }; 未添加此项目时,对于高速缓存dns没访问过的域名,将不会有解析。

在测试主机上:(172.25.254.91)
[root@localhost ~]# vim /etc/resolv.conf
nameserver 172.25.254.93 #添加高速缓存dns地址
测试结果:在91上初次访问www.taoba.com时,时间较长,再用93访问时,时间会明显缩短>,那是因为93的主机上有了访问www.taobao.com的缓存记录。

91上:
[root@localhost ~]# dig www.taobao.com
这里写图片描述
93上:
[root@dns ~]# dig www.taobao.com
可以看见访问时间明显缩短了。

3,做权威DNS的正向解析

vim /etc/name.conf #注释掉上面的forwarders
11 listen-on port 53 { any; };
17 allow-query { any; };

[root@dns ~]# vim /etc/named.rfc1912.zones #在dns的子配置文件中添加需要解析的域名,如果在主配置文件中添加会过于繁琐,不利于主配置文件的阅读和查看
zone “test.com” IN { #需要解析的域名
type master;
file “testfile.com”; #记录域名解析的文件
allow-update { none; };
};

ot@dns ~]# cd /var/named/
[root@dns named]# cp -p named.localhost testfile.com#编辑记录域名解析的文件
这里写图片描述
此文件参数解析:
$TTL 1D #解析缓存文一天
@(紫色) #代表‘test.com‘(即就是所要解析的域名)
dns.test.com #dns服务器的名称
root.test.com. #管理dns服务器的用户
0 ; serial #一致性标记,在做dns集群的时候会用到,下文会详细解释
1D ; refresh #dns缓存刷新的时间
1H ; retry #如果出现解析错误后,重新尝试的时间
1W ; expire #过期时间,此处为1周
3 H ) ; minimum #主服务器挂后,从服务器至多工作的时间,可以保护dns防止ddos攻击

测试:
在客户端:dig www.test.com
这里写图片描述
可以看加www.test.com所解析的ip,以及dns服务器名称和dns服务器的ip

4.DNS反向析:

vim /etc/named.rfc1912.zones
zone “254.25.172.in-addr.arpa” IN {
type master;
file “testfile.com.ptr”;
allow-update { none; };
};

cd /var/named/
cp -p named.loopback testfile.com.ptr
vim testfile.com.ptr
这里写图片描述
systemctl restart named

测试:
在没有重启DNS服务器时:
dig -x 172.25.254.122
这里写图片描述
看不见ip所对应的域名!
重启之后:
这里写图片描述
可以看加ip所解析出的域名,dns服务器名和dns服务器的ip。

5.dns的双向解析:

目标:实现内网主机和外网主机访问同一网站域名,定义到不同服务器
vim /etc/named.conf
这里写图片描述

cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.out
vim /etc/named.rfc1912.zones.out
修改为:
zone “test.com” IN {
type master;
file “testfile.com.out”;
allow-update { none; };
};

vim testfile.com.out
这里写图片描述
systemctl restart named

测试:在91上:dig www.test.com
这里写图片描述
在92上:dig www.test.com
这里写图片描述
即实现了内网主机和外网主机访问同一网站域名,却会定义到不同服务器的效果。

6,主从dns的配置(dns集群)

辅助dns可以缓解主dns的压力,当外网主机访问主dns所维护的域名时,都可以看到域名针对外网解析的ip。
在主dns上(172.25.254.91):
vim /etc/named.rfc1912.zones.out #此实验针对的是域名所解析的外网ip,所以要配置记录外网域名解析的子配置文件。
做以下修改:
这里写图片描述
file “testfile.com.out” #对外网用户所制定的域名解析文件
also-notify {172.25.254.94;}; #指定同步辅助dns,辅助dns为172.25.254.94

在辅助dns上的操作:

systemctl stop firewalld
vim /etc/syscofig/selinux #设置selinux为disabled
reboot #重启生效
yum install -u bind
vim /etc/named.conf
11 listen-on port 53 { any; };
17 allow-query { any; };

vim /etc/named.rfc1912.zones
这里写图片描述
参数解释:
type slave; #指定此dns为辅助dns
masters { 172.25.254.91; }; #指定主dns为172.25.254.91
file “slaves/testfile.com.out”; #指定辅助dns解析时应该参考的文件

测试:
测试的时候需要量台外网主机(此处所谓的外网主机即就是在主dns服务器配置文件/etc/named.conf下所指定的外网主机,此次实验仅仅指定了172.25.254.91为内网主机,其余都为外网主机)来测试
在172.25.254.92上:(用来测试主dns的“外网主机“)
vim /etc/resolv.conf
nameserver 172.25.254.91
在172.25.254.93上:(用来测试辅助dns的“外网主机“)
vim /etc/resolv.conf
nameserver 172.25.254.94

注意:测试的时候,当主dns对于外网访问的解析文件如果ip有所改变,在主dns使用:dig www.test.com测试的时候会看见所解析的ip也随之改变;但是对于测试辅助dns的主机来说,同样使用:dig www.test.com来测试却看不见所解析的ip的变化,这是什么原因呢?
哈哈,那是因为辅助dns域名解析文件(/var/named/testfile.com.out)对主dns的域名解析文件的同步是根据解析文件里的一个标志来进行的,即就是“serial“参数,当主dns的“serial‘的数值有所变化的时候,辅助dns才会认为主dns的域名解析有所变化,如果仅仅是文件中解析的ip有所变化,是不会在辅助dns上同步的。
正确的测试结果为:
先前当外网:dig www.test.com时解析的ip为:1.1.1.10,现在将主dns上的/var/named/testfile.com.out文件中将解析的ip改为:1.1.1.20,同时修改“serial“的值,再重启两台dns设备,分别使用:dig www.test.com来测试,可以看见域名所解析的ip是相同的,即完成主从dns的配置。
看图:
这里写图片描述
可以看见在92测试机上获得的域名解析来自主dns(91)
这里写图片描述
在94测试机上获得的域名解析来自辅dns(94)

7,配置从dns基于主机来对主dns更新:

在主dns(91)上:
vim /etc/named.rfc1912.zones.out
这里写图片描述
参数解释:
allow-update { 172.25.254.94; };
允许172.25.254.91对本机的dns解析更新

修改目录权限:
这里写图片描述

systemctl restart named

测试:在辅dns上(94):
nsupdate
server 172.25.254.170 #主DNS
update add hello.test.com 86400 A 1.1.1.30 #添加域名解析条目
send #发送
发送成功后没有报错,quit退出
添加成功后:可以在辅dns上使用命令:dig hello.test.com来测试:
这里写图片描述
可以看出已经更新成功了
更新成功后可以在主dns的/var/named目录下以及辅dns的/var/named/slaves目录下产生“。jnl“结尾的文件

server 172.25.254.170
update delete hello.test.om #删除域名解析条目
send
删除成功后不可在解析成功。

8,配置从dns基于密钥来对主dns的更新:

在做此类型更新之前需要保持主dns的/var/named目录以及辅dns的/var/named/slaves目录的“纯净“
主dns:
这里写图片描述
辅dns:
这里写图片描述
开始实验:
在主dns上:

cp -p /etc/rndc.key /etc/test.key
[root@dns-server named]# cd /mnt/ #切换到mnt目录下是为了将生成的密钥放在此处,便于后面使用
[root@dns-server mnt]# ls
testfile.com.out
[root@dns-server mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST test
Ktest.+157+56909
[root@dns-server mnt]# ls
Ktest.+157+56909.key Ktest.+157+56909.private testfile.com.out
查看密钥文件内容:
这里写图片描述
[root@dns-server mnt]# scp Ktest.+157+56909.* root@172.25.254.94:/mnt #将生成的密钥传给辅dns,以便更新时使用
[root@dns-server mnt]# vim /etc/test.key
这里写图片描述
将密钥文件名和密钥修改!
[root@dns-server mnt]# vim /etc/named.conf
这里写图片描述
在此处添加这一条

[root@dns-server mnt]# vim/etc/named.rfc1912.zones.out
这里写图片描述\
修改此处更新的方式。
重启之前需要确保密钥文件的属性正确:
这里写图片描述
[root@dns-server mnt]# systemctl restart named

测试:在辅dns主机上:
这里写图片描述
测试结果:
这里写图片描述
可以看见已经更新成功。
更新成功后可以在主dns的/var/named目录下以及辅dns的/var/named/slaves目录下产生“。jnl“结尾的文件

9,ddns(动态域名解析)的配置:

什么是ddns?
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务。
动态域名解析服务,是将用户的动态IP地址映射到一个固定的域名解析服务上。ddns捕获用户每次变化的ip地址,然后将其与主机的域名对应,这样域名就可以解析到非固定IP的服务器上。
简单的说,不管用户何时上网、以何种方式上网、得到一个什么样的IP地址、IP地址是否会变化,他都能保证通过一个固定的域名就能访问到用户的计算机。
意义:
意味着在动态DNS服务下的计算机就好像具有了固定的IP地址可以充当互联网服务器了。对于广大互联网用户和中小企业而言这无疑是一项非常具有吸引力的服务。

配置:实验之前首先要完成主从dns基于密钥的更新,同时需要保持主dns的/var/named目录以及辅dns的/var/named/slaves目录的“纯净“
主dns:
这里写图片描述
辅dns:
这里写图片描述
本次ddns实验在主dns上完成,即dns和dhcp服务器都在172.25.254.91上完成,slave-dns自动会同步。

开始配置dns:

省略了密钥的生成步骤,在上实验中可见

vim /etc/named.conf
这里写图片描述
vim /etc/named.rfc1912.zones #在配置内网的子配置文件中修改
这里写图片描述
vim /var/named/testfile.com
这里写图片描述
修改为上图中那样,为了可一重复实验,建议将此文件(testfile.com)备份在/mnt下

接下来是生成密钥步骤,参考上一个实验完成,同时配置/etc/named.conf文件:
这里写图片描述
保证配置完后文件是这样的。

检查/var/named目录的属性:
这里写图片描述

如果之前的selinux没有关闭,在此处可以不用关闭:
这里写图片描述
做以上设定也可以避免selinux的影响。

开始配置dncp服务器:
yum install -y dhcp
systemctl start dhcpd
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf -p
vim /etc/dhcp/dhcpd.conf
这里写图片描述

这里写图片描述

删除27 2行!

这里写图片描述
保证文件内容是上图那样的!
dns和dhcp配置完成后重启:
systemctl restart dhcpd
systemctl restart named

测试:
令选一台主机(172.25.254.93),修改主机名:
hostnamectl set-hostname www.test.com

设置为动态获取IP(dhcp)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
这里写图片描述
systemctl restart network #重启网路
ifconfig #查看动态获取到的ip
这里写图片描述
可以看见动态获取到的ip为:172.25.254.85

然后分别在主从dns上查看www.test.com域名解析的ip:

主dns:
这里写图片描述

辅dns:
这里写图片描述

到此完成ddns的配置!

这篇关于DNS正向解析,反向解析,双向解析,集群,远程更新,DDNS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/544350

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图