解析记录管理
解析记录(DNS Records)是 DNS 系统的核心,定义了域名与 IP 地址或其他资源的映射关系。
支持的记录类型
DNS-Go 支持多种标准 DNS 记录类型:
A 记录(IPv4 地址)
将域名映射到 IPv4 地址。
示例:
www.example.local A 192.168.1.100
mail.example.local A 192.168.1.101用途:
- 网站服务器指向
- 应用服务器指向
- 负载均衡(多 A 记录)
AAAA 记录(IPv6 地址)
将域名映射到 IPv6 地址。
示例:
www.example.local AAAA 2001:db8::1CNAME 记录(别名)
将域名指向另一个域名(规范化名称)。
示例:
blog.example.local CNAME www.example.local注意:
- CNAME 记录不能与同名的其他记录共存
- CNAME 目标必须是域名,不能是 IP 地址
- MX、NS 等记录不能指向 CNAME
MX 记录(邮件交换)
指定域名的邮件服务器。
示例:
example.local MX 10 mail.example.local
example.local MX 20 backup.example.local参数说明:
- 优先级:数值越小优先级越高
- 目标:邮件服务器域名
TXT 记录(文本)
存储任意文本信息,常用于:
- SPF(发件人策略框架)
- DKIM(域名密钥识别邮件)
- DMARC(邮件认证报告)
- 域名验证
示例:
example.local TXT "v=spf1 include:_spf.example.com ~all"NS 记录(名称服务器)
指定域名的权威 DNS 服务器。
示例:
example.local NS ns1.example.local
example.local NS ns2.example.localPTR 记录(反向解析)
实现 IP 地址到域名的反向映射。
示例:
100.1.168.192.in-addr.arpa PTR www.example.localSRV 记录(服务定位)
指定服务的服务器位置和端口。
示例:
_sip._tcp.example.local SRV 10 5 5060 sipserver.example.local参数说明:
- 优先级:数值越小优先级越高
- 权重:相同优先级时的选择比例
- 端口:服务端口
- 目标:服务器域名
CAA 记录(证书颁发机构授权)
指定哪些证书颁发机构可以为域名签发证书。
示例:
example.local CAA 0 issue "letsencrypt.org"
example.local CAA 0 issuewild ";"记录管理操作
创建解析记录
- 进入「域名管理」→「域名列表」
- 点击域名名称进入详情页
- 选择「解析记录」标签
- 点击「新增记录」按钮
- 填写记录信息:
| 字段 | 说明 | 示例 |
|---|---|---|
| 主机记录 | 子域名或 @(根域名) | www、mail、@ |
| 记录类型 | A、AAAA、CNAME、MX 等 | A |
| 记录值 | 对应的值 | 192.168.1.100 |
| TTL | 缓存时间(秒) | 300 |
| 状态 | 启用/禁用 | 启用 |
- 点击「确定」保存
编辑记录
- 在解析记录列表中找到要编辑的记录
- 点击「编辑」按钮
- 修改记录信息
- 点击「保存」
删除记录
- 在解析记录列表中找到要删除的记录
- 点击「删除」按钮
- 确认删除操作
批量操作
批量导入
支持从 CSV/Excel 文件批量导入记录:
准备 CSV 文件,格式如下:
csvname,type,value,ttl,status www,A,192.168.1.100,300,enabled mail,A,192.168.1.101,300,enabled blog,CNAME,www,300,enabled进入域名详情页的「解析记录」标签
点击「批量导入」按钮
选择文件并上传
预览并确认导入
批量导出
- 选择要导出的记录(可多选)
- 点击「批量导出」按钮
- 选择导出格式(CSV/Excel)
- 下载文件
主机记录格式
常用主机记录
| 主机记录 | 说明 | 完整域名 |
|---|---|---|
@ | 根域名 | example.local |
www | 万维网 | www.example.local |
* | 泛解析 | 匹配所有子域名 |
mail | 邮件服务器 | mail.example.local |
ftp | FTP 服务器 | ftp.example.local |
api | API 服务 | api.example.local |
多级子域名
支持多级子域名:
www.blog.example.local A 192.168.1.100
dept.team.corp.example.local A 192.168.1.101TTL 设置建议
TTL(Time To Live)决定 DNS 记录在缓存中的存活时间。
| 场景 | 建议 TTL | 说明 |
|---|---|---|
| 生产环境 | 3600-86400 | 减少 DNS 查询频率 |
| 开发测试 | 60-300 | 快速生效变更 |
| 负载均衡 | 60-300 | 支持快速切换 |
| 动态 IP | 60-600 | 适应 IP 变化 |
记录冲突规则
某些记录类型之间存在冲突:
| 冲突情况 | 说明 |
|---|---|
| CNAME 与其他记录 | 同一主机记录不能同时存在 CNAME 和其他类型 |
| 根域名 CNAME | 不建议在根域名(@)使用 CNAME |
| 重复的 A 记录 | 允许(用于负载均衡) |
| 重复的 MX 记录 | 允许(需要不同优先级) |
API 接口
获取记录列表
bash
GET /api/DomainRecord/list?domain_id=1&page=1&pageSize=20响应示例:
json
{
"code": 200,
"data": {
"list": [
{
"id": 1,
"domain_id": 1,
"name": "www",
"type": "A",
"value": "192.168.1.100",
"ttl": 300,
"status": "enabled",
"created_at": "2025-01-15T10:30:00Z"
}
],
"total": 10
}
}创建记录
bash
POST /api/DomainRecord/create
Content-Type: application/json
{
"domain_id": 1,
"name": "www",
"type": "A",
"value": "192.168.1.100",
"ttl": 300,
"status": "enabled"
}更新记录
bash
PUT /api/DomainRecord/update/:id
Content-Type: application/json
{
"name": "www",
"type": "A",
"value": "192.168.1.101",
"ttl": 300,
"status": "enabled"
}删除记录
bash
DELETE /api/DomainRecord/delete/:id最佳实践
记录规划
建议按用途规划记录命名:
# Web 服务
www → 主网站
blog → 博客
shop → 商城
# 基础设施
ns1, ns2 → DNS 服务器
mail → 邮件服务器
ftp → FTP 服务器
# 应用服务
api → API 网关
app → 应用服务器
cdn → 静态资源高可用配置
使用多条 A 记录实现负载均衡:
www A 192.168.1.100
www A 192.168.1.101
www A 192.168.1.102邮件服务器配置
完整的邮件服务配置:
# MX 记录
@ MX 10 mail.example.local
@ MX 20 mail-backup.example.local
# A 记录
mail A 192.168.1.100
# SPF 记录
@ TXT "v=spf1 mx a:mail.example.local ~all"常见问题
Q: 记录修改后多久生效?
生效时间取决于 TTL 设置:
- 如果 TTL 为 300 秒,最多等待 5 分钟
- 可通过
dig命令查看当前 TTL:bashdig @localhost www.example.local
Q: 支持 DNSSEC 吗?
DNSSEC 功能正在开发中,将在后续版本提供。
Q: 如何配置泛解析?
使用 * 作为主机记录:
* A 192.168.1.100这样 anything.example.local 都会解析到该 IP。
Q: CNAME 和 A 记录哪个更好?
| 场景 | 推荐 | 原因 |
|---|---|---|
| 指向固定 IP | A 记录 | 查询更快,无额外跳转 |
| 指向其他域名 | CNAME | IP 变化时自动跟随 |
| CDN 场景 | CNAME | 便于 CDN 提供商管理 |