发布于 更新于
AI总结: dnsmasq 是一个轻量级的 DNS 转发和 DHCP 服务器工具,适用于本地 DNS 解析和网络管理。以下是其主要功能和使用方法:
1. **安装**:
- 在 Ubuntu/Debian 上使用命令 `sudo apt update && sudo apt install dnsmasq`。
- 在 CentOS/RHEL 上使用 `sudo yum install epel-release && sudo yum install dnsmasq`。
- 在 macOS 上通过 Homebrew 安装:`brew install dnsmasq`。
- Windows 用户可通过 WSL 或其他工具实现类似功能。
2. **配置文件**:
- 默认路径:Linux 为 `/etc/dnsmasq.conf`,macOS 为 `/usr/local/etc/dnsmasq.conf`。
- 基础配置示例包括设置监听地址、上游 DNS、静态映射、自定义 hosts 文件、启用 DHCP 和缓存设置。
3. **常见功能与场景**:
- 自定义域名解析:如将 `dev.local` 解析到 `192.168.1.50`。
- 多 IP 负载均衡:如 `service.example.com` 轮询解析到多个 IP。
- 代理 DNS 请求:根据域名将请求转发到不同的 DNS 服务器。
- 启用 DHCP,为局域网设备分配 IP。
4. **启动与测试**:
- 启动服务:Linux 使用 `sudo systemctl restart dnsmasq`,macOS 使用 `sudo dnsmasq -C /usr/local/etc/dnsmasq.conf`。
- 设置 DNS 客户端为 dnsmasq 的 IP(通常是 `127.0.0.1`)。
- 测试 DNS 解析可使用 `nslookup` 或 `dig` 命令。
5. **常用参数说明**:
- `server`:配置上游 DNS 服务器。
- `address`:将域名解析到指定 IP。
- `addn-hosts`:读取额外的 hosts 文件。
- `no-resolv`:禁用默认 DNS 配置。
- `dhcp-range`:配置 DHCP 地址池。
6. **日志与调试**:
- 日志默认记录在 `/var/log/syslog` 或 `/var/log/dnsmasq.log`,可通过 `-d` 参数启动调试模式。
7. **典型应用场景**:
- 开发环境的域名解析。
- 局域网 DHCP 和 DNS 服务。
- DNS 过滤广告或恶意域名。
- 跨平台测试不同 DNS 策略。
建议在内容中增加具体的应用示例和配置细节,以提升实用性和可操作性。
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 轮询)。