video_ca/dns.md

18 KiB
Raw Permalink Blame History

DNS 管理 API 文档

概述

本文档描述了 DNS 管理系统的 API 接口,包括 DNS 服务器、DNS 区域和 DNS 记录的增删改查操作。

基础信息

  • 基础路径: /dns
  • 请求方法: POST
  • 认证: 需要在请求头中携带认证 token

常量定义

DNS 服务器状态

说明
0 已停止
1 运行中
2 错误

DNS 记录类型

类型 说明
1 A IPv4 地址记录
28 AAAA IPv6 地址记录
5 CNAME 别名记录
15 MX 邮件交换记录
2 NS 名称服务器记录
6 SOA 起始授权记录
16 TXT 文本记录
33 SRV 服务位置记录

DNS 服务器接口

1. 创建 DNS 服务器

接口路径: /dns/server/create

请求参数:

参数 类型 必填 说明
name string DNS 服务器名称
port uint 监听端口,默认 53
listen_ip string 监听 IP默认 0.0.0.0
upstream_dns string 上游 DNS 服务器,多个用逗号分隔
enable_recursion bool 是否启用递归查询
description string 描述

请求示例:

{
  "name": "我的 DNS 服务器",
  "port": 53,
  "listen_ip": "0.0.0.0",
  "upstream_dns": "8.8.8.8,8.8.4.4",
  "enable_recursion": true,
  "description": "个人 DNS 服务器"
}

响应示例:

{
  "code": 0,
  "message": "创建DNS服务器成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T00:00:00Z",
    "DeletedAt": null,
    "user_id": 1,
    "name": "我的 DNS 服务器",
    "port": 53,
    "listen_ip": "0.0.0.0",
    "upstream_dns": "8.8.8.8,8.8.4.4",
    "enable_recursion": true,
    "status": 0,
    "description": "个人 DNS 服务器"
  }
}

2. 获取 DNS 服务器

接口路径: /dns/server/get

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID0 表示获取全部
get_type int 获取类型0 获取自己的1 获取全部(管理员)

请求示例:

{
  "server_id": 1,
  "get_type": 0
}

响应示例:

{
  "code": 0,
  "message": "获取DNS服务器成功",
  "data": [
    {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "user_id": 1,
      "name": "我的 DNS 服务器",
      "port": 53,
      "listen_ip": "0.0.0.0",
      "upstream_dns": "8.8.8.8,8.8.4.4",
      "enable_recursion": true,
      "status": 0,
      "description": "个人 DNS 服务器"
    }
  ]
}

3. 更新 DNS 服务器

接口路径: /dns/server/update

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID
name string DNS 服务器名称
port uint 监听端口
listen_ip string 监听 IP
upstream_dns string 上游 DNS 服务器
enable_recursion bool 是否启用递归查询
status uint 状态0 停止1 运行中2 错误
description string 描述

请求示例:

{
  "server_id": 1,
  "name": "更新后的 DNS 服务器",
  "status": 1
}

响应示例:

{
  "code": 0,
  "message": "更新DNS服务器成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T01:00:00Z",
    "DeletedAt": null,
    "user_id": 1,
    "name": "更新后的 DNS 服务器",
    "port": 53,
    "listen_ip": "0.0.0.0",
    "upstream_dns": "8.8.8.8,8.8.4.4",
    "enable_recursion": true,
    "status": 1,
    "description": "个人 DNS 服务器"
  }
}

4. 删除 DNS 服务器

接口路径: /dns/server/delete

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID
del_type uint 删除类型0 删除单条1 删除所有

请求示例:

{
  "server_id": 1,
  "del_type": 0
}

响应示例:

{
  "code": 0,
  "message": "删除DNS服务器成功"
}

DNS 区域接口

5. 创建 DNS 区域

接口路径: /dns/zone/create

请求参数:

