DNS基础

         DNS(Domain Name System)是互联网的基础服务之一,用于将用户友好的域名转换为计算机可识别的IP地址。

         IP地址是网络设备的唯一标识符,而域名是为了方便人们记忆和使用而设计的。DNS系统通过全球分布的服务器层级结构,负责维护域名与IP地址的映射关系。

1.DNS基本概念

1.1.域名(Domain Name)

         域名是互联网中用于标识某个特定网站或服务的名称,方便用户进行访问。域名通常是由英文字母、数字和符号组成的字符串,用来代替难以记忆的IP地址。

1.2. IP地址(IP Address)

         IP地址是设备在网络中进行通信时使用的唯一标识符,它是通过数字表示的。IP地址有两种类型:

                  IPv4:由四个数字组成,每个数字在0到255之间,用点分隔,例如 192.0.2.1。

                  IPv6:用于解决IPv4地址耗尽问题,使用16个字符的16进制表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。

1.3. DNS解析(DNS Resolution)

         DNS解析是将域名转换为IP地址的过程。当用户在浏览器中输入域名时,DNS会根据域名找到对应的IP地址,以便计算机可以访问目标网站或服务。

1.4. DNS服务器(DNS Server)

         DNS服务器是专门负责存储域名与IP地址映射关系的服务器。当用户发起域名查询请求时,DNS服务器会返回相应的IP地址。

1.5. TTL(Time to Live)

         TTL是DNS记录的缓存时间,表示DNS记录在DNS服务器或本地缓存中存储的有效时间。当TTL过期时,DNS记录需要重新查询。TTL值通常以秒为单位,例如3600秒表示1小时。

2.DNS层次结构

         DNS采用分层的树状结构,由多个级别的域组成,从上到下依次为:

                  根域(Root Domain):位于DNS层级的最顶端,用 . 表示。通常不直接输入,隐含存在。

                  顶级域(Top-Level Domain, TLD):根域下的一层域,包括通用顶级域(如 .com、.org)和国家/地区顶级域(如 .cn、.uk)。

                  二级域(Second-Level Domain, SLD):位于顶级域下的一层域名,例如 example.com 中的 example 是二级域。

                  子域(Subdomain):在二级域名下进一步细分的域名,例如 www.example.com 中的 www 是子域。

3.DNS记录类型

DNS记录存储了域名与其对应的IP地址或其他资源的映射。常见的DNS记录类型有:

         A记录(Address Record):将域名解析为IPv4地址。

         AAAA记录:将域名解析为IPv6地址。

         CNAME记录(Canonical Name Record):将一个域名别名指向另一个域名。

         MX记录(Mail Exchange Record):定义处理电子邮件的邮件服务器。

         NS记录(Name Server Record):指定负责解析特定域名的DNS服务器。

         TXT记录(Text Record):包含任意文本信息,通常用于域名验证和安全配置。

4.DNS工作原理

         DNS(Domain Name System)的工作原理主要是通过分布式的网络系统,将用户输入的域名解析为对应的IP地址,以便用户能够访问互联网资源。整个解析过程涉及到多个DNS服务器,层级查询和缓存机制。以下是DNS工作原理的详细描述:

         1)用户输入域名 当用户在浏览器中输入一个网址(如 www.example.com),浏览器需要将该域名转换为对应的IP地址,以便与目标服务器建立连接。此时,DNS查询过程正式开始。

         2)浏览器查询本地缓存 在发起DNS请求之前,浏览器会先查询本地的DNS缓存,检查是否之前已经解析过该域名。如果缓存中有对应的IP地址且未过期,浏览器会直接使用缓存中的IP地址,跳过后续查询步骤。

         3)操作系统查询本地缓存 如果浏览器本地没有缓存记录,操作系统的DNS缓存将被查询(例如Windows中的ipconfig /displaydns缓存)。如果系统缓存中有对应的解析结果,也会直接返回给浏览器。

         4)向递归DNS服务器发出请求 如果本地缓存中没有对应记录,操作系统会将域名解析请求发给配置的递归DNS服务器(通常由ISP或公共DNS服务提供,如Google DNS、Cloudflare DNS等)。递归DNS服务器负责帮助用户完成整个域名解析过程。

         5)递归DNS服务器检查自身缓存 递归DNS服务器首先会检查自己的缓存。如果缓存中存在该域名的记录且未过期,递归服务器会将缓存的结果返回给用户。如果没有找到,递归服务器将开始递归查询过程。

         6)递归查询过程 递归查询的核心是逐级查询不同的DNS服务器,直到找到正确的IP地址。

         7) 递归DNS服务器返回结果 一旦递归DNS服务器从权威DNS服务器获取到IP地址,它会将该结果返回给用户的计算机,同时将该解析结果缓存起来,供后续相同的查询使用。

         8) 操作系统将IP地址返回给浏览器 操作系统接到递归DNS服务器的解析结果后,将IP地址返回给浏览器。

         9) 浏览器与目标服务器建立连接 获得IP地址后,浏览器使用该地址与目标服务器建立TCP或UDP连接,开始加载网站内容。

