Loading... # dnsmasq DNS 记录与解析 # 一、概述 ## 1. DNS 记录类型深度解析 ### A. 什么是 DNS 记录 DNS 记录(Resource Record,RR)是 DNS 系统中存储域名相关信息的基本单位。每条记录包含以下信息: - **名称(Name)**:记录所属的域名 - **类型(Type)**:记录的类型(A、AAAA、CNAME、MX 等) - **类(Class)**:通常是 IN(Internet) - **TTL**:生存时间 - **数据(Data)**:记录的具体内容 ### B. dnsmasq 支持的记录类型 dnsmasq 支持以下 DNS 记录类型的配置: | 记录类型 | 用途 | 配置选项 | |---------|------|---------| | A | IPv4 地址映射 | --host-record, --address | | AAAA | IPv6 地址映射 | --host-record, --address | | CNAME | 域名别名 | --cname | | MX | 邮件服务器 | --mx-host, --mx-target | | SRV | 服务定位 | --srv-host | | TXT | 文本信息 | --txt-record | | PTR | 反向解析 | --ptr-record | | NS | 域名服务器 | (权威模式自动生成) | | NAPTR | 命名权限指针 | --naptr-record | | CAA | 证书颁发机构授权 | --caa-record | # 二、各类记录详细配置 ## 1. A 和 AAAA 记录 ### A. host-record 选项 --host-record 是最灵活的主机记录配置方式: ```bash # 基本语法 host-record=name[,name...],[IPv4],[IPv6],[TTL] # 单个主机 host-record=server1,192.168.1.10 # 多个名称指向同一地址 host-record=www,web,server,192.168.1.10 # 同时配置 IPv4 和 IPv6 host-record=server1,192.168.1.10,2001:db8::10 # 指定 TTL host-record=server1,192.168.1.10,3600 # 完整示例 host-record=laptop,laptop.local.lan,192.168.1.100,fd00::100 ``` ### B. address 选项 --address 选项主要用于域名重定向: ```bash # 基本语法 address=/domain/ipaddr # 广告拦截 address=/ad.example.com/0.0.0.0 # 服务重定向 address=/api.old.com/192.168.1.50 # 通配符重定向 address=/.internal.com/192.168.1.1 ``` ## 2. CNAME 记录 ### A. 基本配置 ```bash # 基本语法 cname=cname[,cname...],target[,TTL] # 单个别名 cname=www,server1 # 多个别名 cname=www,web,server1 # 指定 TTL cname=api,v2.api,backend.example.com,300 # 通配符别名 cname=*.example.com,default.example.com ``` ### B. CNAME 链 dnsmasq 支持多级 CNAME: ```bash # 配置示例 cname=blog,www cname=www,server1 host-record=server1,192.168.1.10 # 解析链:blog -> www -> server1 -> 192.168.1.10 ``` ## 3. MX 记录 ### A. 邮件服务器配置 ```bash # 指定邮件服务器 mx-host=mail.example.com,mail.example.com,10 # 使用 mx-target 设置默认目标 mx-target=mailserver.example.com mx-host=example.com # 多个 MX 记录(优先级不同) mx-host=mail1.example.com,mail1.example.com,10 mx-host=mail2.example.com,mail2.example.com,20 ``` ### B. MX 记录详解 ```mermaid graph LR A[邮件发送者] -->|查询 MX| B[DNS 服务器] B -->|返回 MX 记录| C[邮件服务器列表] C --> D[MX 10: mail1] C --> E[MX 20: mail2] D -->|尝试连接| F[投递邮件] E -->|备用| F ```  ## 4. SRV 记录 ### A. 服务定位配置 ```bash # 基本语法 srv-host=_service._proto[.domain],[target][,port][,priority][,weight] # LDAP 服务器 srv-host=_ldap._tcp.example.com,ldap.example.com,389,10,100 # 多个服务实例(负载均衡) srv-host=_http._tcp.example.com,web1.example.com,8080,10,60 srv-host=_http._tcp.example.com,web2.example.com,8080,10,40 ``` ## 5. TXT 记录 ### A. 文本信息配置 ```bash # SPF 记录 txt-record=example.com,"v=spf1 mx a ip4:192.168.1.0/24 -all" # DKIM 记录 txt-record=default._domainkey.example.com,"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..." # 验证记录 txt-record=_acme-challenge.example.com,"abc123def456" ``` ## 6. PTR 记录 ### A. 反向解析配置 ```bash # 基本语法 ptr-record=name[,target] # 手动 PTR 记录 ptr-record=10.1.168.192.in-addr.arpa,server1.example.com ``` ### B. DHCP 自动 PTR dnsmasq 会自动为 DHCP 分配的地址创建 PTR 记录: ```bash # 启用 DHCP dhcp-range=192.168.1.100,192.168.1.200,12h # 客户端获取 192.168.1.100 # 自动创建 PTR: 100.1.168.192.in-addr.arpa -> hostname ``` # 三、权威 DNS 配置 ## 1. auth-zone 选项 ```bash # 基本语法 auth-zone=domain[,subnet...] # 配置权威区域 auth-zone=example.com,192.168.1.0/24 # 指定接口 auth-zone=example.com,192.168.1.0/24,eth0 # 排除子网 auth-zone=example.com,192.168.1.0/24,exclude:192.168.1.100/32 ``` ## 2. 权威记录配置 ```bash # 完整权威配置示例 auth-zone=internal.lan,192.168.100.0/24 host-record=server.internal.lan,192.168.100.10 mx-host=internal.lan,mail.internal.lan,10 txt-record=internal.lan,"v=spf1 mx -all" ``` # 四、实战案例 ## 1. 内网 DNS 完整配置 ```bash # 完整内网 DNS 配置 interface=eth0 domain=internal.lan expand-hosts # A/AAAA 记录 host-record=server1,192.168.1.10 host-record=server2,192.168.1.11 host-record=printer,192.168.1.20 # CNAME 记录 cname=www,server1 cname=api,server2 # MX 记录 mx-host=internal.lan,mail.internal.lan,10 # TXT 记录 txt-record=internal.lan,"v=spf1 mx -all" ``` ## 2. 广告拦截与家长控制 ```bash # 广告域名列表 address=/ad.doubleclick.net/0.0.0.0 address=/ads.google.com/0.0.0.0 address=/tracker.analytics.com/0.0.0.0 # 家长控制 - 拦截不良网站 address=/bad-site.com/127.0.0.1 address=/adult-site.com/0.0.0.0 # 重定向儿童网站 cname=/kids.google.com/safe-kids.example.com ``` *** **标签**:dnsmasq、DNS、网络技术 最后修改:2026 年 01 月 30 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