参数 类型 必填 说明
server_id uint 所属 DNS 服务器 ID
domain string 域名,如 example.com
soa_mname string SOA 记录的主域名服务器
soa_rname string SOA 记录的管理员邮箱
soa_serial uint SOA 记录的序列号,默认 1
soa_refresh uint SOA 记录的刷新时间(秒),默认 86400
soa_retry uint SOA 记录的重试时间(秒),默认 7200
soa_expire uint SOA 记录的过期时间(秒),默认 3600000
soa_minimum uint SOA 记录的最小 TTL默认 3600
ttl uint 默认 TTL默认 3600
description string 描述

请求示例:

{
  "server_id": 1,
  "domain": "example.com",
  "soa_mname": "ns1.example.com",
  "soa_rname": "admin.example.com",
  "description": "示例域名"
}

响应示例:

{
  "code": 0,
  "message": "创建DNS区域成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T00:00:00Z",
    "DeletedAt": null,
    "server_id": 1,
    "domain": "example.com",
    "soa_mname": "ns1.example.com",
    "soa_rname": "admin.example.com",
    "soa_serial": 1,
    "soa_refresh": 86400,
    "soa_retry": 7200,
    "soa_expire": 3600000,
    "soa_minimum": 3600,
    "ttl": 3600,
    "description": "示例域名"
  }
}

6. 获取 DNS 区域

接口路径: /dns/zone/get

请求参数:

参数 类型 必填 说明
zone_id uint Zone ID0 表示获取全部
server_id uint DNS 服务器 ID用于过滤
get_type int 获取类型0 获取自己的1 获取全部(管理员)

请求示例:

{
  "zone_id": 1,
  "get_type": 0
}

响应示例:

{
  "code": 0,
  "message": "获取DNS区域成功",
  "data": [
    {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "server_id": 1,
      "domain": "example.com",
      "soa_mname": "ns1.example.com",
      "soa_rname": "admin.example.com",
      "soa_serial": 1,
      "soa_refresh": 86400,
      "soa_retry": 7200,
      "soa_expire": 3600000,
      "soa_minimum": 3600,
      "ttl": 3600,
      "description": "示例域名"
    }
  ]
}

7. 更新 DNS 区域

接口路径: /dns/zone/update

请求参数:

参数 类型 必填 说明
zone_id uint Zone ID
domain string 域名
soa_mname string SOA 记录的主域名服务器
soa_rname string SOA 记录的管理员邮箱
soa_serial uint SOA 记录的序列号
soa_refresh uint SOA 记录的刷新时间(秒)
soa_retry uint SOA 记录的重试时间(秒)
soa_expire uint SOA 记录的过期时间(秒)
soa_minimum uint SOA 记录的最小 TTL
ttl uint 默认 TTL
description string 描述

请求示例:

{
  "zone_id": 1,
  "description": "更新后的描述"
}

响应示例:

{
  "code": 0,
  "message": "更新DNS区域成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T01:00:00Z",
    "DeletedAt": null,
    "server_id": 1,
    "domain": "example.com",
    "soa_mname": "ns1.example.com",
    "soa_rname": "admin.example.com",
    "soa_serial": 1,
    "soa_refresh": 86400,
    "soa_retry": 7200,
    "soa_expire": 3600000,
    "soa_minimum": 3600,
    "ttl": 3600,
    "description": "更新后的描述"
  }
}

8. 删除 DNS 区域

接口路径: /dns/zone/delete

请求参数:

参数 类型 必填 说明
zone_id uint Zone ID
del_type uint 删除类型0 删除单条1 删除所有

请求示例:

{
  "zone_id": 1,
  "del_type": 0
}

响应示例:

{
  "code": 0,
  "message": "删除DNS区域成功"
}

DNS 记录接口

9. 创建 DNS 记录

接口路径: /dns/record/create

请求参数:

参数 类型 必填 说明
zone_id uint 所属 Zone ID
name string 记录名称,如 www 或 @
type uint 记录类型1=A, 28=AAAA, 5=CNAME, 15=MX 等
value string 记录值
ttl uint TTL如果为 0 则使用 Zone 的默认 TTL
priority uint 优先级(用于 MX、SRV 等记录)
weight uint 权重(用于 SRV 记录)
port uint 端口(用于 SRV 记录)
target string 目标(用于 SRV 记录)