5.DNS缓存

         为了提高查询速度并减少DNS服务器的负载,DNS系统会对查询结果进行缓存。缓存存在于多个地方:

         本地缓存:操作系统会缓存最近的DNS查询结果。

         递归DNS服务器缓存:递归DNS服务器也会缓存查询结果,以加速后续相同查询的响应。

6.DNS服务提供商

常见的DNS服务提供商包括:

  • Cloudflare:提供快速、免费且安全的DNS服务。
  • Google Public DNS:提供公共DNS解析服务,IP地址为8.8.8.8和8.8.4.4。
  • Amazon Route 53:AWS提供的DNS服务,支持高可用性和可扩展性。

7.DNS的查询方式

         DNS查询有两种方式:

           递归查询:客户端向递归DNS服务器发出请求,递归服务器代替客户端完成所有查询,直到找到最终的IP地址,并将结果返回给客户端。

            迭代查询:客户端直接与多个DNS服务器通信,逐级查询域名解析过程,直到找到IP地址。

8.常见DNS故障及排查

8.1.常见DNS故障类型

    DNS服务器无法解析域名 这是最常见的DNS问题。当用户输入域名后,浏览器无法解析为IP地址,最终导致无法访问网站。出现这种问题的原因通常是DNS服务器宕机、配置错误或域名本身失效。

    DNS服务器宕机或不可用 DNS服务器可能因为硬件故障、网络问题或DDoS攻击等原因而宕机,导致用户无法通过该服务器进行域名解析。

    DNS缓存中毒(DNS Cache Poisoning) 由于缓存投毒,DNS服务器缓存了错误的解析结果,导致用户访问错误的IP地址,从而访问到恶意网站或错误页面。

    DNS劫持 DNS劫持是指用户的DNS请求被劫持,并定向到不正确的服务器或恶意网站。这种情况多是由于恶意软件、运营商劫持或本地网络配置错误导致的。

    域名过期或DNS记录错误 如果域名所有者没有及时续费或没有正确配置DNS记录(如A记录、MX记录等),那么该域名将无法被正确解析。

    网络连接问题 网络连接问题也可能导致DNS无法正常解析。例如,本地网络故障、ISP提供的DNS服务器配置错误、路由器问题等,都可能导致DNS请求无法发送或接收。

    DNS查询超时 DNS查询过程如果超过了设定的时间,没有得到服务器的响应,系统就会报告DNS查询超时问题。可能的原因是网络延迟过大或DNS服务器负载过高。

    DNS递归查询失败 当DNS服务器未能成功执行递归查询,导致无法返回正确的IP地址。这可能是由于网络问题、权限问题或者配置错误。

