Linux-DNS域名解析服务

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux网络设置
2.LinuxDHCP服务


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
    • `提示:以下是本篇文章正文内容,下面案例可供参考`
    • 一.概述
    • 二.DNS的定义
    • 三.域名结构
    • 四、DNS域名解析方式
    • 五.DNS 域名解析的流程:
    • 六.Linux 中的 DNS 配置:
        • _DNS 缓存:_
    • 七.DNS查找顺序
    • 八.DNS服务器类型
    • 九.DNS 域名解析的命令工具
    • 十.搭建本地DNS服务器
    • 十一.小结
    • 十二.补充


前言

本章大概内容有:
       DNS的定义、域名结构、DNS查找顺序、域名解析的命令工具、域名解析流程、搭建本地DNS服务器、小结、补充等

提示:以下是本篇文章正文内容,下面案例可供参考

一.概述

  • DNS(域名系统)是一个分布式的数据库系统,它存储了域名的层级结构信息,以及域名与 IP 地址之间的映射关系。
  • DNS 域名解析是将域名转换为与之对应的 IP 地址的过程。这个过程对于用户能够通过容易记忆的域名来访问网络资源至关重要。
  • 在日常生活中人们习惯使用域名访问服务器,但机器间互相只认IP地址,域名与IP地址之间是多对一的关系,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

二.DNS的定义

  • DNS是“域名系统”的英文缩写。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
  • DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。
  • 每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

三.域名结构

image.png

  • 例如:http://www.sina.com.cn./
  • http://主机名.子域.二级域.顶级域 根域/
  • 树状结构最顶层称为根域,用“.”表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有,但根服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器,如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务器,同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机。
  • 根域
    • 位于域名空间最顶层,一般用一个 “.” 表示
  • 顶级域
    • 一般代表一种类型的组织机构或国家地区,
      • 如 .net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育机构)、.gov(政府部门)、.cn(中国国家域名)
  • 二级域
    • 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理,
      • 如 .cn 顶级域名下面设置的二级域名:.com.cn、.net.cn、.edu.cn
  • 子域
    • 二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
  • 主机
    • 主机位于域名空间最下层,就是一台具体的计算机,
      • 如 www、mail都是具体的计算机名字,可用www.sina.com.cn.、mail.sina.com.cn. 来表示,这种表示方式称为 FQDN (完全合格域名,是指包含了所有域的主机名,其中包括根域),也是这台主机在域名中的全名
  • 补充
    • 组织域:.com .org .net .CC
    • 国家域:.cn .tw(台湾).hk(香港).iq .ir .jp(日本)反向域:114.114.114.114是国内移动、电信和联通通用的DNS手机和电脑端都可以使用。8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
    • 223.5.5.5 和 223.6.6.6:阿里云DNS
    • IPV6 2400:3200::1 和 2400:3200:baba::1
    • 江苏省南京市(中国电信)
    • 首选DNS为:218.2.135.1 备用DNS为:61.147.37.1

四、DNS域名解析方式

  • 正向解析:根据域名查找对应的IP地址
  • 反向解析:根据IP地址查找对应的域名

五.DNS 域名解析的流程:

  1. 递归查询: 当一个用户尝试解析一个域名时,他们的 DNS 客户端(如 nslookupdig)会首先询问本地 DNS 服务器是否有该域名的记录。
  2. 迭代查询: 如果本地 DNS 服务器没有找到答案,它会询问根 DNS 服务器。根 DNS 服务器不直接提供域名解析,但它会指示查询应该联系哪个顶级域(TLD)的 DNS 服务器。
  3. 顶级域查询: 本地 DNS 服务器接着查询顶级域的 DNS 服务器,例如 .com、.org 或国家顶级域如 .cn。
  4. 二级域查询: 顶级域的 DNS 服务器会提供负责管理该域名的权威 DNS 服务器的地址。
  5. 权威 DNS 查询: 本地 DNS 服务器 finally queries the authoritative DNS server for the domain. The authoritative DNS server provides the IP address associated with the domain.
  6. 返回结果: 本地 DNS 服务器将获取到的 IP 地址返回给用户的 DNS 客户端。