请求示例 - A 记录:

{
  "zone_id": 1,
  "name": "www",
  "type": 1,
  "value": "192.168.1.1",
  "ttl": 3600
}

请求示例 - CNAME 记录:

{
  "zone_id": 1,
  "name": "mail",
  "type": 5,
  "value": "mailserver.example.com",
  "ttl": 3600
}

请求示例 - MX 记录:

{
  "zone_id": 1,
  "name": "@",
  "type": 15,
  "value": "mx1.example.com",
  "ttl": 3600,
  "priority": 10
}

响应示例:

{
  "code": 0,
  "message": "创建DNS记录成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T00:00:00Z",
    "DeletedAt": null,
    "zone_id": 1,
    "name": "www",
    "type": 1,
    "value": "192.168.1.1",
    "ttl": 3600,
    "priority": 0,
    "weight": 0,
    "port": 0,
    "target": ""
  }
}

10. 获取 DNS 记录

接口路径: /dns/record/get

请求参数:

参数 类型 必填 说明
record_id uint 记录 ID0 表示获取全部
zone_id uint Zone ID用于过滤
get_type int 获取类型0 获取自己的1 获取全部(管理员)

请求示例:

{
  "record_id": 1,
  "get_type": 0
}

响应示例:

{
  "code": 0,
  "message": "获取DNS记录成功",
  "data": [
    {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "zone_id": 1,
      "name": "www",
      "type": 1,
      "value": "192.168.1.1",
      "ttl": 3600,
      "priority": 0,
      "weight": 0,
      "port": 0,
      "target": ""
    }
  ]
}

11. 更新 DNS 记录

接口路径: /dns/record/update

请求参数:

参数 类型 必填 说明
record_id uint 记录 ID
name string 记录名称
type uint 记录类型
value string 记录值
ttl uint TTL
priority uint 优先级
weight uint 权重
port uint 端口
target string 目标

请求示例:

{
  "record_id": 1,
  "value": "192.168.1.2"
}

响应示例:

{
  "code": 0,
  "message": "更新DNS记录成功",
  "data": {
    "ID": 1,
    "CreatedAt": "2024-01-01T00:00:00Z",
    "UpdatedAt": "2024-01-01T01:00:00Z",
    "DeletedAt": null,
    "zone_id": 1,
    "name": "www",
    "type": 1,
    "value": "192.168.1.2",
    "ttl": 3600,
    "priority": 0,
    "weight": 0,
    "port": 0,
    "target": ""
  }
}

12. 删除 DNS 记录

接口路径: /dns/record/delete

请求参数:

参数 类型 必填 说明
record_id uint 记录 ID
del_type uint 删除类型0 删除单条1 删除所有

请求示例:

{
  "record_id": 1,
  "del_type": 0
}

响应示例:

{
  "code": 0,
  "message": "删除DNS记录成功"
}

DNS 服务运行管理接口

13. 启动 DNS 服务器

接口路径: /dns/server/start

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID

请求示例:

{
  "server_id": 1
}

响应示例:

{
  "code": 0,
  "message": "启动DNS服务器成功",
  "data": {
    "server_id": 1,
    "config": {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "user_id": 1,
      "name": "我的 DNS 服务器",
      "port": 53,
      "listen_ip": "0.0.0.0",
      "upstream_dns": "8.8.8.8,8.8.4.4",
      "enable_recursion": true,
      "status": 1,
      "description": "个人 DNS 服务器"
    },
    "running": true
  }
}

14. 停止 DNS 服务器

接口路径: /dns/server/stop

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID

请求示例:

{
  "server_id": 1
}

响应示例:

{
  "code": 0,
  "message": "停止DNS服务器成功"
}

15. 重启 DNS 服务器

接口路径: /dns/server/restart

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID

请求示例:

{
  "server_id": 1
}

响应示例:

