Linux基础软件-dns(一)

news2024/12/25 0:30:57

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的,但是Linux作为一个服务器操作系统,肯定是要安装运行软件来满足我们的业务需要,本章基础软件部分,将从下面几个部分来讲解:

Linux基础软件-软件安装

Linux基础软件-yum(一)

Linux基础软件-yum(二)

Linux基础软件-ntp

Linux基础软件-chrony

Linux基础软件-dns(一)(本章节)

Linux基础软件-dns(二)

Linux基础软件-nfs

Linux基础软件-lvm

Linux基础软件-Selinux&库文件&swap

在讲Linux运维-主机名&hosts的时候,我们说过,通过hosts是可以跳过dns解析的,那什么是dns,为什么要有dns呢?本小节主要就是讲解dns相关内容。

什么是dns

DNS,全称是“Domain Name System”或者叫“域名系统”,是互联网的一种服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP数串。

为什么要有dns

在互联网上,每个接入网络的设备都会被分配一个唯一的IP地址,你可以把它理解为互联网上的电话号码。当你想访问一个网站时,你的电脑实际上是向该网站服务器的IP地址发送请求。然而,IP地址是一串数字,对人类来说记忆起来相对困难。这时候,DNS就派上了用场,它的作用就是将这串数字的IP地址转换成更易于记忆的域名,比如Linux自带的默认情况下localhost就代表本机IP地址。

例如,当你在浏览器中输入www.qq.com时,你的计算机会首先询问DNS服务器www.qq.com的IP地址,然后DNS服务器会返回对应的IP地址给你的计算机,之后你的计算机才能通过该IP地址去访问qq.com服务器。这个过程被称为DNS解析。

Linux解析流程

1.用户请求

用户在应用程序(比如浏览器、命令行等)中输入域名,例如 www.example.com。

2.查找本地缓存:

但是这个缓存,默认情况下是看不到的。我通过抓包测试连续两次dns查询,也都是需要向dns发出请求的。所以我对这个缓存其实一直都是存疑的,但是实际运维中也确实遇到过解析异常的情况。

3.查询/etc/hosts文件:

如果在本地缓存中找不到对应的IP地址,系统会检查 /etc/hosts 文件,这个文件可以手动配置域名和IP地址的映射关系。如果在这里找到了,也会直接返回IP地址给应用程序。

4.向DNS解析器发起查询:

如果本地缓存和 /etc/hosts 文件中都没有找到对应的IP地址,系统会向预先配置的DNS解析器发起查询请求。DNS解析器通常在 /etc/resolv.conf 文件中指定,例如:

nameserver 223.5.5.5
nameserver 114.144.144.114

这里的233.5.5.5 和114.114.114.114 则是国内提供的公共dns,可以替换为其他DNS服务器的IP地址。

5.DNS解析器查询过程:

这里的dns服务器可以分为迭代和递归两种:

  1. 迭代查询:在迭代查询中,当客户端向DNS服务器查询时,如果该服务器没有存储查询的信息,它会将能够提供信息的其他服务器的地址返回给客户端,让客户端去那个服务器查找。也就是说,DNS服务器不会自己去查询,而是告诉客户端应该去哪里查找。

  2. 递归查询:在递归查询中,当客户端向DNS服务器查询时,如果该服务器没有存储查询的信息,它会代表客户端去其他服务器查询,直到找到答案才返回给客户端。在这个过程中,客户端只需要等待最终结果,所有的查询工作都由DNS服务器完成。

总结下来其实很简单,迭代自己没有答案,但是他会告诉你哪里有答案。递归他帮你去找到答案,然后告诉你答案。目前大部分dns都是递归。

6.解析结果返回:

DNS解析器将获取到的IP地址返回给系统的resolver,并且缓存这个结果。同时,将IP地址返回给应用程序,应用程序可以继续向该IP地址发送网络请求。

7.应用程序通信:

应用程序拿到IP地址后,可以与目标服务器建立通信,发送HTTP请求等操作。

Linux的dns配置文件

前面讲过linux的dns配置文件是/etc/resolv.conf,他除了配置了dns服务器,还有其他配置,分别是什么意思,如果遇到解析失败他怎么办?

nameserver :就是dns服务器地址,最多可以写3个。

search:搜索域,一般环境用不到,但是在k8s里面会搜索svc的时候会用到这个特性。大概意思就是你查询一个域名,如果没查到解析,他再给你添加个后缀,再进行查询。

options

timeout 如果在设定时间未返回数据,则他会请求下一个dns服务器查询。

attempts: 如果所有dns都查询了都失败了,他在重复这个操作的次数。

如果你的dns解析很慢,可以注意看这2个参数。

图片

总结

1.Linux的dns是一个很核心的基础服务,几乎所有的业务请求都是通过域名来实现,这样所有的请求都会通过dns才能正常使用。

2.有的程序并不会使用系统dns逻辑,而是程序自带的dns逻辑,这样就可能导致业务和实际预期不一样的情况。

关注微信公众号《运维小路》获取更多内容。

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

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

相关文章

Nvidia驱动莫名其妙不好使了?nvidia-smi报错?如何解决?已解决!!

文章目录 一、报错提示二、解决方案2.1 原因1的解决办法2.2 原因2的解决方案 一、报错提示 Ubuntu20.04出现Failed to initialize NVML: Driver/library version mismatch问题NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. 二、解决方案 …

深入探究linux文件IO

一、原子操作和竞争条件 所有系统调用都是以原子操作方式执行的。之所以这么说,是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性加以执行,其间不会为其他进程或线程所中断。 以独占方式创建一个文件 结合 O_CREAT 和 O_EXCL 标志来一次性…

AI学习记录 - 怎么理解 torch 的 torch.nn.BatchNorm2d

