0

0

Linux基础软件-dns(一)

爱谁谁

爱谁谁

发布时间:2025-06-21 13:44:15

|

859人浏览过

|

来源于php中文网

原创

作者介绍:一位在简历上没有标注精通的运维工程师。请点击上方的蓝色《运维小路》关注我,以下思维导图展示了预计更新的内容和当前进度(不定时更新)。

Linux基础软件-dns(一)

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的dns解析流程

  1. 用户请求

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

  2. 查找本地缓存:

    然而,这个缓存默认情况下是不可见的。我通过抓包测试连续两次dns查询,仍然需要向dns发出请求。因此,我对这个缓存一直持怀疑态度,但在实际运维中确实遇到过解析异常的情况。

  3. 查询/etc/hosts文件:

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

    华友协同办公自动化OA系统
    华友协同办公自动化OA系统

    华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、

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

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

    nameserver 223.5.5.5
    nameserver 114.114.114.114

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

  5. DNS解析器查询过程:

    DNS服务器可以分为迭代和递归两种:

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

    递归查询:在递归查询中,当客户端向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个参数。

Linux基础软件-dns(一)

总结

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

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

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.10.07

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

352

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2075

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号