【Linux】Linux中DNS配置文件/etc/resolv.conf详解

文章目录

      • 1 DNS相关配置文件
      • 2 /etc/resolv.conf配置文件中的字段解析
      • 3 容器中的/etc/resolv.conf配置

1 DNS相关配置文件

在不安装额外组件的情况下,与域名解析相关的配置文件主要有三个:

  • /etc/hosts:本地的域名和IP的映射关系,通常用作本地测试或者临时修改域名对应的IP
  • /etc/nsswitch.conf:定义系统如何查找各种数据的方法,以及在查找时应该首先使用哪些数据库
  • /etc/resolv.conf:域名解析服务器的地址以及参数配置

2 /etc/resolv.conf配置文件中的字段解析

/etc/resolv.conf配置文件保存的是解析域名的配置,通常包含以下配置项:

  • nameserver:指定域名服务器的IP地址
  • search:进行域名查询时会和域名后缀拼接成全域名去查询
  • options:控制域名查询的选项

nameserver用于配置域名服务器的IP地址,例如,nameserver 192.168.70.2指定域名服务器的IP地址为192.168.70.2,并且可以指定多条nameserver配置,系统会按照顺序尝试去查询域名,常用的公共的域名服务器地址:

  • 114.114.114.114:国内三网通
  • 8.8.8.8:Google DNS

其他的可以参看非常好用的DNS服务器。

search用于指定域名后缀,可以只用提供域名前缀就可以查询域名,例如,当search配置为search baidu.com,可以直接使用www作为域名,在进行域名查询时,会去查询wwww.baidu.com,而且,search后面通常也会接多个域名,那么,是不是只要查询域名就会进行拼接操作呢?这里的策略是:

  • 如果提供的域名以点号结尾,则会认为是全域名,会直接查询该域名,且不会与search配置的域名后缀拼接
  • 如果提供的域名中的点号的数量大于或者等于options中的ndots配置,则先直接查询该域名,如果失败,再与search配置的域名后缀拼接进行查询
  • 如果提供的域名中的点号的数量小于options中的ndots配置,则直接与search配置的域名后缀拼接进行查询

例如,如果查询域名abc.host -a abc.,会直接报错查询不到;如果查询域名abchost -a abc,由于域名中的点号的数量等于0,小于options中的ndots配置(ndots默认值为1),会查询abc.baidu.com(假设search配置为search baidu.com);如果查询域名abc.svc,由于域名中的点号的数量为0,等于options中的ndots配置,则先查询abc.svc,如果失败,再查询abc.svc.baidu.com

这里提到一个重要的配置项:ndots,该配置项会作为是否需要优先与search配置的域名后缀拼接还是直接查询域名的判断依据,也就是说,如果域名中的点号超过ndots,说明域名足够长,大概率是全域名,直接查询该域名,如果域名中的点号小于ndots,说明该域名比较短,大概率需要与域名后缀拼接。

options用于指定域名查询过程中的一些参数,常见的配置项有:

  • timeout:设置DNS查询的超时时间
  • attempts:每个DNS服务器发送查询的最大尝试次数
  • ndots:控制域名查询的优先策略
  • cache:控制是否使用DNS缓存

3 容器中的/etc/resolv.conf配置

主机上的/etc/resolv.conf配置文件用于提供域名查询的配置,在容器中当然也存在该配置,而且它还是实现服务查询的关键。

当创建普通Pod时,容器的/etc/resolv.conf中的配置是:

nameserver 10.1.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

其中,nameserver配置的是kube-dns服务的IP地址,search配置的是集群的域名后缀,ndots设置为5,那么,这些配置从哪里来的呢?

kubelet的启动的配置文件--config=/var/lib/kubelet/config.yaml中有两个参数,分别用于指定域名服务的IP和集群域名:

clusterDNS:
- 10.1.0.10
clusterDomain: cluster.local

所以,kubelet在创建容器时才可以将这些配置传入进去。

容器中服务的FQDN格式为$SERVICE.$NAMESPACE.svc.$CLUSTER,其中,SERVICE、NAMESPACE、CLUSTER分别表示服务名、命名空间、集群域名,而search中域名的顺序也是从小范围到大:先从相同命名空间开始查询,最后再查询整个集群。

