一、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



