六.Linux 中的 DNS 配置:

在 Linux 系统中,DNS 配置通常位于 /etc/resolv.conf 文件中。这个文件包含了用于解析域名的服务器地址。用户可以在这个文件中添加或修改 DNS 服务器的地址。
例如:

nameserver 8.8.8.8
nameserver 8.8.4.4
DNS 缓存:
  • 为了提高解析效率,Linux 系统通常会缓存 DNS 查询结果。这些缓存存储在 /var/cache/bind(如果使用了 BIND)或 /var/lib/dns 目录中。缓存会根据配置的缓存时间(如 /etc/resolv.conf 中的 cache-max-ttl 参数)自动更新。

七.DNS查找顺序

  1. 优先找缓存
  2. 看看DNS配置
    1. /etc/hosts [优先级最高 1:1解析]
    2. /etc/resolv.conf
    3. ifcfg-ens33 “DNS1”
  3. 找就近的DNS服务器(外部)
  4. 迭代和递归过程
    1. 先找就近的根域服务器 .
    2. 根据迭代和递归的方式,然后找顶级域DNS服务器,例如 .com .cn.
    3. 找二级域DNS服务器 .com.cn.
    4. 找子域DNS服务器 .sina.com.cn.
    5. 找主机名DNS服务器 www.sina.com.cn.
    6. 得到解析结果
    7. 获取到域名-IP解析内容

**_PS: _**Linux中有关DNS的映射文件: vim /etc/hosts
windows系统中有关DNS的映射文件: C:Windows\System32\drivers\etc\hosts

八.DNS服务器类型

  • (1)主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改,具有唯一性。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。PS【权威为该主域名服务器亲自查找出的结果,非权威则为从缓存中查找出的结果】
  • (2)从域名服务器:当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
  • (3)缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
  • (4)转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
  • 小结:
    • 主域名服务器:管理和维护所负责解析的域内解析库的服务器
    • 从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本(数据文件)
    • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
    • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    • 过期时长:从服务器联系不到主服务器时,多久后停止服务
    • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

九.DNS 域名解析的命令工具

  • nslookup:这是一个用于查询 DNS 记录的工具,可以查看域名对应的 IP 地址。
  • dig:这是一个更强大的工具,可以查询域名的所有 DNS 记录,并允许用户指定查询的详细选项。
  • host:用于查询主机名对应的 IP 地址或反之。
  • ping:虽然主要用于测试网络连接,但也可以通过指定域名来测试与该域名的连接。
  • **dnslog:**可以记录所有 DNS 查询的详细信息,这对于调试和网络安全审计非常有用。

十.搭建本地DNS服务器

步骤1. 准备一台DNS服务器,关闭防火墙,并安装bind工具
systemctl stop firewalld					##1.关闭防火墙
systemctl disable firewalld				##2.禁止防火墙自启动
setenforce 0											##3.禁用SELinux的安全策略rpm -qc bind  										##4.查询bind软件配置文件所在路径,没有的话则先安装
yum  install  bind -y 						##5.安装bind软件工具(必须网络源或光盘挂载)或rpm -ivh 前提挂载光盘(系统盘ISO镜像)rpm -qc bind											##6.再次查看bind软件配置文件所在路径##7.下面步骤将对以下3个文件进行配置
/etc/logrotate.d/named						###主【全局】配置文件 控制系统全局
/etc/named.rfc1912.zones					###区域配置文件 控制具体单个区域,定义解析规则
/var/named/named.localhost				###区域数据配置文件   区域信息,定义具体解析方式
......

image.png

步骤2.准本一台windows10虚拟机并关闭防火墙,作为测试步骤1DNS服务器的客户机,首先确保能ping通服务器