最后一个问题:为什么ndots要设置为5呢?

当然也跟服务的FQDN格式有关,可以看到如果用全的FQDN格式,其中就有4个点号,而且,根据服务名的规范,服务名中是不能包含点号的,因此,服务的FQDN中只有4个点号。如果查询的域名超过4个点号,也就是5个或者以上,要么是集群中的服务的FQDN格式加末尾的点号,要么就不是集群中的服务,此时都可以直接向域名服务器查询,且不需要拼接;如果查询的域名不超过4个点号,那么大概率是集群中的服务,就与search中配置的域名后缀拼接后查询。

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

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

相关文章

视频云计算的未来发展趋势:智能化、个性化与云端协同助力智慧城市安防监控

随着信息技术的飞速发展,云计算作为一种全新的服务模式,正在改变我们处理数据和信息的方式。而视频云计算技术,作为云计算领域的一个重要分支,以其独特的优势,正在逐步渗透到我们生活的各个领域。 一、视频云计算技术…

宝塔mysql在启动时报错“Failed to open log xxxxxx/mysql-bin.000003 not found,errno 2“

问题描述:mysql在启动时报错"Failed to open log xxxxxx/mysql-bin.000003 not found,errno 2",如下所示: 数据库:MySQL 5.6.50 场景描述:无缘无故,数据库无法启动,重启数据库报错.…

【折腾笔记】兰空图床使用Minio作为储存策略

前言 花了几个小时研究了一下在兰空图床中使用Minio作为存储策略,官方并没有给出太多关于minio的储存策略配置文档,我是经过反复尝试,然后根据错误日志的提示以及查阅兰空图床在GitHub上面的issues悟出来的配置方法。 因为我的兰空图床和Minio都是基于群晖的NAS设备DS423+…

干货 | AI 产品经理的成长之路(ChatBot 方向)

近几年,人工智能在投资圈、创业圈甚至是全社会都成了热词,那么提起人工智能,一定会想到机器学习、深度学习、自然语言处理等等名词,同时也会想到这些技术背后的人才—算法工程师,因此这两年算法工程师成为了人才市场上…

pdf拆分,pdf拆分在线使用,pdf拆分多个pdf

在数字化的时代,pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而,有时候我们可能需要对一个大的pdf文件进行拆分,以方便管理和分享。那么,如何将一个pdf文件拆分成多个pdf呢?本文将为你推荐一种好用的拆分…

精准提取,深度清洗——筛斗数据技术在大数据时代的重要性

精准提取,深度清洗——筛斗数据技术在大数据时代的重要性 在数据驱动的今天,数据已成为推动社会进步和企业发展的关键资源。然而,随着大数据的迅猛增长,如何从海量、复杂、无序的数据中精准提取有价值的信息,并通过深…

相关作业调度算法的完成时间、周转时间、平均周转时间等问题

☀️☀️☀️ 相关作业调度算法的完成时间、周转时间、平均周转时间等问题 ​ 周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔称为作业周转时间。 带权周转时间:即作业的周转时间T与系统为它提供服务的时间Ts之比&#xff…

兼容类的面试题