{
  "code": 0,
  "message": "重启DNS服务器成功",
  "data": {
    "server_id": 1,
    "config": {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "user_id": 1,
      "name": "我的 DNS 服务器",
      "port": 53,
      "listen_ip": "0.0.0.0",
      "upstream_dns": "8.8.8.8,8.8.4.4",
      "enable_recursion": true,
      "status": 1,
      "description": "个人 DNS 服务器"
    },
    "running": true
  }
}

16. 获取 DNS 服务器运行状态

接口路径: /dns/server/status

请求参数:

参数 类型 必填 说明
server_id uint DNS 服务器 ID

请求示例:

{
  "server_id": 1
}

响应示例:

{
  "code": 0,
  "message": "获取DNS服务器状态成功",
  "data": {
    "server_id": 1,
    "config": {
      "ID": 1,
      "CreatedAt": "2024-01-01T00:00:00Z",
      "UpdatedAt": "2024-01-01T00:00:00Z",
      "DeletedAt": null,
      "user_id": 1,
      "name": "我的 DNS 服务器",
      "port": 53,
      "listen_ip": "0.0.0.0",
      "upstream_dns": "8.8.8.8,8.8.4.4",
      "enable_recursion": true,
      "status": 1,
      "description": "个人 DNS 服务器"
    },
    "running": true
  }
}

数据模型

DNSServer

字段 类型 说明
ID uint 主键 ID
CreatedAt time.Time 创建时间
UpdatedAt time.Time 更新时间
DeletedAt *time.Time 删除时间
user_id uint 用户 ID
name string DNS 服务器名称
port uint 监听端口
listen_ip string 监听 IP
upstream_dns string 上游 DNS 服务器
enable_recursion bool 是否启用递归查询
status uint 状态0 停止1 运行中2 错误
description string 描述

DNSZone

字段 类型 说明
ID uint 主键 ID
CreatedAt time.Time 创建时间
UpdatedAt time.Time 更新时间
DeletedAt *time.Time 删除时间
server_id uint 所属 DNS 服务器 ID
domain string 域名
soa_mname string SOA 记录的主域名服务器
soa_rname string SOA 记录的管理员邮箱
soa_serial uint SOA 记录的序列号
soa_refresh uint SOA 记录的刷新时间(秒)
soa_retry uint SOA 记录的重试时间(秒)
soa_expire uint SOA 记录的过期时间(秒)
soa_minimum uint SOA 记录的最小 TTL
ttl uint 默认 TTL
description string 描述

DNSRecord

字段 类型 说明
ID uint 主键 ID
CreatedAt time.Time 创建时间
UpdatedAt time.Time 更新时间
DeletedAt *time.Time 删除时间
zone_id uint 所属 Zone ID
name string 记录名称
type uint 记录类型
value string 记录值
ttl uint TTL
priority uint 优先级
weight uint 权重
port uint 端口
target string 目标

DNSServiceInstance

字段 类型 说明
server_id uint DNS 服务器 ID
config DNSServer DNS 服务器配置
running bool 是否正在运行

错误码说明

错误码 说明
0 成功
1 参数错误
2 系统错误

功能特性

基础功能

  • 支持多 DNS 服务器实例管理
  • 每个 DNS 服务器可以管理多个域名区域Zone
  • 每个域名区域可以添加多条 DNS 记录
  • 支持常见 DNS 记录类型A、AAAA、CNAME、MX、NS、TXT、SRV、SOA
  • 完整的 SOA 记录配置

运行时管理

  • 支持 DNS 服务的启动、停止、重启操作
  • 同时支持 UDP 和 TCP 协议
  • 配置修改后自动重启运行中的服务
  • 实时获取服务运行状态
  • 支持递归查询,可配置上游 DNS 服务器

权限说明

  • 普通用户只能操作自己创建的 DNS 服务器、区域和记录
  • 管理员可以操作所有 DNS 服务器、区域和记录
  • 删除操作会级联删除相关的子资源(删除服务器会删除其下的区域,删除区域会删除其下的记录)

自动重启特性

当 DNS 服务器的配置端口、监听IP、上游DNS等被修改时如果服务正在运行系统会自动重启服务以应用新的配置。