发布于 更新于
AI总结: 本文介绍了dnsmasq的安装、配置、常见功能及使用场景。dnsmasq是一个轻量级的DNS转发和DHCP服务器工具,适用于本地DNS解析和网络管理。用户可以在不同操作系统上安装dnsmasq,并通过配置文件进行灵活的设置,例如自定义域名解析、启用DHCP、缓存设置等。此外,提供了启动与测试服务的步骤以及常用参数的说明,最后还列出了典型的应用场景。
优化建议:
1. 在安装部分,可以添加对不同版本的Linux系统的兼容性说明。
2. 配置示例可以提供更多的注释,以帮助用户理解每个配置项的作用。
3. 在常见功能与场景中,增加一些实际应用的案例,以便用户更好地理解和应用。
4. 提供更详细的日志与调试部分的说明,帮助用户在遇到问题时进行排查。
5. 可以增添一些安全性建议,例如如何保护dnsmasq服务不被外部访问。
dnsmasq 是一个轻量级、灵活的 DNS 转发和 DHCP 服务器工具,常用于本地 DNS 解析、网络管理、代理 DNS 请求或自定义域名映射。以下是其核心功能和使用方法:
-
Ubuntu/Debian:
sudo apt update && sudo apt install dnsmasq
-
CentOS/RHEL:
sudo yum install epel-release && sudo yum install dnsmasq
通过 Homebrew 安装:
brew install dnsmasq
DNSMASQ 本身是 Linux 工具,但可通过 Windows Subsystem for Linux (WSL) 或替代工具(如 dnscrypt-proxy)实现类似功能。
默认配置文件路径:
-
Linux:
/etc/dnsmasq.conf
-
macOS:
/usr/local/etc/dnsmasq.conf
listen-address=127.0.0.1
log-queries
log-facility=/var/log/dnsmasq.log
# 设置上游 DNS(默认会使用系统配置)
server=8.8.8.8 # Google Public DNS
server=1.1.1.1 # Cloudflare DNS
# 自定义域名解析(静态映射)
address=/example.com/192.168.1.100
address=/api.example.com/192.168.1.101
address=/test.example.com/192.168.1.102
# 允许多 IP 映射(同一域名指向多个 IP)
address=/multi-ips.com/192.168.1.200,192.168.1.201
# 读取 hosts 文件(可叠加 hosts 配置)
addn-hosts=/path/to/custom-hosts
# 启用 DHCP(如果需要)
interface=eth0 # 绑定的网络接口
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,12h
# 缓存设置(加快重复查询)
cache-size=1000 # 缓存大小
-
需求:将
dev.local
解析到本地开发服务器192.168.1.50
。 -
配置:
address=/dev.local/192.168.1.50
-
测试:
nslookup dev.local # 应返回 192.168.1.50
-
需求:让
service.example.com
轮询解析到192.168.1.5
和192.168.1.6
。 -
配置:
address=/service.example.com/192.168.1.5,192.168.1.6
- 行为:DNSMASQ 会随机选择一个 IP 返回。
-
需求:将
.cn
域名解析到国内 DNS(如223.5.5.5
),其他域名用1.1.1.1
。 -
配置:
server=/cn/223.5.5.5 server=/#/1.1.1.1 # 默认服务器
- 需求:为局域网设备分配 IP 和 DNS。
-
配置:
interface=eth0 # 网络接口 dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,12h dhcp-option=option:dns-server,192.168.1.1 # 指定 DNS 服务器
-
Linux:
sudo systemctl restart dnsmasq
-
macOS(以命令行方式启动):
sudo dnsmasq -C /usr/local/etc/dnsmasq.conf
将本地设备的 DNS 配置为 dnsmasq 的 IP(通常是 127.0.0.1
或局域网 IP):
-
Windows:
- 进入网络设置 → 更改适配器选项 → 双击 DNS → 手动设置
127.0.0.1
。
- 进入网络设置 → 更改适配器选项 → 双击 DNS → 手动设置
-
Linux/macOS:
修改
/etc/resolv.conf
(或通过网络管理工具):nameserver 127.0.0.1
# 查看解析结果
nslookup example.com 127.0.0.1
# 或使用 dig
dig @127.0.0.1 example.com
参数 | 说明 |
---|---|
server |
配置上游 DNS 服务器(支持条件匹配,如 server=/domain.com/8.8.8.8 )。 |
address=/domain.com/1.2.3.4 |
将 domain.com 解析到指定 IP。 |
addn-hosts=/path/to/hosts |
读取额外的 hosts 文件(可叠加多个)。 |
no-resolv |
禁用 /etc/resolv.conf 中的默认 DNS 配置。 |
listen-address=127.0.0.1 |
指定监听的 IP 地址(默认仅本地)。 |
dhcp-range |
配置 DHCP 地址池(适用于局域网服务器)。 |
-
日志路径:默认记录在
/var/log/syslog
(Linux)或/var/log/dnsmasq.log
。 -
调试模式:启动时添加
-d
参数查看详细日志:sudo dnsmasq -d -C /etc/dnsmasq.conf
-
开发环境:模拟生产环境的域名解析(如
api.test
指向本地服务)。 - 局域网管理:提供 DHCP 和 DNS 服务,简化内网设备配置。
-
DNS 过滤:屏蔽广告或恶意域名(通过
address=/adserver.com/0.0.0.0
)。 - 跨平台测试:模拟不同 DNS 策略(如强制使用特定 DNS 或多 IP 轮询)。