DNS域名系统 | unbound

news2024/11/24 17:16:51

目录

DNS 命名空间和域名结构

DNS的命名空间的结构:

域名服务器的分类:

​编辑

DNS 资源记录

常见type:

DNS报文结构

请求报文: 

 响应报文:

解析类型

递归查询

迭代查询

DNS劫持

DNS劫持方法:

防御措施

DNS服务部署与管理

安装并启动服务

 dig 命令查看域名解析过程

配置缓存

尝试让dnsserver以外的主机,可以使用dnsserver上面的的unbound进行域名解析。

提供自定义的域名解析

nslookup 进行IP查看

例如: 


DNS 命名空间和域名结构

DNS的命名空间的结构:

1. 根域名(Root Domain): 根域名位于 DNS 命名空间的顶部,它表示空字符串(""),通常以一个点号(.)表示。根域名下面直接连接着顶级域名(TLD)。

2. 顶级域名(Top-Level Domain,TLD): 顶级域名是根域名的直接子节点,例如".com"、".net"、".org"、".gov"、".edu" 等。顶级域名用于表示域名的类型或所属组织类型。

3. 二级域名(Second-Level Domain,SLD): 二级域名是位于顶级域名之下的域名部分,例如".example"。二级域名通常用于表示特定的组织、公司或网站。

4. 子域名(Subdomain): 子域名是位于二级域名之下的域名部分,例如 "www.example.com." 中的 "www" 就是一个子域名。子域名通常用于区分不同的服务、部门或功能。

域名服务器的分类:

注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为 区域 (Zone) 

DNS 资源记录

在 DNS 服务器上,一个域名及其下级域名组成一个区域 (Zone)。一个 Zone的 相关的 DNS 信息构成一个数据库文件。

下面是一条A类型的资源记录(简称为A记录):域名 www.zdns.cn 的数据为 202.173.11.10

常见type:

DNS报文结构

DNS 报文分为 请求 和 应答 两种,结构是类似的,大致分为五部分:

头部( header ),描述报文类型,以及其下 4 个小节的情况;

问题节( question ),保存查询问题;

答案节( answer ),保存问题答案,也就是查询结果;

授权信息节( authority ),保存授权信息;

附加信息节( additional ),保存附加信息;

请求报文: 

 响应报文:

解析类型

递归查询

本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机。

迭代查询

本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

DNS劫持

DNS劫持即通过某种技术手段,篡改正确域名和IP地址的映射关系,使得域名映射到了错误的IP地址,因此可以认为DNS劫持是一种DNS重定向攻击。DNS劫持通常可被用作域名欺诈,如在用户访问网页时显示额外的信息来赚取收入等;也可被用作网络钓鱼,如显示用户访问的虚假网站版本并非法窃取用户的个人信息。

DNS劫持方法:

1.本机DNS劫持

攻击者通过某些手段使用户的计算机感染上木马病毒,或者恶意软件之后,恶意修改本地DNS配置,比如修改本地hosts文件,缓存等

2. 路由DNS劫持

很多用户默认路由器的默认密码,攻击者可以侵入到路由管理员账号中,修改路由器的默认配置

3.攻击DNS服务器

直接攻击DNS服务器,例如对DNS服务器进行DDOS攻击,可以是DNS服务器宕机,出现异常请求,还可以利用某些手段感染dns服务器的缓存,使给用户返回来的是恶意的ip地址

防御措施

证书认证 

可以利用数字证书,对访问站点进行认证甄别,并对通信连接进行加密。

HTTPS 是一个安全的 Web 协议,它背后就是利用了数字证书对网站进行认证。启用 HTTPS 协议的网站,都有一个由权威机构颁发的证书。这样浏览器可以对证书进行检查,以便识别钓鱼网站。

很多互联网大厂都提供了公共 DNS 服务,这些服务器由背后的公司背书,值得信任。这个表格列举了一些常见的公共 DNS 服务:

DNS服务部署与管理

安装并启动服务

