DNS的服务与部署(2)

1、dns的安装及开启

dnf install bind.x86_64 -y         #安装
#Berkeley Internet Name Domain (BIND)

systemctl enable --now named    #启用dns服务,服务名称叫named
firewall-cmd --permanent --add-service=dns #火墙设置
firewall-cmd --reload            #重启火墙
setenforce 0                    #调整内核级火墙为警告模式

2、配置dns服务使内网主机可以访问其dns资源

netstat -antlupe | grep named                #可以查看dns开放端口

vim /etc/named.conf                            #编辑dns配置文件,对文件做以下修改
11行左右 listen-on port 53 { any; };         #在本地所有网络接口上开启53端口
19行左右 allow-query { any; };                 #允许查询A记录的客户端列表,提供服务给所有主机
20行左右 forwarders { 114.114.114.114; };    #将源换为国内的,指定资源从114上取,这样速度会快一点
34行左右 dnssec-validation no;                 #禁用dns检测使dns能够缓存外部信息到本机,开着会因为检测不合规返回不了“答案”
##每一个字符串一定要用分号结尾

systemctl restart named                        #重启服务

使用内网其他主机测试:

vim /etc/resolv.conf #编辑dns指向文件 nameserver 192.168.187.129

#添加我们配置的dns服务器的ip dig www.baidu.com

#解析测试我们的dns服务器配置是否成功

显示NOERROR就是没有问题!

3、DNS的正向解析

企业内部也需要对外提供dns做相应的解析工作!
准备工作:
在上个高速缓存配置的基础上,先编辑主配置文件vim /etc/named.conf,将源注释掉

然后使用命令nm-connection-editor将dns服务器在的主机和测试主机的ip都改为静态ip
dns服务器的IP改成:192.168.187.129
测试主机IP改为:192.168.187.136   

修改配置并保存

(1)主机记录A记录

第一步:添加域名语句块

vim /etc/named.rfc1912.zone
##和主配置文件里的内容一样,里边有要维护域名的语句块
##主配置文件读取域名信息就会到这个文件里读取
##我们可以在这个文件里添加我们要维护的域名的语句块
添加:
zone "lucky.com" IN {             #维护的域名
 type master;                     #当前服务器位主dns
 file "lucky.com.zone";         #域名A记录文件,要解析域名时看的是这个文件
 allow-update { none; };         #允许更新主机列表
};

第二步:编辑域名A记录文件

cd /var/named/                #进入数据目录
cp -p named.localhost lucky.com.zone        #复制模板得到我们要的域名A记录文件,一定要加-p参数,所属组相同

vim lucky.com.zone            #编辑A记录文件

A记录文件内容及解释如下:
$TTL 1D #TIME-TO-LIVE(dns地址保存时间长度)
@ IN SOA dns.lucky.com. root.lucky.com (         #SOA授权起始(Start of Authority),谁授权的
#@符的值就是/etc/named.rfc1912.zone文件里我们编写的域名语句块引号里的内容
#不是以.结尾的字符串都会被自动补齐@符的值
 0 ; serial             #域名版本序列号,下文dns集群会用到,有详细解释
 1D ; refresh             #刷新时间(辅助dns)
 1H ; retry             #重试时间(辅助dns)
 1W ; expire             #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
 3H ) ; minimum         #A记录最短有效期
         NS     dns.lucky.com.
dns     A     192.168.187.129
lucky.a A     192.168.187.97         ##正向解析记录
lucky.a A     192.168.187.99

复制并编辑A记录文件

第三步:重启并在另一台内网主机测试
systemctl restart named
另一台主机先检查下dns服务器是不是我们设置的

然后dig www.lucky.com,如图测试成功!
##多个ip会自动做轮调

(2)规范域名转换CNAME记录

当内部主机名不规范时,对外开放的是规范域名。
那么对外开放的域名只有一个,将对外开放的域名转换到内部主机再做解析

dns服务器端:
vim /var/named/lucky.com.zone            #编辑A记录文件

添加:
www     CNAME   www.a.lucky.com.
#www.a.lucky.com.就是不规范域名

systemctl restart named        #重启dns

客户端:
dig www.lucky.com            #另一台主机测试

编辑文件

重启

另一台主机测试,如图设置成功!

(3)邮件解析MX记录

什么是MX记录?
当我们在发送邮件时,假设我们用的163.com邮箱,需要将163.com解析成ip才能进行数据传输,这个ip就叫这个域的mx记录(负责邮件发送和接收的ip)。

dns服务器端

