Linux-DNS域名解析服务

news2024/9/20 16:37:51

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
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.coloradmin.cn/o/2051401.html

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

相关文章

扫描切除-实体轮廓:方程式驱动曲线路径vs螺旋线路径

最近,在使用solidworks2018的过程中,接触到扫描切除-实体轮廓命令,如图1-2所示。此命令可以使用一个实体来切除另一个实体,用来切除的实体可以按一定的轨迹运动。测试过程中发现,这个命令频繁出错,切除失败,体验实在是太差了。下面对比了在该命令下使用方程式驱动曲线和…

后端学习笔记(八)--HTML

1.HTML ​ *编写网页的一门语言 ​ *HTML(HyperText Markup Language):超文本标记语言 ​ *超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容 ​ *标记语言:由标签构成的…

代码随想录DAY18 - 二叉树 - 08/17

目录 二叉搜索树的最小绝对差 题干 思路和代码 方法一:求中序序列 方法二:递归法双指针法 方法三:迭代法双指针法 二叉搜索树中的众数 题干 思路和代码 方法一:求中序序列 方法二:递归法双指针中序遍历 ​编…

基于 Konva 实现Web PPT 编辑器(一)

前言 目前Web PPT编辑比较好的库有PPTist(PPTist体验地址),是基于DOM 的渲染方案,相比 Canvas 渲染的方案,在复杂场景下性能会存在一定的差距。不过确实已经很不错了,本应用在一些实现思路、难点攻克上也参考了pptist的思想&#…

1:html的介绍与基础1

目录 1.1html的介绍 1.2html的基础1 1.2.1标题,头部与基本的格式怎么写 1.2.1.1标题与基本格式 1.2.1.2头部 1.2.2段落 1.2.3链接 1.2.3.1基本的网页链接 1.2.3.2图像链接 1.2.4注释 1.1html的介绍 HTML是一种标记语言,用于创建,设…

EmguCV学习笔记 VB.Net和C# 下的OpenCv开发

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 笔者的博客网址:https://blog.csdn.net/uruseibest 本教程将分为VB.Net和C#两个版本分别进行发布。 教程VB.net版本请…

高效同步与处理:ADTF流服务在自动驾驶数采中的应用

目录 一、ADTF 流服务 1、流服务源(Streaming Source) 2、流服务汇(Streaming Sink) 二、数据链路 1、数据管道(Data Pipe) 2、子流(Substreams) 3、触发管道(Tri…

遥感之常用各种指数总结大全

目前在遥感领域基本各种研究领域都会用到各种各样的指数,如水体指数,植被指数,农业长势指数,盐分指数,云指数,阴影指数,建筑物指数,水质指数,干旱指数等等众多。 本文对上…

Qt第十五章 动画和状态机

文章目录 动画框架动画架构动画框架类QPropertyAnimation串行动画组QSequentialAnimationGroup并行动画组QPararallelAnimationGroupQPauseAnimationQTimeLine窗口动画下坠效果抖动效果透明效果 状态机QStateQStateMachine 动画框架 动画架构 动画框架类 类名描述QAbstractAn…

字符串金额转换,字符串手机号屏蔽,身份证信息查看,敏感词替换

2135 在发票上面该写成零佰零拾零万贰仟壹佰叁拾伍元 我们用逆推法可以写成零零零贰壹叁伍->贰壹叁伍->2135 1.遍历获取到每一个数字,然后把大写放到数组里面,将数字当作索引,在数组里面查找大写 package stringdemo;import java.uti…

传输层安全性 ——TLS(Transport Layer Security)简介

TLS(Transport Layer Security)是一种广泛使用的安全协议,旨在确保互联网通信的隐私性和数据完整性。它是SSL(Secure Sockets Layer)的继任者,最初版本于1999年发布,最新版本是TLS 1.3。 TLS 握手为每个通信会话建立一个密码套件密码套件是一组算法,其中指定了一些细节…

如何轻松获取麒麟操作系统架构信息?

如何轻松获取麒麟操作系统架构信息? 一、使用uname -a命令二、用arch命令三、示例输出 💖The Begin💖点点关注,收藏不迷路💖 在使用麒麟操作系统(Kylin OS)时,了解系统的架构信息对于…

stm32单片机学习 - stm32 的命名规则

STM32命名规则: 以STM 32 F 103 C 8 T 6 A xxx为例:

动手学深度学习(pytorch)学习记录9-图像分类数据集之Fashion-MNIST[学习记录]

注:本代码在jupyter notebook上运行 封面图片来源 Fashion-MNIST是一个广泛使用的图像数据集,主要用于机器学习算法的基准测试,特别是图像分类和识别任务。Fashion-MNIST由德国的时尚科技公司Zalando旗下的研究部门提供。作为MNIST手写数字集…

Java并发类API——CompletionService

CompletionService 是 Java 中 java.util.concurrent 包的一部分,用于管理并发任务的执行,并以完成的顺序提供结果。它结合了线程池和阻塞队列的功能,用于提交任务并按照任务完成的顺序来检索结果,而不是按照任务提交的顺序。 接…

uni-app--》打造个性化壁纸预览应用平台(二)

🏙️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名前端工程师 🌄个人主页:亦世凡华、 🌆系列专栏:uni-app 🌇座右铭:人生亦可燃烧,亦可腐败&#xf…

python语言day7 函数式编程 面向对象编程

Java 函数式编程_java函数式编程-CSDN博客 25.Java函数式编程-CSDN博客 函数式编程: 通过调用函数send_email(),完成业务需求。将具体的业务需求封装成一个函数这样的一种解决问题的思想称它为函数式编程。 在java中本来没有函数的概念,因为…

指针详解

目录 1. 内存 2. 编址​编辑 3. 指针变量和地址 1)取地址操作符(&) 2)指针变量 3)指针类型 4)解引用操作符 4. 指针变量的大小 5. 指针变量类型的意义 1)指针的解引用 6. 指针 -…

Java使用XXL-Job-Admin创建和管理调度任务的指南

文章目录 一、调度中心添加任务的基本方法二、配置文件中的任务配置三、创建并调用调度任务的客户端四、配置RestTemplate 总结 在日常开发中,我们经常需要处理各种定时任务,而XXL-Job作为一款强大的分布式任务调度平台,为我们提供了简单易用…

进程与线程(6)

有名管道: 目录 有名管道: 1.创建(mkfifo): 2。打开(open): 3.读写(read /write): 4.关闭(close): 5.卸…