DNS解析流程入门篇

news2025/7/18 3:06:29

一、DNS 解析流程

1.1 浏览器输入域名

当在浏览器中输入 www.baidu.com 时,操作系统会按照以下步骤进行 DNS 解析:

  1. 检查本地 hosts 文件 :操作系统先检查本地的 /etc/hosts 文件,查看是否存在域名与 IP 地址的对应关系。如果找到记录,则直接使用该记录进行解析,不再进行后续步骤。

  2. 查询本地 DNS 缓存 :如果 hosts 文件中没有对应的记录,操作系统会检查本地的 DNS 缓存,看是否有之前查询过的相关记录。如果有缓存记录且未过期,则直接使用缓存中的数据。

  3. 查询指定的 DNS 服务器 :如果 hosts 文件和本地 DNS 缓存中都没有找到对应的解析记录,操作系统会使用网络配置中指定的 DNS 服务器地址进行查询。常见的公共 DNS 服务器地址包括 114.114.114.1148.8.8.8 等。DNS 服务器会查询 www.baidu.com 的 IP 地址记录,如果找到则返回给操作系统,否则表示该域名未注册或不存在。

二、DNS 服务器概述

2.1 DNS 服务器的作用

DNS 服务器用于将域名转换为对应的 IP 地址,方便用户通过域名访问互联网上的资源。

2.2 常见的 DNS 服务器软件

  • Bind :功能强大且广泛使用的 DNS 服务器软件,适用于各种规模的网络环境。

  • dnsmasq :小巧且易于配置,适合小型网络环境,提供 DNS 解析和 DHCP 服务功能。

三、dnsmasq 的安装与配置

3.1 安装 dnsmasq

在基于 YUM 的 Linux 系统中,可以使用以下命令安装 dnsmasq:

yum install dnsmasq -y

3.2 配置 dnsmasq

  • 主配置文件/etc/dnsmasq.conf 是 dnsmasq 的主配置文件。可以在此文件中进行基本的配置。

  • 自定义域名解析关系文件 :创建 /etc/dnsmasq.hosts 文件,用于定义自有的域名和 IP 地址对应关系。

比如:123.206.16.61 yuchao668.com 

  • 上游 DNS 服务器地址文件 :创建 /etc/resolv.dnsmasq.conf 文件,指定当 dnsmasq 在本地找不到解析记录时,所使用的上游 DNS 服务器地址。

比如:nameserver 119.29.29.29

            nameserver 223.5.5.5 

  • 修改主配置文件参数 :根据实际需求,修改 /etc/dnsmasq.conf 文件中的相关参数。以下是一些常用的参数示例:

    • resolv-file=/etc/resolv.dnsmasq.conf :指定上游 DNS 服务器地址文件的位置。

    • address=/baidu.com/123.206.16.61 :将 baidu.com 及其子域名解析到指定的 IP 地址 123.206.16.61

    • address=/taobao.com/123.206.16.61 :将 taobao.com 及其子域名解析到指定的 IP 地址 123.206.16.61

    • listen-address=123.206.16.61 :指定 dnsmasq 监听的 IP 地址。

    • addn-hosts=/etc/dnsmasq.hosts :指定自定义域名解析关系文件的位置。

    • log-queries :记录 DNS 查询日志,方便进行问题排查和监控。

    • conf-dir=/etc/dnsmasq.d :指定包含额外配置文件的目录。

    • conf-dir=/etc/dnsmasq.d,.bak :包含 /etc/dnsmasq.d 目录下所有文件,但排除以 .bak 结尾的文件。

    • conf-dir=/etc/dnsmasq.d/,*.conf :包含 /etc/dnsmasq.d 目录下所有以 .conf 结尾的文件。

3.3 启动 dnsmasq 服务

安装并配置完成后,使用以下命令启动 dnsmasq 服务:

systemctl start dnsmasq

3.4 修改本地 DNS 客户端配置

