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

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译