DNS解析流程入门篇
一、DNS 解析流程
1.1 浏览器输入域名
当在浏览器中输入 www.baidu.com
时,操作系统会按照以下步骤进行 DNS 解析:
-
检查本地 hosts 文件 :操作系统先检查本地的
/etc/hosts
文件,查看是否存在域名与 IP 地址的对应关系。如果找到记录,则直接使用该记录进行解析,不再进行后续步骤。 -
查询本地 DNS 缓存 :如果 hosts 文件中没有对应的记录,操作系统会检查本地的 DNS 缓存,看是否有之前查询过的相关记录。如果有缓存记录且未过期,则直接使用缓存中的数据。
-
查询指定的 DNS 服务器 :如果 hosts 文件和本地 DNS 缓存中都没有找到对应的解析记录,操作系统会使用网络配置中指定的 DNS 服务器地址进行查询。常见的公共 DNS 服务器地址包括
114.114.114.114
、8.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