为了使本地系统使用自定义的 dnsmasq 服务器进行 DNS 解析,需要修改本地 DNS 客户端配置文件 /etc/resolv.conf,将其内容设置为指向 dnsmasq 服务监听的地址。例如:

nameserver 127.0.0.1

3.5 测试域名解析

可以通过以下命令测试域名解析是否成功:

nslookup www.baidu.com

或者使用 ping 命令进行简单测试:

ping www.baidu.com

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

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

相关文章

大模型系列22-MCP

大模型系列22-MCP 玩转 MCP 协议:用 Cline DeepSeek 接入天气服务什么是 MCP?环境准备:VScode Cline DeepSeek**配置 DeepSeek 模型:****配置 MCP 工具****uvx是什么?****安装 uv(会自动有 uvx 命令&…

【监控】Prometheus+Grafana 构建可视化监控

在云原生和微服务架构盛行的今天,监控系统已成为保障业务稳定性的核心基础设施。作为监控领域的标杆工具,Prometheus和Grafana凭借其高效的数据采集、灵活的可视化能力,成为运维和开发团队的“标配”。 一、Prometheus Prometheus诞生于2012…

RAGFlow源码安装操作过程

RAGFlow是一款基于深度文档理解构建的开源 RAG&#xff08;Retrieval-Augmented Generation&#xff09;引擎&#xff0c;可作为Dify的外部知识库使用[1]。本文主要介绍RAGFlow前端和后端等源码安装操作过程。 一.后端安装 特别注意&#xff1a;python ">3.12,<3…

Unity使用XCharts动态配置数据——折线图(LineChart)

XCharts官网地址&#xff1a;https://xcharts-team.github.io/ 本地上传资源&#xff1a;https://download.csdn.net/download/m0_64375864/90919669 效果图&#xff1a; 动态配置数据&#xff1a; public class Test3 : MonoBehaviour {public LineChart lineChart;public …

【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信类 学   号 2023112915 班   级 23L0505 学 生 杨昕彦 指 导 教 师 刘宏伟 计算机科学…

DAY9 热力图和箱线图的绘制

浙大疏锦行 学会了绘制两个图&#xff1a; 热力图&#xff1a;表示每个特征之间的影响&#xff0c;颜色越深数值越大表示这两个特征的关系越紧密 箱线图&#xff1a;表示每个特征的数据分布情况 箱体&#xff08;Box&#xff09;&#xff1a; 箱体的上下边界分别表示第一四分位…

解释一下NGINX的反向代理和正向代理的区别?

大家好&#xff0c;我是锋哥。今天分享关于【解释一下NGINX的反向代理和正向代理的区别?】面试题。希望对大家有帮助&#xff1b; 解释一下NGINX的反向代理和正向代理的区别? NGINX的反向代理和正向代理的区别主要体现在它们的功能和使用场景上。下面我会详细解释它们的定义…

数学笔记一:标量、向量和矩阵基本概念辨析

一、标量 标量&#xff08;Scalar&#xff09; 是一种仅用数值大小&#xff08;即 “量值”&#xff09;就能完全描述的物理量或数学对象&#xff0c;它不具有方向属性。 例如在实数领域的正数、负数。 在物理学领域的多少斤、多少公斤、水温多少度、气温多少度都是标量。 …

vue3获取两个日期之间的所有时间

1.获取两个日期之间所有年月日 如图所示&#xff1a; 代码如下&#xff1a; <template><div class"datePicker"><el-date-pickerv-model"value1"type"daterange"range-separator"至"start-placeholder"开始时间…

Python 实现简易版的文件管理(结合网络编程)

目录 一、Python 代码实现1. 服务器端2. 客户端 二、结果展示1. 查看当前路径下的内容 ls2. 切换当前路径 cd3. 查看当前路径 pwd4. 显示根目录下的树状结构 tree5. 在当前路径下创建目录 mkdir6. 删除当前路径下的文件或目录 rm7. 复制文件 mv8. 移动文件 cp9. 用户从当前路径…

PXC集群

PXC集群 一、环境介绍二、PXC安装1、关闭默认mysql模块2、安装yum源3、准备pxc安装环境4、安装pxc5、启动mysql&#xff0c;并更改root密码 三、搭建PXC集群1、编辑/etc/my.cnf 配置文件&#xff08;1&#xff09;pxc1节点配置文件&#xff08;2&#xff09;pxc2节点配置文件&a…

线程安全问题的成因

前言 大家晚上好呀~~ 今天学习了线程不安全问题的成因。线程安全问题是十分重要的知识点&#xff0c;我想把我所学的与大家分享一波&#xff0c;希望可以帮助到有需要的人&#xff0c;同时加深自己对于线程安全问题的理解。 分析过程如下 结语 今天心情还不错~ 要坚持持续…

零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【3/3 适合小白,步骤详细!!!】

远程连接服务器 请查阅之前的博客——零基础远程连接课题组Linux服务器&#xff0c;安装anaconda&#xff0c;配置python环境&#xff08;换源&#xff09;&#xff0c;在服务器上运行python代码【1/3 适合小白&#xff0c;步骤详细&#xff01;&#xff01;&#xff01;】&am…

unity实现wasd键控制汽车漫游

1.给汽车模型添加Box Collider和Rigidbody 2.创建脚本CarController并加载到汽车模型上 using UnityEngine; using UnityEngine.UI;public class CarController : MonoBehaviour

Python优雅执行SSH命令:10种方法+虚拟环境深度实践

引言&#xff1a;为什么选择Python操作SSH&#xff1f; SSH作为网络安全的基石&#xff0c;广泛应用于远程管理、文件传输和自动化任务。Python凭借其丰富的生态&#xff08;如paramiko、fabric&#xff09;和简洁语法&#xff0c;成为编写SSH脚本的首选语言。本文将系统梳理通…

嵌入式高级工程师面试全解:从 malloc 到 kernel panic 的系统知识梳理

在嵌入式和操作系统方向的技术面试中&#xff0c;常常会涉及一系列关于内存管理、虚拟化、系统权限、调试工具、外设通信等方面的问题。本文将基于一次真实的高级嵌入式工程师岗位面试问题&#xff0c;整理并详解所有相关技术点&#xff0c;作为一份结构清晰、知识全面的学习资…

C++(初阶)(二十)——封装实现set和map

二十&#xff0c;封装实现set和map 二十&#xff0c;封装实现set和map1&#xff0c;参数类型2&#xff0c;比较方式3&#xff0c;迭代器3.1&#xff0c;普通迭代器3.2&#xff0c;const迭代器3.3&#xff0c;set_map的迭代器实现 4&#xff0c;插入和查找5&#xff0c;特别的&a…

【MySQL】06.内置函数

1. 聚合函数 -- 统计表中的人数 -- 使用 * 做统计&#xff0c;不受 NULL 影响 mysql> select count(*) 人数 from exam_result; -------- | 人数 | -------- | 5 | -------- 1 row in set (0.01 sec)-- 使用表达式做统计 mysql> select count(name) 人数 from ex…

企业微信内部网页开发流程笔记

背景 基于ai实现企微侧边栏和工作台快速问答小助&#xff0c;需要h5开发&#xff0c;因为流程不清楚摸索半天&#xff0c;所以记录一下 一、网页授权登录 1. 配置步骤 1.1 设置可信域名 登录企业微信管理后台 进入"应用管理" > 选择开发的具体应用 > “网…

智慧在线判题OJ系统项目总体,包含功能开发思路,内部中间件,已经部分知识点

目录 回顾一下xml文件怎么写 哪个地方使用了哪个技术 MyBatis-Plus-oj的表结构设计&#xff0c; 管理员登录功能 Swagger Apifox​编辑 BCrypt 日志框架引入(slf4jlogback) nacos Swagger无法被所有微服务获取到修改的原因 身份认证三种方式: JWT(Json Web Json,一…