当前位置: 首页 > article >正文

DNS解析流程入门篇

一、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.lryc.cn/news/2387720.html

相关文章:

  • spring4第2课-ioc控制反转-依赖注入,是为了解决耦合问题
  • 大模型系列22-MCP
  • 【监控】Prometheus+Grafana 构建可视化监控
  • vscode里几种程序调试配置
  • RAGFlow源码安装操作过程
  • Unity使用XCharts动态配置数据——折线图(LineChart)
  • 【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
  • DAY9 热力图和箱线图的绘制
  • 如何查看 GitLab 内置的 PostgreSQL 版本?
  • VR 技术与病毒分离鉴定:一场奇妙的邂逅​
  • 解释一下NGINX的反向代理和正向代理的区别?
  • 数学笔记一:标量、向量和矩阵基本概念辨析
  • vue3获取两个日期之间的所有时间
  • Python 实现简易版的文件管理(结合网络编程)
  • 元组可以比较大小吗?一次返回多个值?编程语言的元组?声明变量一定需要指定类型吗?
  • PXC集群
  • 线程安全问题的成因
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【3/3 适合小白,步骤详细!!!】
  • 字节跳动BAGEL-7B-MoT模型开源:多模态AI技术的新范式与行业涟漪
  • Ubuntu静态IP配置信息查看命令
  • unity实现wasd键控制汽车漫游
  • Python优雅执行SSH命令:10种方法+虚拟环境深度实践
  • Linux TCP与Socket与IO多路复用(Epoll)
  • LINUX安装运行jeelowcode后端项目(命令行)
  • 嵌入式高级工程师面试全解:从 malloc 到 kernel panic 的系统知识梳理
  • 机器学习第二十七讲:Kaggle → 参加机器学习界的奥林匹克
  • C++(初阶)(二十)——封装实现set和map
  • 【MySQL】06.内置函数
  • 企业微信内部网页开发流程笔记
  • 智慧在线判题OJ系统项目总体,包含功能开发思路,内部中间件,已经部分知识点