image.png
image.png
image.png

步骤3.修改主要【全局】配置文件
vim /etc/named.conf		###修改主要【全局配置】文件#以下将对文件内参数进行解释
options {listen-on port 53 { 10.0.0.128; };		###监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有								listen-on-v6 port 53 { ::1; };			####ipv6行如不使用可以注释掉或者删除directory       "/var/named";				####区域数据文件的默认存放位置dump-file       "/var/named/data/cache_dump.db";	###域名缓存数据库文件的位置statistics-file "/var/named/data/named_stats.txt";	###状态统计文件的位置memstatistics-file "/var/named/data/named_mem_stats.txt";		####内存统计文件的位置recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };				###允许使用本DNS解析服务的网段,也可用any代表所有
}zone "." IN {#正向解析“."根区域
type hint;#类型为根区域,hint为索引
file "named.ca";#区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息
};include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置

image.png
image.png

步骤4.修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones  ###以下将添加一些注释
zone "xy.com" IN{				###正向解析“xy.com.”区域,如果是逆向解析,这里的“xy.com.”将改为ip地址type master;			###类型为主区域		file "xy.com.zone";	###指定区域数据文件为xy.com.zone.allow-update{ none; };
};注:这边“xy.com”与“xy.com.zone”加“ . ”运行错误
步骤5 .保留文件权限【为了安全】复制named.localhost文件【模板文件】到xy.com.zone文件【区域配置文件】
cd /var/named/				
cp -p named.localhost xy.com.zone			
###保留权限复制【保留权限是为了安全】,named.localhost为模板文件,xy.com.zone文件为上步骤设置的区域配置文件
步骤6.配置正向区域数据文件
vim /var/named/xy.com.zone			###配置正向区域数据文件###以下将对内容加以注释
$TTL 1D																						####有效解析记录的生存周期
@       IN SOA  xy.com.  rname.invalid. (					#####“@"符号表示当前的DNS区域名0       ; serial     #更新序列号,可以是10位以内的整数1D      ; refresh		 #刷新时间,重新下载地址数据的间隔1H      ; retry			 #重试延时,下载失败后的重试间隔1W      ; expire		 #失效时间,超过该时间仍无法下载则放弃#3H )    ; minimum		 #无效解析记录的生存周期NS      xy.com.																			#记录当前区域的DNS服务器的名称																		##记录主机IP地址#记录主机IP地址#记录主机IP地址A       10.0.0.128																		#记录主机IP地址
www     IN      A     10.0.0.5															 #记录正向解析www.benet.com对应的IP
ftp     IN      CNAME    WWW															  #CNAME使用别名,ftp 是www的别名
*       IN      A     10.0.0.5														#泛域名解析,“*"代表任意主机名
~
~
步骤7 .启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a
#对域名语法进行检查(named.conf)
named-checkconf -z /etc/named.conf
步骤8 .在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv .conf
#修改完后立即生效
nameserver 10.0.0.128或
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改完后需要重启网卡
DNS1=10.0.0.128
systemctl restart network
步骤9 测试DNS解析
nslookup 10.0.0.128

image.png

十一.小结

DNS 域名解析

  • 1.就近原则->详见7.DNS查找顺序
  • 2.DNS服务器类型
    • 1.缓存、引导/索引 -》 根域DNS服务器
    • 2.区域 域名解析
  • 3.DNS服务器使用场景
    • 通常为企业内网 - 》 DNS缓存使用、DNS解析使用
  • 4.DNS 配置方式
    • 3个核心配置文件,根据DNS服务器的定位
      • /etc/named/.conf #主配置文件【全局配置,如果仅配置此文件,则该DNS的类型定义为导引类型】
      • /etc/named.rfc1912.zones #区域配置文件 【确定是哪家公司以及公司经营性质—根据公司申报域名时提供的资质】
      • /var/named/named.localhost #区域数据配置文件 (正向解析/反向解析配置文件需要是 .zone结尾, 配置主机名-》页面主要性质是什么,以及分类映射ip地址)

十二.补充

SOA记录解析、P记录解析、A记录解析分别是什么SOA记录、PTR记录和A记录是DNS(域名系统)中常见的三种记录类型,它们各自有不同的作用:

  1. SOA记录(Start of Authority):
    • SOA记录是一种特殊的记录类型,它定义了该域名的权威DNS服务器及其相关属性。每个域至少有一个SOA记录。
    • SOA记录通常包含以下字段:
      • 主DNS服务器(Primary Server):负责该域的权威DNS服务器。
      • 负责人(Responsible Person):该域的联系人信息。
      • 序列号(Serial Number):一个递增的数字,用于记录DNS记录的版本。
      • 刷新时间(Refresh Time):刷新DNS记录的时间间隔。
      • 重试时间(Retry Time):当主DNS服务器不可用时,其他DNS服务器尝试联系主DNS服务器的间隔时间。
      • 过期时间(Expire Time):DNS记录在缓存中的最大生存时间。
      • 最小TTL(Minimum TTL):DNS记录的最小时间到 live(生存时间)。
    • SOA记录的格式通常如下:
@      IN    SOA    ns1.example.com.     admin.example.com. (2023082801      ;序列号3H              ;刷新时间15M             ;重试时间1W              ;过期时间1D )             ;最小TTL

其中,@代表当前域的名称,ns1.example.com.是主DNS服务器的名称,admin.example.com.是负责人的电子邮件地址,后面的数字是各个字段的值。

  1. PTR记录(Pointer Record):

    • PTR记录用于反向DNS查找,它将IP地址映射回其对应的域名。在IPv4网络中,通常用于解析in-addr.arpa.域,而在IPv6网络中,用于解析ip6.arpa.域。
    • 例如,如果一个IP地址是192.0.2.1,它的PTR记录可能指向host1.example.com.
    • PTR记录对于电子邮件服务尤其重要,因为它允许邮件系统验证发件人的IP地址,从而帮助防止垃圾邮件。
  2. A记录(Address Record):

    • A记录是最常见的DNS记录类型之一,它将域名映射到与之关联的IP地址。
    • 例如,example.com的A记录可能指向192.0.2.1
    • A记录是域名解析的基础,它允许用户通过域名访问网站或其他网络服务。

    这些记录一起工作,构成了一个全面的DNS系统,使得互联网上的资源能够通过易于记忆的域名来访问。

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

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

相关文章

职业教育嵌入式实验室|嵌入式系统实验室|嵌入式实训室建设方案

一、建设背景 在数字化浪潮的推动下,我们已迈入一个以信息技术为主导的崭新时代。在这个时代,嵌入式系统不仅是智能设备和应用的核心,更是推动各行各业创新和变革的关键力量。无论是智能家居的便捷生活体验,工业控制的精确操作&a…

Kafka运行机制(一):Kafka集群启动,controller选举,生产消费流程

前置知识 Kafka基本概念https://blog.csdn.net/dxh9231028/article/details/141270920?spm1001.2014.3001.5501 1. Kafka集群启动 Kafka在启动集群中的各个broker时,broker会向controller注册自己,并且从controller节点同步集群元数据。 broker是Kaf…

《深入浅出多模态》(九)多模态经典模型:MiniGPT-v2、MiniGPT5

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

数字化转型对金融服务业的影响

数字化转型正在塑造每个行业,从快速消费品到金融,每个行业都受到新兴技术的影响。 那么,数字化转型在金融服务中扮演什么角色?这对招聘前景有何影响? 我们探讨了数字化转型对该行业的影响、其对招聘策略的影响、数据…

Nios II的BSP Editor

1.菜单打开BSP Editor (1) (2) (3) 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件,右键,Nios II -> …

Nginx--地址重写Rewrite

一、什么是Rewrite Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程 URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.php?id123 使用U…

初识Linux · 基本指令(1)

目录 前言: 基本指令 1.1 pwd 1.2 ls 1.3 mkdir cd clear 1.4 touch 1.5 ls部分补充 1.6 whoami 1.7 有关目录以及路径 前言: 今天是Linux系列的第一章节,对于Linux的主线学习大概会更新两个半月左右,中间穿插着算法…

SuperMap GIS基础产品FAQ集锦(20240812)

一、SuperMap iDesktopX 问题1:idesktopx11.2.0执行最佳路径分析为空,是什么原因? 11.2.0 【问题原因】两个站点之间的线没有连通 【解决办法】构建网络数据集时勾选“线线自动打断”,让线与线之间相互连通 问题2:…

SwiftUI 6.0(iOS 18)监听滚动视图视口中子视图可见性的极简方法

概览 在 SwiftUI 的应用开发中,我们有时需要监听滚动视图中子视图当前的显示状态:它们现在是被滚动到可见视口(Viewport)?或仍然是隐藏在“未知的黑暗”中呢? 在 SwiftUI 早期版本中为了得偿所愿,我们需要借助一些“取巧”的手段。不过,从 SwiftUI 6.0(iOS 18)开始情…

Unity动画模块 之 3D模型导入基础设置 Materials

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 还是那句话,用到的时候再看看,死记硬背不是正经的学习方法,但是又不得不知道一下&…

环网交换机 环网数采仪 环网采集器确保数据传输无懈可击!

计讯物联Pro级双向防护,升级环网采集器确保数据传输无懈可击! 在物联网(IoT)的世界里,数据流动如同城市交通,需要高效且可靠的网络来支撑。但就像城市交通可能遇到意外拥堵或道路封闭,传统网络在数据传输上也会遇到障…

Nginx--日志

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、Nginx日志介绍 nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的…

无人机视角下的EasyCVR视频汇聚管理:构建全方位、智能化的AI视频监控网络

随着5G、AI、物联网(IoT)等技术的快速发展,万物互联的时代已经到来,视频技术作为信息传输和交互的重要手段,在多个领域展现出了巨大的应用潜力和价值。其中,EasyCVR视频汇聚平台与无人机结合的AI应用更是为…

javaweb_10:XML映射文件

一、规范 1、XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放在相同的包下(同包同名)。 2、XML映射文件的namesapce属性为Mapper接口全限定名一致。 3、 XML映射文件中sql语句的id与Mapper接口中的方法名一致&a…

低代码平台工具 —— 公式编辑器

导读 公式编辑器:公式编辑用于字段值来源于其他字段或是来源于函数计算结果都可由公式编辑来完成 公式编辑器主要需要解决三件事: 合适的编辑器强大的函数库合适的事件监听 技术选型 excel函数库 formulajs,这个函数库可以让JavaScript支…

C++:string类篇

string类的介绍 概念: std::string是C 标准库中用于处理字符串的类,它封装了对字符序列的操作,使得字符串处理更加便捷和安全。 特点: 1.动态内存管理:std::string会自动分配和释放内存,避免了手动管理内存…

Leetcode 283 移动零

引言 今天,看到了一个双指针算法,构思非常巧妙。这里特来记录一下。 正文 本题,我们使用两个指针,一左一右,右侧指针不断向右侧移动,如果右侧指针所指向的数据值不为 0,那么我们就交换右侧指针…

jmeter引入jar包的三种方式

示例 实现对登录密码进行MD5加密 pom文件依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.12&l…

90. UE5 RPG 实现技能的装配

在上一篇里&#xff0c;我们实现了在技能面板&#xff0c;点击技能能够显示出技能的相关描述以及下一级的技能的对应描述。 在这一篇里&#xff0c;我们实现一下技能的装配。 在之前&#xff0c;我们实现了点击按钮时&#xff0c;在技能面板控制器里存储了当前选中的技能的相关…