8.2.DNS故障排查步骤

  1. 检查本地网络连接
    • 方法:首先,检查本地网络是否工作正常。可以使用ping命令测试网络连接。例如,ping www.google.com 或 ping 8.8.8.8(Google的公共DNS服务器)。
    • 分析:如果无法ping通外网IP地址,说明是网络连接问题而不是DNS问题。如果能ping通IP地址但不能ping通域名,说明问题与DNS解析有关。
  2. 清除本地DNS缓存
    • 方法:在Windows中,使用ipconfig /flushdns命令清除本地DNS缓存;在macOS中,使用sudo killall -HUP mDNSResponder命令;在Linux中,重启nscd服务。
    • 分析:本地DNS缓存有时会缓存错误的解析结果,清除缓存后可以重新进行DNS查询。
  3. 检查DNS服务器配置
    • 方法:在Windows中,使用ipconfig /all命令查看当前配置的DNS服务器;在Linux或macOS中,可以查看/etc/resolv.conf文件中的DNS配置。
    • 分析:如果DNS服务器配置错误,可能会导致无法解析域名。可以手动配置一个公共DNS服务器(如Google DNS 8.8.8.8或Cloudflare DNS 1.1.1.1)进行测试。
  4. 测试替换DNS服务器
    • 方法:通过手动修改DNS服务器地址为公共DNS(如Google DNS:8.8.8.8 或 Cloudflare DNS:1.1.1.1),然后再次尝试访问目标网站。
    • 分析:如果更换DNS服务器后问题得到解决,说明可能是原本的DNS服务器存在问题,可能是过载、配置错误或受到攻击。
  5. 使用nslookupdig工具检查DNS解析
    • 方法:在Windows中使用nslookup,在Linux或macOS中使用dig命令检查域名解析情况。例如,nslookup www.example.com 或 dig www.example.com。
    • 分析:这两个命令可以检查域名解析的具体过程。如果DNS解析失败,命令会提供更多的错误信息,例如"Non-existent domain"(域名不存在)或"Request timed out"(请求超时)。
  6. 检查路由器的DNS配置
    • 方法:登录路由器的管理界面,检查路由器的DNS服务器设置是否正确。部分路由器会允许用户手动配置DNS服务器地址。
    • 分析:如果路由器配置的DNS服务器错误或不可用,会导致所有连接到该路由器的设备无法进行DNS解析。
  7. 检查防火墙或安全软件
    • 方法:暂时关闭计算机或网络中的防火墙、杀毒软件或任何网络安全设备,看看问题是否依然存在。
    • 分析:某些防火墙或安全软件可能会阻止DNS查询或返回错误的DNS结果,导致网络无法正常访问。
  8. 检查域名注册状态
    • 方法:使用域名查询工具(如whois)查看域名的注册状态,确认域名是否已经过期或被冻结。
    • 分析:如果域名已经过期或被注销,DNS解析自然无法正常进行。
  9. 检查权威DNS服务器配置
    • 方法:如果你管理一个域名,登录域名注册商的管理平台,检查DNS记录是否正确配置(A记录、CNAME、MX记录等)。
    • 分析:如果权威DNS服务器中的记录配置错误或失效,用户将无法访问该域名指向的资源。及时更新和维护权威DNS记录是确保域名解析正常的关键。
  10. 排查DNS服务器是否遭受DDoS攻击

    方法:通过监控DNS服务器的流量和请求量,检查是否有异常的大量查询请求。可以使用防火墙、DDoS防护工具检测并阻止恶意流量。

    分析:DDoS攻击会导致DNS服务器无法响应正常的查询请求,影响域名解析服务。需要及时识别并过滤攻击流量。

  1. 检查递归查询链路

    方法:使用dig +trace命令检查完整的递归查询过程。这个命令可以显示DNS请求从根服务器到权威服务器的全过程,帮助定位解析链路中的问题。 

    分析:如果递归查询在某个环节失败,可能是该DNS服务器配置错误、网络不通或没有响应,需要进一步排查。

  1. 监控和分析日志

    方法:检查DNS服务器的日志文件,查看是否有错误信息或异常的DNS查询请求。

    分析:日志分析可以帮助了解DNS服务器是否正常工作,是否有过多的错误查询、重复查询或请求超时等问题。

8.3.DNS故障排查工具

         nslookup:命令行工具,用于查询DNS解析的具体过程,适用于Windows、macOS和Linux。

         dig:功能强大的DNS查询工具,适用于Linux和macOS,支持递归查询、跟踪DNS解析路径等。

         traceroute:用于检测网络路径的工具,帮助识别网络连接中断的具体位置。

         whois:用于查询域名的注册信息,检查域名状态和注册商。

         Wireshark:网络协议分析工具,可以捕获和分析DNS数据包,帮助检测DNS请求和响应的具体细节。

         ipconfig(Windows)和ifconfig(Linux/macOS):用于检查网络接口的IP地址、DNS服务器等配置。

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

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

相关文章

828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp

准备国庆之际,客户要搭个 H5 商城系统,这系统好不容易开发好啦,就差选个合适的服务器上线。那可真是挑花了眼,不知道哪款性价比高呀!就像在琳琅满目的选择前。最终慧眼识珠,选择了华为云 Flexus X。至于为什…

redis高级篇 抢红包案例的设计以及分布式锁

一 抢红包案例 1.1 抢红包 二倍均值算法: M为剩余金额;N为剩余人数,公式如下: 每次抢到金额随机区间(0,(M/N)*2) 这个公式,保证了每次获取的金额平均值…

TX-LCN框架 分布式事务

一、三种事务模式 1)LCN 基于XA协议,事务提交或回滚的操作由事务管理服务器统一告诉它管理的多个项目,也就是说在A事务,B事务的事务提交操作或回滚操作都是在同一时刻发生,并且要么都提交,要么都回滚。 LCN…

低代码可视化-UniApp二维码可视化-代码生成器

市面上提供了各种各样的二维码组件,做了一简单的uniapp二维码组件,二维码实现依赖davidshimjs/qrcodejs。 组件特点 跨浏览器支持:利用Canvas元素实现二维码的跨浏览器兼容性,兼容微信小程序、h5、app。 无依赖性:QR…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表

