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

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逻辑,这样就可能导致业务和实际预期不一样的情况。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值