Linux下如何用dnsmasq做dns cache server配置

来源:图像处理网作者:高永康头衔:资深程序员
导读:本期聚焦于小伙伴创作的《Linux下如何用dnsmasq做dns cache server配置》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux下如何用dnsmasq做dns cache server配置》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中使用dnsmasq搭建DNS缓存服务器,能够显著降低重复域名解析的延迟,同时减少上游DNS服务器的请求压力,适合个人主机、小型局域网等场景使用。下面详细介绍完整的配置流程。

Linux下如何用dnsmasq做dns cache server配置

环境准备与软件安装

首先确认当前Linux系统的版本,本文示例基于Ubuntu 22.04和CentOS 7两种常见发行版,其他发行版操作逻辑类似。dnsmasq在主流Linux发行版的官方仓库中都有提供,直接通过包管理器安装即可。

Ubuntu/Debian系统安装

执行以下命令更新软件源并安装dnsmasq:

# 更新软件源
sudo apt update
# 安装dnsmasq
sudo apt install dnsmasq -y

CentOS/RHEL系统安装

执行以下命令安装dnsmasq:

# 安装dnsmasq
sudo yum install dnsmasq -y

核心配置文件修改

dnsmasq的默认配置文件路径为/etc/dnsmasq.conf,我们可以先备份默认配置,再修改自定义配置,避免误操作后无法恢复。

执行备份命令:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

接下来编辑配置文件,添加DNS缓存相关的核心配置,以下是推荐的基础配置内容:

# 指定监听的网卡,默认监听所有网卡,可指定具体网卡如eth0
# interface=eth0

# 不监听回环网卡,避免冲突
no-dhcp-interface=lo

# 指定上游DNS服务器,这里使用公共DNS作为示例,可替换为实际使用的上游DNS
server=114.114.114.114
server=8.8.8.8

# 开启DNS缓存功能
cache-size=1000

# 缓存有效期,单位秒,这里设置为1小时
dns-cache-ttl=3600

# 本地hosts解析优先级高于上游DNS
addn-hosts=/etc/hosts

# 日志记录路径,方便排查问题
log-facility=/var/log/dnsmasq.log

# 日志级别,设置为debug可查看详细解析日志
log-queries

配置项说明:cache-size表示缓存的最大DNS记录数,可根据实际需求调整;server参数指定上游DNS服务器,可配置多个实现冗余;dns-cache-ttl控制缓存记录的存活时间,避免缓存过期数据。

服务启动与开机自启

配置完成后,需要启动dnsmasq服务并设置开机自启,不同系统的服务管理命令略有区别。

Systemd系统(Ubuntu 16.04+、CentOS 7+)

执行以下命令:

# 启动dnsmasq服务
sudo systemctl start dnsmasq
# 设置开机自启
sudo systemctl enable dnsmasq
# 查看服务状态
sudo systemctl status dnsmasq

SysVinit系统(较旧版本CentOS 6等)

执行以下命令:

# 启动服务
sudo service dnsmasq start
# 设置开机自启
sudo chkconfig dnsmasq on
# 查看服务状态
sudo service dnsmasq status

功能验证

服务启动后,需要验证DNS缓存功能是否正常工作,可通过以下步骤测试。

查看服务监听端口

dnsmasq默认监听53端口,执行以下命令查看端口监听情况:

# 查看53端口监听状态
sudo netstat -tuln | grep 53
# 或者使用ss命令
sudo ss -tuln | grep 53

如果输出中存在0.0.0.0:53或指定网卡的53端口监听记录,说明服务启动成功。

测试DNS解析与缓存

使用dig命令测试解析,首先安装dig工具:

# Ubuntu/Debian安装dig
sudo apt install dnsutils -y
# CentOS/RHEL安装dig
sudo yum install bind-utils -y

执行解析测试,第一次解析会请求上游DNS:

# 指定DNS服务器为本地dnsmasq(127.0.0.1)
dig @127.0.0.1 www.baidu.com

查看返回结果中的Query time字段,记录第一次解析耗时。然后再次执行相同的解析命令,此时应该命中缓存,Query time会明显缩短,同时可以查看日志文件/var/log/dnsmasq.log,会看到缓存命中的相关记录。

常见问题排查

  • 服务启动失败:检查53端口是否被其他服务占用,比如systemd-resolved服务默认也会占用53端口,可先停止该服务再启动dnsmasq:sudo systemctl stop systemd-resolved
  • 解析失败:检查配置文件中的上游DNS是否可达,可通过ping 114.114.114.114测试上游DNS连通性
  • 缓存不生效:检查cache-size是否配置为大于0的数值,同时确认dns-cache-ttl配置正确

客户端配置

如果要将这台dnsmasq服务器作为局域网内的DNS缓存服务器,只需要将其他客户端的DNS服务器地址设置为这台Linux主机的IP地址即可。例如客户端是Linux系统,可修改/etc/resolv.conf文件,添加nameserver 192.168.0.1(替换为实际dnsmasq服务器的IP),如果是Windows客户端,在网络适配器属性中修改DNS服务器地址即可。

dnsmasqdns_cache_serverLinux配置DNS缓存修改时间:2026-07-01 09:30:17

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。