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

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Nacos集群数据同步方式

《Nacos集群数据同步方式》文章主要介绍了Nacos集群中服务注册信息的同步机制,涉及到负责节点和非负责节点之间的数据同步过程,以及DistroProtocol协议在同步中的应用... 目录引言负责节点(发起同步)DistroProtocolDistroSyncChangeTask获取同步数据getDis