一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 :“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令命令解释SHOW DATABASES;展示所有的数据库CREATE DATABASE 数据库名称; 创…

震动传感器介绍及实战

目录 前言 震动传感器 1.震动传感器配图 2.震动传感器原理图 3.震动传感器使用 1-震动传感器的意义 2-震动传感器的应用场景 3- SW-18010P震动传感器使用方法 震动传感器控制灯 操作 增加延时 使用SPC-ISP生成演示函数 总结 前言 我们上节已经简单了解了LED的使用…

【机器学习】音乐生成——AI如何创作个性化音乐与配乐

我的主页:2的n次方_ 音乐是人类文化的重要组成部分,它具有极强的情感表达和艺术价值。近年来,随着人工智能技术的飞速发展,AI已经能够自动生成音乐,甚至根据用户需求创作个性化配乐。AI生成音乐的应用场景广泛&…

redis中的数据类型(Set与ZSet)

(一)set set在我们目前有两个意思,首先就是这里使用的集合,第二个是我们的set和get方法 因为set是一个集合,所以他具有集合的一些特点: 1.集合中的元素无序 2.集合中的元素是不可重复的 3.集合间是可…

5G NR物理信号

文章目录 NR 物理信号与LTE的区别上行参考信号DMRS (UL)SRSPT-RS(UL) 下行参考信号DMRS(DL)PT-RS(DL)CSI-RSPSSSSS NR 物理信号与LTE的区别 用SSS、CSI-RS和DMRS 取代了CRS信号。下行业务信道采用TM1波束赋形传输模式。基于SSB 或者CSI-RS进行RSRP和SINR测量。基于DMRS 进行共…

【Mybatis篇】Mybatis的关联映射详细代码带练 (多对多查询、Mybatis缓存机制)

🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯一.关联映射概述 &#x1f6a…

2024.9.29 问卷数据分析

最近拿到了一份受众回访的问卷数据,排到的任务是对它进行数据探索。 其实对于问卷数据的处理我只在参加正大杯那次做过(正大杯拿了校三),可见这个处理水平还有待提高(当然是各种原因促成的结果)&#xff0…

17 链表——21. 合并两个有序链表 ★

17 链表 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 算法设计: 合并两个有序链表,并保持有序性,可以采用迭代法和递归法两种…

卸载WSL(Ubuntu),卸载linux

禁用 WSL 功能 打开 Windows 功能: 按下 Windows R 打开运行对话框,输入 optionalfeatures,然后按回车。 禁用 WSL: 在弹出的 Windows 功能窗口中,找到 适用于 Linux 的 Windows 子系统(Windows Subsystem…

Windows环境 源码编译 FFmpeg

记录一下windows环境纯代码编译ffmeg的过程! 目录 一、安装MSYS2 1.下载安装 2.配置 3.修改源 4.测试与更新 二、安装其他必要工具 1.安装MinGW-w64 2.安装git 3..安装make等工具 4.编译前的其他准备工作 ①.重命名link.exe ②.下载和安装YASM ③.安装…

Docker 从安装到实战

Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它利用操作系统级别的虚拟化,将应用程序及其依赖项封装在称为容器的轻量级、可移植的单元中。以下是 Docker 的一些关键特点: 容器化:Docker 容器可以在任何支持 …

用CSS创造三角形案例

6.3.2 用CSS创造三角形 用div来创建,角上是平分的,所以要是内部宽高为0,其他边透明,正好是三角形。 代码 div {border: 12px solid;width: 0;height: 0;border-color: transparent red transparent transparent; } 与伪元素aft…

vscode+stfp插件,实现远程自动同步文件代码

概述 远程同步代码,将本地代码实时保存到同一局域网内的另一台电脑(linux系统),这里的本地代码也可以是远程服务上的代码,即从一个远程ip同步到另一台远程ip服务器。 工具 vscode,SFTP插件 安装 vscod…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…

突发!Meta重磅发布Movie Gen入局视频生成赛道!

引言 Meta于2024年10月4日首次推出 Meta Movie Gen,号称是迄今为止最先进的媒体基础模型。Movie Gen 由 Meta 的 AI 研究团队开发,在一系列功能上获取最先进的效果,包括:文生视频、创建个性化视频、精准的视频编辑和音频创作。 …

libcrypto.so.10内容丢失导致sshd无法运行

说明: 我的是centos的服务器,被扫出有ssh漏洞,需要升级到OpenSSH_9.8p1, OpenSSL 3.0.14 4 报错 我的系统和环境升级前的版本 这是升级之后的版本 OpenSSH_9.8p1, OpenSSL 3.0.14 4 解决:我这个的原因是升级的时候把这个文件给删除了, 复制旧服务器上的 libcrypto.so.1…