画图不易,有用就点个赞 这里创建了一个随机张量,形状为 (4, 3, 4, 4),分别对应 形状为 (batch_size, num_channels, height, width) batch_size:批次 num_channels: 通道(什么是通道看上一章节&#xff0…

串口和RS485通信

一、 定义串口收发数据结构体 /*COM Received Data Structure*/ typedef struct {uint8_t ubr_EndFlag; //Received data end flag uint8_t ubr_buffer[300]; //Received data bufferuint8_t ubr_bufferTemp[300]; //Received data bu…

K-medoids算法原理及Python实践

一、原理 K-medoids算法是一种聚类算法,它的原理与K-Means算法相似,但关键区别在于它使用数据集中的实际点(称为medoids)作为簇的中心点,而不是像K-Means那样使用簇内所有点的平均值。以下是K-medoids算法的主要原理&…

如何在算家云搭建模型Stable-Fast-3D(3D模型生成)

一、模型介绍 Stable-Fast-3D 具有 UV 展开和照明解缠的稳定快速 3D 网格重建,它是一种从单个图像进行快速前馈 3D 网格重建的最先进的开源模型。 二、模型搭建流程 基础环境最低要求说明: 环境名称版本信息1Ubuntu22.04.4 LTSCudaV12.1.105Python3.…

【项目日记】高并发内存池 ---项目介绍及组件定长池的实现

余生还长,你别慌,也别回头,别念旧. --- 余华 --- 1 高并发内存池简介 高并发内存池项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存…

快速排序与其例题

一、快速排序 1、简单介绍:快速排序(Quick Sort)是一种高效的排序算法,由计算机科学家Tony Hoare在1960年提出。它是基于分治法的排序算法,其基本思想和步骤如下: 基本概念 快速排序的核心思想是将待排序…

一种商业模式既解决引流又解决复购 你想了解一下嘛?

欢迎各位,我是你们的电商策略顾问,吴军。今天,我将向大家介绍一种新颖的商业模式——循环购物模式。这种模式有何独特之处?商家真的在进行慷慨的赠金活动吗?消费者在购物的同时还能获得额外收益?甚至可以将…

Python控制流:条件语句(if, elif, else)①

文章目录 前言1. 基本条件语句1.1 if 语句1.2 else 语句1.3 elif 语句1.4 嵌套条件语句 2. 条件表达式3. 多条件判断4. 比较运算符和逻辑运算符5. 常见错误和最佳实践5.1 常见错误5.2 最佳实践 6. 综合详细的例子:学生成绩管理系统6.1 类和方法Student 类 6.2 主函数…

LD/T698.45 协议解析(新)

通信架构 客户机和服务器在开始通信前,通信信道必须先完成预连接。预连接建立后,默认具有一个最低权限的应用连接,客户机和服务器之间可直接进行数据交换。当客户机需要得到更高权限的服务器服务时,客户机必须发起建立更高权限的…

浦发银行不良堆积,新任领导的无奈

撰稿|芋圆 浦发银行在2023年进行了一波董监高人员大变动,董事长和行长两位掌舵人双双离职,在其任内,浦发银行自2020年起的营收、利润状况和资产质量就一直难有起色。 目前,距新任领导班子上任已差不多过去一年之久。在这一年里&a…

Redis(面试题【速记】)

Redis简介 Redis 是一个开源(BSD 许可)内存数据结构存储用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构,例如 字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis 内置了复制、Lua 脚本、LRU 驱逐、事务和不同级别的…

【Linux —— 线程同步 - 条件变量】

Linux —— 线程同步 - 条件变量 条件变量的概念互斥量与条件变量的关系条件变量的操作代码示例 条件变量的概念 条件变量是一种用于线程间同步的机制,主要用于协调线程之间的执行顺序,允许线程在某个条件不满足时进入等待状态,直到其他线程通…

【Linux I/O】万字长文带思维导图,一文彻底掌握Linux I/O:深入解析操作系统数据交互的艺术

Linux I/O Linux I/O(输入/输出)是操作系统与外部设备进行数据交互的过程。在Linux系统中,I/O操作的管理和优化对于系统性能有着至关重要的影响。本文将详细介绍Linux中的各种I/O模型,包括它们的工作原理、优缺点以及适用场景&am…

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

windonw cmd下的输出: (python3.9) PS D:\git\ImageAnalysisService\core\medical_bills> python Python 3.9.19 (main, May 6 2024, 20:12:36) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or …

计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存?为什么需要虚拟内存? 虚拟内存为程序提供比实际物理内存更大的内存空间,同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间,这段空间是连续…

苍穹外卖项目DAY11

苍穹外卖项目DAY11 1、Apache ECharts 1.1、介绍 Apache ECharts是一款基于JavaScript的数据可视化图标库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图标 官网&#xff1a;Apache ECharts 1.3、入门案例 <!DOCTYPE…

LlamaIndex 实现 RAG(四)- RAG 跟踪监控

RAG 整个流程不复杂&#xff0c;集成三大部分包括文档解析并生成向量、根据查询问题查找语意相似的数据文档块、把查询问题和召回文档作为上下文的数据传给模型进行解答。大语言模型的应用开发和传统的开发方式区别很大&#xff0c;以前开发完成&#xff0c;只要逻辑正确&#…

解决IDEA 控制台中文乱码及无法输入中文

一、IDEA 控制台中文乱码&#xff1a; 问题描述&#xff1a; IntelliJ IDEA 如果不进行相关设置&#xff0c;可能会导致控制台中文乱码、配置文件中文乱码等问题。 解决方案&#xff1a; ①&#xff1a;设置字体为支持中文的字体&#xff1a; 点击菜单 File - > settings …