[root@dnsserver ~]# yum -y install unbound 
[root@dnsserver ~]# rpm -qa | grep unbound
 python3-unbound-1.7.3-14.el8.x86_64
 unbound-libs-1.7.3-14.el8.x86_64
 unbound-1.7.3-14.el8.x86_646 
[root@dnsserver ~]# systemctl enable --now unbound
 Created symlink /etc/systemd/system/multi-user.target.wants/unbound.service →/usr/lib/systemd/system/unbound.service.
[root@dnsserver ~]# systemctl status unbound
[root@dnsserver ~]# ss -anput | grep 5310 
# 注意防火墙以及SELinux
[root@dnsserver ~]# firewall-cmd --add-service=dns --permanent
[root@dnsserver ~]# firewall-cmd --reload  

 dig 命令查看域名解析过程

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt…]

-b address 设置所要询问地址的源 IP 地址。这必须是主机网络接口上的某一合法的地址。
-c class 缺省查询类(IN for internet)由选项 -c 重设。class 可以是任何合法类,比如查询 Hesiod 记录的 HS 类或查询 CHAOSNET 记录的 CH 类。
-f filename 使 dig 在批处理模式下运行,通过从文件 filename 读取一系列搜索请求加以处理。文件包含许多查询;每行一个。文件中的每一项都应该以和使用命令行接口对 dig 的查询相同的方法来组织。
-h 当使用选项 -h 时,显示一个简短的命令行参数和选项摘要。
-k filename 要签署由 dig 发送的 DNS 查询以及对它们使用事务签名(TSIG)的响应,用选项 -k 指定 TSIG 密钥文件。
-n 缺省情况下,使用 IP6.ARPA 域和 RFC2874 定义的二进制标号搜索 IPv6 地址。为了使用更早的、使用 IP6.INT 域和 nibble 标签的 RFC1886 方法,指定选项 -n(nibble)。
-p port# 如果需要查询一个非标准的端口号,则使用选项 -p。port# 是 dig 将发送其查询的端口号,而不是标准的 DNS 端口号 53。该选项可用于测试已在非标准端口号上配置成侦听查询的域名服务器。
-t type 设置查询类型为 type。可以是 BIND9 支持的任意有效查询类型。缺省查询类型是 A,除非提供 -x 选项来指示一个逆向查询。通过指定 AXFR 的 type 可以请求一个区域传输。当需要增量区域传输(IXFR)时,type 设置为 ixfr=N。增量区域传输将包含自从区域的 SOA 记录中的序列号改为 N 之后对区域所做的更改。
-x addr 逆向查询(将地址映射到名称)可以通过 -x 选项加以简化。 addr 是一个以小数点为界的 IPv4 地址或冒号为界的 IPv6 地址。当使用这个选项时,无需提供 name、class 和 type 参 数。dig 自动运行类似 11.12.13.10.in-addr.arpa 的域名查询,并分别设置查询类型和类为 PTR 和 IN。
-y name: key 您可以通过命令行上的 -y 选项指定 TSIG 密钥;name 是 TSIG 密码的名称,key 是实际的密码。密码是 64 位加密字符 串,通常由 dnssec-keygen(8)生成。当在多用户系统上使用选项 -y 时应该谨慎,因为密码在 ps(1)的输出或 shell 的历史 文件中可能是可见的。当同时使用 dig 和 TSCG 认证时,被查询的名称服务器需要知道密码和解码规则。在 BIND 中,通过提供正确的密码和 named.conf 中的服务器声明实现。
dig -x 192.168.68.101

; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -x 192.168.68.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5555
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;101.68.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
101.68.168.192.in-addr.arpa. 3600 IN	PTR	dnsclient.test.com.

;; Query time: 0 msec
;; SERVER: 192.168.68.10#53(192.168.68.10)
;; WHEN: Thu Apr 25 22:56:41 EDT 2024
;; MSG SIZE  rcvd: 88

配置缓存

尝试让dnsserver以外的主机,可以使用dnsserver上面的的unbound进行域名解析。

修改配置文件:

[root@dnsserver ~]# vim /etc/unbound/unbound.conf 

