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

相关文章

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2