1. 如何关闭IOS键盘首字母自动大写 /* 添加autocapitalize即可 */ <input type"text" autocapitalizeoff> 2. 如何让Chrome支持小于12px的文字 /* Chrome浏览器默认文字大小是16px */ /* Chrome 中文版浏览器会默认设定页面的最小字号是12px&#xff0c;英文版…

生成独立的zedboard+ad9361起始项目

文件分享 链接&#xff1a;https://pan.baidu.com/s/17wB_9xVWjO7HhxNvmmZyuA 提取码&#xff1a;94zz 首先下载HDL和NO-OS项目 git clone --recursive https://github.com/analogdevicesinc/hdl git clone --recursive https://github.com/analogdevicesinc/no-OS下载…

CXL:拯救NVMe SSD缓存不足设计难题-2

LMB提出了基于CXL协议的内存扩展框架和内核模块。该方案利用CXL内存扩展器作为物理DRAM源&#xff0c;旨在提供一个统一的内存分配接口&#xff0c;使PCIe和CXL设备都能方便地访问扩展的内存资源。通过这个接口&#xff0c;NVMe驱动和CUDA的统一内存内核驱动可以直接高效地访问…

携程二面测开—中核

4.12 35min面试经验 自我介绍 在面试的开始&#xff0c;我简洁明了地进行了自我介绍&#xff0c;突出了我的教育背景、技能特长以及实习经历&#xff0c;为后续的面试内容打下了良好的基础。 实习的具体工作内容 在谈及实习经历时&#xff0c;我详细阐述了在实习期间所承担…

架构设计之RBAC基于角色的访问控制设计

概念 RBAC&#xff08;Role-Based Access Control&#xff0c;基于角色的访问控制&#xff09;是一种常见的权限管理模型&#xff0c;它通过定义角色来分配权限&#xff0c;然后将角色分配给用户。在Java中实现RBAC权限管理&#xff0c;你可以遵循以下步骤&#xff1a; 定义权…

深入浅出:npm常用命令详解和实践

npm 是 Node.js 的包管理器&#xff0c;用于管理 Node.js 应用的依赖关系和版本。 以下是一些常用的 npm 命令&#xff1a; npm init: 命令用于初始化一个新的 Node.js 项目。它会创建一个 package.json 文件&#xff0c;这个文件包含了项目的元数据和依赖信息。 npm initnpm…

盘点全球Top10大云计算平台最热门技能证书

小李哥花了一年半时间终于考下全球10大云的77张认证&#xff0c;今天盘点下各个云的热门证书&#xff0c;希望能帮到非CS专业转IT和刚刚入行云计算的小伙伴。 排名取自23年Yahoo云计算市场份额排名报告&#xff0c;我会从云平台、证书价格、证书热门程度做推荐。 1️⃣亚马逊云…

数据库基本管理

数据完整性&#xff1a; 实体完整性&#xff1a;每一行必须是唯一的实体域完整性&#xff1a;检查每一列是否有效引用完整性&#xff1a;确保所有表中数据的一致性&#xff0c;不允许引用不存在的值用户定义的完整性&#xff1a;制定特定的业务规则 主键&#xff1a; 用于唯…

第二届Godot游戏开发大赛来啦!

第二届Godot游戏开发大赛来啦&#xff01; 我们的开发大赛正式定名为Godot Hub Festival 2024&#xff0c;以后将按照年份命名。 另外&#xff0c;本次比赛将和openKylin开源社区的SIG组们合作举办(因此也可以叫Godot openKylin开发大赛)。比赛定于2024年7月1日正式开始&#x…

解释如单例、工厂、观察者等常见设计模式在Android开发中的应用

在Android开发中&#xff0c;设计模式扮演着至关重要的角色&#xff0c;它们帮助开发者构建高效、可维护且易于扩展的应用程序。接下来&#xff0c;我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面&#xff0c;详细解释单例模式、工厂模式和观察者模式这三种常见设…

TextGrad:即插即用 LLM 自动优化框架,提高各专业文本领域零样本准确率

题目&#xff1a;TextGrad: Automatic “Differentiation” via Text作者: Mert Yuksekgonul; Federico Bianchi; Joseph Boen; Sheng Liu; Zhi Huang; Carlos Guestrin; James ZouDOI: 10.48550/arXiv.2406.07496摘要: AI is undergoing a paradigm shift, with breakthroughs…

玩转springboot之springboot扩展SpringMVC

springboot扩展SpringMVC springboot为springmvc提供了很多自动配置&#xff0c;虽然适用于大部分应用&#xff0c;但是不一定适合你的应用 WebMvcConfigurer WebMvcConfigurer是用来全局定制化Spring boot的MVC特性&#xff0c;可以通过实现WebMvcConfigurer接口来配置应用的M…

ElementUI框架搭建及组件使用

前言: 当开始使用ElementUI框架来搭建网站或Web应用程序时&#xff0c;了解框架的基本结构和组件的使用是至关重要的。ElementUI是一个基于Vue.js的框架&#xff0c;提供了丰富的UI组件和工具&#xff0c;可以帮助开发人员快速构建现代化的用户界面。 在本文中&#xff0c;我…