[root@dnsclient ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
# dnsserver的ip
nameserver 192.168.110.131 

验证: 

[root@dnsclient ~]# dig www.baidu.com 
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30307
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 708 IN CNAME www.a.shifen.com.
www.a.shifen.com. 0 IN A 110.242.68.3
www.a.shifen.com. 0 IN A 110.242.68.4
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 09:51:11 PDT 2024
;; MSG SIZE rcvd: 101

提供自定义的域名解析

[root@dnsserver ~]# vim /etc/unbound/unbound.conf 

[root@dnsserver ~]# unbound-checkconf   #检查配置文件语法,未指定路径就是默认配置文
件
unbound-checkconf: no errors in /etc/unbound/unbound.conf
[root@dnsserver ~]# systemctl restart unbound

测试:

[root@dnsclient ~]# dig -t a dnsserver.test.com 
; <<>> DiG 9.11.13-RedHat-9.11.13-3.el8 <<>> -t a dnsserver.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dnsserver.test.com. IN A
;; ANSWER SECTION:                              ##这一行
dnsserver.test.com. 3600 IN A 192.168.110.131
;; Query time: 0 msec
;; SERVER: 192.168.110.131#53(192.168.110.131)
;; WHEN: Tue Apr 23 11:03:23 PDT 2024
;; MSG SIZE rcvd: 63

nslookup 进行IP查看

Nslookup一般是用来确认DNS服务器动作的.

nslookup有多个选择功能用命令行键入nslookup<主机名>执行,即可显示出目标服务器的主机名和对应的IP地址,称之为正向解析

如果用不了,则安装相应软件包

yum install -y bind-utils

例如: 

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

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

相关文章

【Java EE】 文件IO的使用以及流操作

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

C++:const成员和取地址操作符

目录 一、const成员 二、取地址及const取地址操作符重载 一、const成员 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进行修改。 注&…

【JAVA】PO、VO、DAO、BO、DTO、POJO你分得清吗?

在Java开发中&#xff0c;PO、VO、DAO、BO、DTO、POJO这些词汇是比较常见的&#xff0c;每个术语都有其特定的含义和用途。下面是它们的具体区别&#xff1a; 名称简要概况用途和特定PO (Persistence Object) 持…

PDF 书签制作与调整 从可编辑、不可编辑 PDF 文档创建书签的方法

本文是对以前发表的旧文拆分&#xff0c;因为原文主题太多&#xff0c;过长&#xff0c;特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

手拉手安装Kafka2.13发送和消费消息

Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 Kafka启动方式有Zookeeper和Kraft&#xff0c;两种方式只能选择其中一种启动&#xff0c;不能同时使用。 Kafka下载https://downloads.apache.org/kafka/3.7.0/kafka_2.…

静态链接lib库使用

lib库实际上分为两种&#xff0c;一种是静态链接lib库或者叫做静态lib库&#xff0c;另一种叫做动态链接库dll库的lib导入库或称为lib导入库。这两个库是不一样的&#xff0c;很多人都分不清楚&#xff0c;很容易混淆。 第一种是静态lib&#xff0c;包含了所有的代码实现的&am…

回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测

回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测 目录 回归预测 | Matlab实现SSA-ESN基于麻雀搜索算法优化回声状态网络的多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索算法…

2024/4/26 C++day4

1在Complex类的基础上&#xff0c;完成^&#xff0c;>>&#xff0c;<<,~运算符的重载 #include <iostream> using namespace std; class Complex {int rel; //实部int vir; //虚部 public:Complex(){}Complex(int rel,int vir):rel(rel),vir(vir){}vo…

小程序中如何快速给分类添加商品

​快速在分类下面上传商品&#xff0c;并且能够设置商品顺序&#xff0c;关系到运营效率的高低。下面就具体介绍如何快速在某个分类下面设置商品。 一、在商品管理处&#xff0c;查询某个分类下面的商品。 进入小程序管理员后台->商品管理&#xff0c;点击分类输入框&…

【汇编语言】直接定址表

【汇编语言】直接定址表 文章目录 【汇编语言】直接定址表前言一、移位指令移位指令过程逻辑移位指令shl 和 shr 二、操作显存数据显示的原理显示缓冲区的结构显示信息的一种“直接”方式 三、描述内存单元的标号关于标号去了冒号的数据标号数据标号同时描述内存地址和单元长度…

css:echarts渐变色转换为css渐变色

通过一个下拉框来选择渐变类型&#xff0c;为了简化&#xff0c;我设置了三种&#xff1a;水平方向的渐变、垂直方向的渐变和径向渐变用&#xff0c;表格来配置echarts渐变色的百分比位置和颜色。 config是表格里的数据格式如下&#xff1a; offset是百分比位置&#xff0c;co…

2024北京车展来了!自主品牌成“流量担当”!

时隔四年&#xff0c;2024北京国际车展重磅回归&#xff01; 4月25日&#xff0c;2024&#xff08;第十八届&#xff09;北京国际汽车展览会&#xff08;以下简称“北京车展”&#xff09;正式开幕&#xff0c;本次车展以“新时代 新汽车”为主题。作为今年国内首个国际A级车展…

Centos/linux根目录扩容、分区、挂载。LVM、物理卷、逻辑卷

前言    &#xff08;空格&#xff09; &#xff1a;分区挂载和扩容是两码事 每个Linux使用者在安装Linux时都会遇到这样的困境&#xff1a;在为系统分区时&#xff0c;如何精确评估和分配各个硬盘分区的容量&#xff0c;因为系统管理员不但要考虑到当前某个分区需要的容量&a…

使用 Godot 游戏引擎为 Apple 的 visionOS 创建游戏和应用的平台

借助GodotVision ,您可以使用Godot 游戏引擎为 Apple VisionOS创建游戏和应用程序。 保卫牛城堡,一款使用 GodotVision 制作的 VisionOS 游戏 GodotVision 运行一个控制本机RealityKit 视图的无头 Godot实例。粗略地说:Godot 是后端,

C++面向对象程序设计 - 派生类的构造函数和析构函数

构造函数的主要作用对数据成员初始化&#xff0c;基类的构造函数是不能被继承的&#xff0c;在声明派生类时&#xff0c;派生类并没有把类的构造函数继承下来。因此&#xff0c;对继承过来的基类成员初始化的工作也要由派生类的构造函数完成&#xff1b;所以在派生类中不仅要考…

OSPF的LSA与特殊区域

Area区域概念 *一个区域维护一张LSDB&#xff0c;路由器详细的链路信息只在这个区域内传播 不是每一台路由器都需要了解所有外部目的地的详细信息 *OSPF网络的层次化设计 通过区域ID标识 骨干&#xff08; Backbone &#xff09;区域&#xff0c;必须是area 0(骨干区域…

JVM(Jvm如何管理空间?对象如何存储、管理?)

Jvm如何管理空间&#xff08;Java运行时数据区域与分配空间的方式&#xff09; ⭐运行时数据区域 程序计数器 程序计数器&#xff08;PC&#xff09;&#xff0c;是一块较小的内存空。它可以看作是当前线程所执行的字节码的行号指示器。Java虚拟机的多线程是通过时间片轮转调…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq&#xff0c;一个是存储&…

抓住四月小尾巴,拿个offer~

首先声明一下~本人是个双非二本大三在校生。 从三月份就开始了苦哈哈的找实习之旅&#xff0c;快三月中旬才敢投大厂&#xff0c;为什么嘞&#xff1f;因为学校要求必须参加完期末考试才能出去实习&#xff08;差不多七月初&#xff09;&#xff0c;因为这个好多公司一听就不安…

算法模版自用(杂)

文章目录 算法库函数next_permutation(start,end) prev_permutation(start,end) (全排列函数)nth_element &#xff08;求第k小值&#xff09;next(it,num),prev(it,num)min_element(begin(),end()),max_element(begiin(),end()) (取最小值最大值) _int128的输入输出STLlist 数…