本文目录导读:

我来详细介绍如何使用dnsmasq搭建本地DNS服务器。
安装dnsmasq
Ubuntu/Debian
sudo apt update sudo apt install dnsmasq
CentOS/RHEL
sudo yum install dnsmasq
macOS
brew install dnsmasq
基本配置
备份原配置文件
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
编辑配置文件
sudo vim /etc/dnsmasq.conf
核心配置示例
# 监听地址(监听本机所有网卡) interface=eth0 # 或指定监听地址 listen-address=0.0.0.0 # 绑定到指定接口 bind-interfaces # 设置域名服务器上游 server=8.8.8.8 server=114.114.114.114 # 设置域名解析缓存大小(单位:个) cache-size=1000 # 设置本地域名 local=/local/ # 本地域名解析 address=/mylocal.com/192.168.1.100 address=/dev.local/192.168.1.50 # DNS劫持(将所有.example.com指向本地) address=/example.com/127.0.0.1 # 设置路由模式(仅响应本地网络的查询) local-ttl=3600 # 日志记录 log-queries log-facility=/var/log/dnsmasq.log
高级配置
配置DHCP服务器(可选)
# 启用DHCP dhcp-range=192.168.1.100,192.168.1.200,12h dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases # 分配固定IP dhcp-host=00:11:22:33:44:55,192.168.1.99 dhcp-host=aa:bb:cc:dd:ee:ff,server1,192.168.1.88 # 设置网关和DNS dhcp-option=option:router,192.168.1.1 dhcp-option=option:dns-server,192.168.1.1
配置本地域名解析文件
创建自定义域名文件:
sudo vim /etc/dnsmasq.d/localdomain.conf
# 公司内部域名 address=/company.com/192.168.1.10 address=/dev.company.com/192.168.1.20 address=/test.company.com/192.168.1.30 # 开发环境 address=/mylocal.site/127.0.0.1
启动和管理服务
启动服务
# 启动dnsmasq sudo systemctl start dnsmasq # 设置开机自启 sudo systemctl enable dnsmasq
检查状态
# 查看服务状态 sudo systemctl status dnsmasq # 检查端口监听 sudo netstat -tulpn | grep 53 # 查看日志 sudo tail -f /var/log/dnsmasq.log
客户端配置
Linux客户端
修改 /etc/resolv.conf:
nameserver 192.168.1.x # 替换为dnsmasq服务器IP
或修改 /etc/systemd/resolved.conf:
[Resolve] DNS=192.168.1.x Domains=~.
Windows客户端
- 打开网络和共享中心
- 修改IPv4属性
- 设置首选DNS服务器为dnsmasq服务器IP
测试DNS解析
# 测试DNS解析 nslookup mylocal.com 192.168.1.x dig @192.168.1.x localhost host mylocal.com 192.168.1.x # 查看缓存统计 sudo killall -USR1 dnsmasq
常见问题解决
端口冲突
# 检查端口占用 sudo lsof -i :53 # 停止systemd-resolved sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved
配置错误
# 检查配置语法 dnsmasq --test # 调试模式 sudo dnsmasq -d
防火墙配置
# 允许DNS端口 sudo ufw allow 53/tcp sudo ufw allow 53/udp
重启服务
# 修改配置后重启 sudo systemctl restart dnsmasq
安全注意事项
- 限制访问:使用
local-service选项限制本地查询 - 防止DNS劫持:配置正确的上游DNS服务器
- 日志管理:定期清理和轮转日志文件
- 访问控制:使用
bogus-priv和stop-dns-rebind防止DNS重绑定攻击
监控和优化
性能监控
# 查看缓存命中率 sudo dnsmasq --statistics # 实时监控查询 sudo tcpdump -i any port 53
优化建议
- 调整缓存大小根据实际需求
- 配置合理的TTL值
- 使用多个上游DNS服务器
- 考虑使用DNS over HTTPS
这样就完成了dnsmasq本地DNS服务器的搭建和配置!
标签: 本地DNS
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。