vim /var/named/lucky.com.zone

#编辑A记录文件 添加后保存退出:

lucky.com. MX 1 192.168.187.129.

systemctl restart named

#重启dns

添加时写的是服务器ip

客户端:

dnf install postfix mailx -y          #安装提供邮件投递协议的软件postfix和发送邮件的客户端mailx systemctl start postfix               #开启postfix服务 

dig -t mx lucky.com                  #查看mx记录

查看mx记录,没有问题

发邮件给root@lucky.com(自行类比@qq.com)
##因为在dns服务器端25端口是自用的(回环),所以不会收到邮件,所以我们在测试端看发送队列看下效果即可
##如图即是正向解析成功

4、DNS的反向解析

逆向查询记录PTR记录

什么是PTR记录?
邮件接收方只会显示发送方的ip,需要做反向解析,显示真实的域名,让用户知道邮件从哪儿来的。从ip到域名就是ptr记录。

dns服务器端

vim /etc/named.rfc1912.zones            #编辑文件
添加:
zone "187.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.187.ptr";
        allow-update { none; };
};

cd /var/named/
cp -p named.loopback 192.168.187.ptr        #复制模板得到ptr文件

vim 192.168.187.ptr                            #编辑ptr记录文件
修改成下文:
$TTL 1D
@       IN SOA  dns.lucky.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.lucky.com.
dns     A       192.168.187.129
233     PTR     www.lucky.com.
#反向解析IP192.168.187.233应该得到域名www.lucky.com

systemctl restart named                        #重启

编辑named.rfc1912.zones文件

编辑ptr记录文件

客户端:
dig -x 192.168.187.233测试如图成功!

5、DNS的双向解析


双向解析:
在内网中的主机解析得到内网的ip,
在外网中的主机解析得到外网的ip。
实验环境:
我们需要一台双网卡主机模拟内网,一台单网卡主机模拟外网
dns服务器端做内网主机:
添加一个网卡,将ip设为192.168.0.0/24网段的
原来的192.168.187.0/24网段的做内网ip

单网卡主机做外网主机:
ip改为192.168.0.0/24网段的,模拟外网主机,并且将网关设为dns服务器端192.168.0.0/24网段的ip,保证两台主机能相互通信

两台主机更改完网络后都需重启网络

nmcli connection reload

nmcli connection up

网络名 例如客户端网卡名为ens160,那么就是

nmcli connection up ens160

设置完后ping一下通了即可

dns服务器端(内网主机):

vim /etc/named.conf #编辑主配置文件

将下图内容注释掉:

注释掉后,在下边添加如下内容:
view localnet {
        match-clients { 192.168.187.0/24; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.zones";
};

view internet {
        match-clients { any; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.zones.inter";
};

拷贝/etc/named.rfc1912.zones文件得到/etc/named.rfc1912.zones.inter文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter
vim /etc/named.rfc1912.zones.inter        #编辑外网配置文件
做如下图更改:

拷贝A记录文件得到外网的A记录文件
cp -p /var/named/lucky.com.zone /var/named/lucky.com.inter
vim /var/named/lucky.com.inter        #编辑外网A记录文件
做如下图更改:
#把ip都改成我们想让外网主机访问时看到的ip

重启systemctl restart named

vim /etc/resolv.conf       #添加dns服务器

ip nameserver 192.168.187.129

#因为更改过网络,所以可能需要重新添加

客户端(外网主机)

vim /etc/resolv.conf                    #添加dns服务器

ip nameserver 192.168.187.129    #因为更改过网络,所以可能需要重新添加

测试:
dns服务器端(内网主机):
dig -x 192.168.187.233测试,如图显示的内网ip,成功!

客户端(外网主机):
dig -x 192.168.187.233测试,如图显示的外网ip,成功!

6、DNS集群

当我们的主dns服务器访问量过大时,服务器不足以支撑这么大的访问量,我们可以增加n台辅助dns来分担访问压力。
我们下面以增加一台辅助dns来实验如何使主辅dns同步更新!

辅助dns:


我以上面用过的客户端主机为辅助dns
先将其IP改为和主dns一个网段的,192.168.187.136

更改完网络后需重启网络

nmcli connection reload

nmcli connection up ens160

dnf install bind.x86_64 -y         #也安装dns
#Berkeley Internet Name Domain (BIND)

systemctl enable --now named    #启用dns服务,服务名称叫named
firewall-cmd --permanent --add-service=dns #火墙设置
firewall-cmd --reload            #重启火墙
setenforce 0                    #调整内核级火墙为警告模式

vim /etc/named.conf                #编辑主配置文件
注释掉11,12,19行

vim /etc/named.rfc1912.zones    #在文件中加入域名语句块
添加:
zone "lucky.com" IN {
        type slave;                #类型是辅助dns
        masters { 192.168.187.129; };    #主dns
        file "slaves/lucky.com.zone";    #数据同步到slaves目录下
};

编辑主配置文件注释掉如图三行,就相当于全部都开启(any)

添加域名语句块

vim /etc/resolv.conf

nameserver 192.168.187.136    #将dns服务器改为自己的,为了看效果

systemctl restart named    #重启dns服务

主dns:


我以上面配好的dns服务器192.168.187.129这台主机为主dns

先去掉上个实验的配置,防止影响

vim /etc/named.conf   

#编辑主配置文件

注释掉如下图内容:

vim /etc/named.rfc1912.zones

在域名语句块内添加如下内容:

also-notify { 192.168.187.136; };   #辅助dns的ip

systemctl restart named             #重启dns

测试:
辅助dns:
dig www.lucky.com得到如图结果:

主dns:

vim /var/named/lucky.com.zone

#编辑A记录文件 更改下ip和serial值:

之后在辅助dns端重新dig看是否同步成功

serial值的作用:
每更改一次该值并重启主dns服务后,辅助dns就会重新同步A记录
即重新同步域名所对应ip
一天可以改99次
值可以任意写!
!!!!!但只能增量更改!!!!!

其他值解释:
 1D ; refresh             #刷新时间(辅助dns)
 1H ; retry             #重试时间(辅助dns)
 1W ; expire             #过期时间(辅助dns,查询失败过期停止对辅助域名的应答)
 3H ) ; minimum         #A记录最短有效期

辅助dns:
dig www.lucky.com得到如图结果:
测试成功!ip同步成功!

DNS(DHCP+DNS)动态域名解析

dhcp能自动分配ip,当重新分配时怎么让dns知道ip重新分配了呢?ddns可以解决这个问题,实现动态域名解析。
更新原理:制作一个key,让dhcp能更新dns的A记录,key是更新域名的钥匙。
在/var/named目录下生成一个更新数据,在系统读取A记录时会把.jnl结尾的更新文件与A记录文件整合实现。

ddns服务端

dnf install dhcp-server -y        #安装dhcp服务器
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf        #复制模板得到配置文件
vim /etc/dhcpd/dhcpd.conf        #编辑dhcp配置文件
做如下图修改:
#修改最终结果是剩31行

systemctl start dhcpd        #开启dhcp
接下来制作更新域的“钥匙”key:
#/etc/rndc.key是dns默认使用的key模板,用的是SHA-256加密,所以我们下面也要使用SHA-256加密
cd /mnt/
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST luckykey
#SHA256加密方式是对称的,公钥和私钥是一样的

cp -p /etc/rndc.key /etc/lucky.key        #复制key模板得到key文件
vim /etc/lucky.key                        #编辑key文件
改成如下内容:
key "luckykey" {                        #我们前面取的key名字
        algorithm hmac-sha256;            #加密方式
        secret "/P/GVMVRb/dNIjtr2qYvMg==";        #我们前面生成的密钥,最好复制粘贴
};

vim /etc/named.conf         #更改dns主配置文件加key文件指向

在第45行左右添加key文件指向:

include "/etc/lucky.key";

vim /etc/named.rfc1912.zones             #域名语句块在这里

在域名语句块里添加key更新:

如下图:

systemctl restart named        #重启dns

接下来测试一下该key能否更新dns:
nsupdate -k Kluckykey.+163+37031.private        #-k指定key,不指定send会失败
> update add hello.lucky.com 86400 A 192.168.187.111    #新增A记录
> send                                                    #成功
> update del hello.lucky.com                            #删除A记录
> send                                                    #成功
> quit                                                    #退出
测试成功!继续下一步

vim /etc/dhcp/dhcpd.conf             #编辑dncp配置文件

打开dns更新的“开关”:
第14行取消注释,并改为interim(网络更新):
ddns-update-style interim;

在最后指定key,相当于让dhcp拿到了dns更新的“钥匙”:
key luckykey {                            #我们前面取得key的名字,别写错了
  algorithm hmac-sha256;
  secret /P/GVMVRb/dNIjtr2qYvMg==;        #最好直接复制前面我们生成的key文件里的防止出错
};

在最后加入key要更新的域:
zone lucky.com. {
  primary 127.0.0.1;                    #dns在本机,所以直接写本机回环接口就可以了
  key luckykey;                            #我们前面取得key的名字,别写错了
}

删掉jnl文件(不然前面的更新测试会影响):

rm -fr /var/named/lucky.com.zone.jnl

重启两个服务:

systemctl restart dhcpd

systemctl restart named

客户端:
首先要关闭VM虚拟机的本地dhcp服务,如下图操作即可:
##如果是真机是linux系统直接在虚拟机里改配置文件即可

选择更改设置

取消勾选本地dhcp服务

然后将我们之前设置的静态ip改为dhcp:

nm-connection-editor

测试下我们是否关闭本地dhcp成功:

nmcli connection up ens160          #重启网卡

cat /etc/resolv.conf        #看下dns服务用的谁的

如图是用的我们自己配置的,设置成功!

改下主机名方便测试:

hostnamectl       #查看主机名 

hostnamectl set-hostname nodeb.lucky.com      #改主机名为nodeb.lucky.com

测试:
客户端:

dig    nodeb.lucky.com

ifconfig     看两个出来的ip一样否

如图是一样的

dns服务端:

vim /etc/dhcp/dhcpd.conf     #编辑dncp配置文件

改一下ip范围:

我改为了77-90,如下图:

重启下dhcp服务: systemctl restart dhcpd

客户端

nmcli connection up ens160                #重启网卡,

那么会重新获取ip

dig nodeb.lucky.com

ifconfig 看两个出来的ip一样否

如图,重新获取的ip是我们上面重新设置的范围内的,dns解析也是同步的

测试成功!

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

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

相关文章

基于SSH的母婴用品销售管理系统带万字文档

文章目录 母婴商城系统一、项目演示二、项目介绍三、系统部分功能截图四、万字论文参考五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 母婴商城系统 一、项目演示 母婴商城系统 二、项目介绍 基于SSH的母婴商城系统 系统…

Tina-Linux -- 3. LVGL测试

参考韦东山 – Tina_Linux_图形系统_开发指南 Tina-linux lvgl 配置 环境配置 进入Tina-SDK根目录 source build/envsetup.sh lunch XXX平台名称 make menuconfigLVGL Gui --->Littlevgl --->< > lv_demo<*> lv_examples &#xff08;lvgl官方demo&#…

【区块链】fisco节点运维 更新ing

基于已完成的区块链系统与管理平台搭建工作&#xff0c;开展区块链节点的加入与退出运维工作&#xff0c;具体内容如下 以下只是举例子讲 如果有其他修改没举例出来可以留言 私信 主要以比赛出题的形式讲 区块链节点输出等级为警告级&#xff0c;并设置日志存储阈值为100MB并…

Capture One Studio for Mac:打造完美影像的利器

对于摄影师而言&#xff0c;每一次按下快门都是一次对完美影像的追求。而Capture One Studio for Mac正是这样一款能够帮助你实现这一追求的利器。 Capture One Studio for Mac v16.4.2.1中文直装版下载 首先&#xff0c;Capture One Studio for Mac拥有出色的图像处理能力。它…

从零起航,Python编程全攻略

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、Python入门之旅 二、Python进阶之道 三、Python爬虫实战 四、Python数据分析利器 五…

kind: Telemetry

访问日志 访问日志提供了一种从单个工作负载实例的角度监控和理解行为的方法。 Istio 能够以一组可配置的格式为服务流量生成访问日志&#xff0c; 使操作员可以完全控制日志记录的方式、内容、时间和地点。 有关更多信息&#xff0c;请参阅获取 Envoy 的访问日志。 https:/…

模块化程序设计(函数的定义、调用、参数传递、局部变量、全局变量)

函数的引入&#xff1a; 我们曾经学习了程序设计中的三种基本控制结构&#xff08;顺序、分支、循环&#xff09;。用它们可以组成任何程序。但在应用中&#xff0c;还经常用到子程序结构。 通常&#xff0c;在程序设计中&#xff0c;我们会发现一些程序段在程序的不同地方反复…

RabbitMQ 发布订阅

RabbitMQ 发布订阅视频学习地址&#xff1a; 简单模式下RabbitMQ 发布者发布消息 消费者消费消息 Publist/Subscribe 发布订阅 在 RabbitMQ 中&#xff0c;发布订阅模式是一种消息传递方式&#xff0c;其中发送者&#xff08;发布者&#xff09;不会将消息直接发送到特 定的…

基于open3d对kitti数据集检测结果可视化

前言 KITTI数据集是自动驾驶和计算机视觉领域中一个广泛使用的基准数据集&#xff0c;它提供了丰富的传感器数据&#xff0c;包括激光雷达、相机和GPS等。Open3D是一个功能强大的3D数据处理和可视化库&#xff0c;支持多种3D数据格式。本文将介绍如何使用Open3D对KITTI数据集的…

详解 Spring MVC(Spring MVC 简介)

什么是 Spring MVC&#xff1f; Spring MVC 是 Spring 框架提供的一个基于 MVC 模式的轻量级 Web 框架&#xff0c;是 Spring 为表示层开发提供的一整套完整的解决方案&#xff0c;Spring MVC 使用了 MVC 架构模式&#xff0c;将 Web 层职责解耦&#xff0c;基于请求驱动模型&…

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案&#xff0c;旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发&#xff0c;使用SpringBoot框架简化企业级应用…

SpringCloud微服务之Nacos、Feign、GateWay详解

SpringCloud微服务之Nacos、Feign、GateWay详解 1、Nacos配置管理1.1、统一配置管理1.1.1、在nacos中添加配置文件1.1.2、从微服务拉取配置 1.2、配置热更新1.2.1、方式一1.2.2、方式二 1.3、配置共享1.3.1、配置共享的优先级 1.4、搭建nacos集群1.4.1、初始化数据库1.4.2、下载…

plt多子图设置

import matplotlib.pyplot as plt# 使用 subplots 函数创建一个 2x3 的子图网格 fig, axs plt.subplots(nrows2, ncols3, figsize(16, 10)) # 调整 figsize 来改变图像大小# 遍历每个子图&#xff0c;并绘制一些内容&#xff08;这里只是简单的示例&#xff09; for ax in ax…

C语言之函数和函数库以及自己制作静态动态链接库并使用

一&#xff1a;函数的本质 1&#xff1a;C语言为什么会有函数 &#xff08;1&#xff09;整个程序分为多个源文件&#xff0c;一个文件分为多个函数&#xff0c;一个函数分成多个语句&#xff0c;这就是整个程序的组织形式。这样的组织好处在于&#xff1a;分化问题、、便于程序…

分布式版本控制工具 git

git 是什么 分布式版本控制工具。github 是代码托管平台。 git 有什么用 保存文件的所有修改记录。使用版本号&#xff08;sha1 哈希值&#xff09; 进行区分。随时可浏览历史版本记录。可还原到历史指定版本。对比不同版本的文件差异。 为什么要使用 git 多人协作开发一个大…

STM32手写超频到128M函数

今天学习了野火的STM32教程学会了如何设置STM32的时钟频率&#xff0c;步骤比较详细&#xff0c;也很容易理解&#xff0c;就是视频教程不能跳着看&#xff0c;只能一节节的看&#xff0c;不然会知识不连贯&#xff0c;造成有些知识不理解&#xff0c;连续着看还是没有什么难度…

docker-file 网络

docker挂载 1.绑定挂载&#xff08;Bind Mounts&#xff09;&#xff1a;绑定挂载是将主机上的文件或目录挂载到容器中。 docker run -v /host/path:/container/path image_name 2.卷挂载&#xff08;Volume Mounts&#xff09;&#xff1a;卷挂载将 Docker 数据卷挂载到容器中…

【CTF Web】CTFShow web4 Writeup(SQL注入+PHP+字符型注入)

web4 1 管理员阿呆又失败了&#xff0c;这次一定要堵住漏洞 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/or|\-|\\\|\/|\\*|\<|\>|\!|x|hex|\(|\)|\|select/i",$id)){die(&q…

Android开发-Android开发中的TCP与UDP通信策略的实现

Android 开发中的 TCP 与 UDP 通信策略的实现 1. 前言2. 准备工作3. Kotlin 中 TCP 通信实现客户端代码示例&#xff1a;服务器代码示例&#xff1a; 4. Kotlin 中 UDP 通信实现客户端代码示例&#xff1a;服务器代码示例&#xff1a; 5. TCP 与 UDP 应用场景分析TCP 实现可靠传…

搭建访问阿里云百炼大模型环境

最近这波大降价&#xff0c;还有限时免费&#xff0c;还不赶快试试在线大模型&#xff1f;下面整理访问百炼平台的千问模型方法。 创建RAM子账号并授权 创建RAM子账号 1. “访问控制RAM”入口&#xff08;控制台URL&#xff09; 然后点击进入“RAM管理控制台” 2. 添加用户 …