FEATURES.md 8.1 KB

📋 功能说明文档

✅ 已实现功能

1. DHCP 服务配置

基础网络配置

  • ✅ 启用/禁用 DHCP 服务
  • ✅ 网络接口设置(eth0, ens18 等)
  • ✅ 网段地址配置(如 192.168.1.0)
  • ✅ 子网掩码配置(如 255.255.255.0)
  • ✅ 网关地址配置(如 192.168.1.1)
  • ✅ 域名配置(如 local)

IP 地址池管理

  • ✅ 起始 IP 配置(如 192.168.1.100)
  • ✅ 结束 IP 配置(如 192.168.1.200)
  • ✅ 租约时间配置(秒,默认 86400)
  • ✅ 排除 IP 列表(不参与分配的 IP)

DHCP 选项

  • ✅ DNS 服务器列表(可配置多个)
  • ✅ NTP 服务器列表
  • ✅ 广播地址配置

静态 IP 绑定

  • ✅ MAC 地址绑定
  • ✅ 固定 IP 分配
  • ✅ 主机名设置
  • ✅ 描述信息
  • ✅ 启用/禁用绑定

2. DNS 服务配置

基础配置

  • ✅ 启用/禁用 DNS 服务
  • ✅ 监听地址配置(0.0.0.0 或指定 IP)
  • ✅ 监听端口配置(默认 53)
  • ✅ 递归查询开关

上游 DNS

  • ✅ 上游 DNS 服务器列表
  • ✅ 自动故障转移
  • ✅ 支持多个上游 DNS

DNS 区域 (Zone) 管理

  • ✅ 区域名称配置(如 example.com)
  • ✅ 区域类型(master, slave, forward)
  • ✅ 区域记录管理

DNS 记录管理

  • ✅ A 记录(域名 → IPv4)
  • ✅ CNAME 记录(别名)
  • ✅ MX 记录(邮件交换)
  • ✅ TXT 记录(文本记录)
  • ✅ TTL 配置(缓存时间)
  • ✅ 启用/禁用记录

DNS 缓存

  • ✅ 查询缓存
  • ✅ 缓存大小配置
  • ✅ 缓存 TTL 配置
  • ✅ 自动清理过期缓存

DNS 日志

  • ✅ 查询日志记录
  • ✅ 客户端 IP 记录
  • ✅ 查询类型记录
  • ✅ 响应状态记录
  • ✅ 日志查询功能

3. Web 管理界面

仪表盘

  • ✅ 实时统计
    • 活跃租约数量
    • 静态绑定数量
    • DNS 记录数量
    • 在线设备数量
  • ✅ 系统状态
    • DHCP 服务状态
    • DNS 服务状态
    • Web 服务状态

DHCP 配置页面

  • ✅ 基础配置表单
  • ✅ IP 地址池配置
  • ✅ DNS 服务器配置
  • ✅ 排除 IP 列表配置
  • ✅ 静态绑定管理(列表、新增、删除)

DNS 配置页面

  • ✅ 基础配置表单
  • ✅ 上游 DNS 配置
  • ✅ DNS 区域管理(列表、新增、删除)
  • ✅ DNS 记录管理(列表、新增、删除)
  • ✅ 查询日志查看

系统设置

  • ✅ Web 服务配置(监听地址、端口)
  • ✅ 配置导出功能
  • ✅ 配置导入功能
  • ✅ 服务重启功能
  • ✅ 系统信息显示

4. API 接口

DHCP API

  • GET /api/dhcp/config - 获取 DHCP 配置
  • PUT /api/dhcp/config - 更新 DHCP 配置
  • GET /api/dhcp/leases - 获取租约列表
  • GET /api/dhcp/bindings - 获取静态绑定
  • POST /api/dhcp/bindings - 创建静态绑定
  • DELETE /api/dhcp/bindings/:id - 删除静态绑定

DNS API

  • GET /api/dns/config - 获取 DNS 配置
  • PUT /api/dns/config - 更新 DNS 配置
  • GET /api/dns/records - 获取 DNS 记录
  • POST /api/dns/records - 创建 DNS 记录
  • DELETE /api/dns/records/:id - 删除 DNS 记录
  • GET /api/dns/zones - 获取 DNS 区域
  • POST /api/dns/zones - 创建 DNS 区域
  • DELETE /api/dns/zones/:id - 删除 DNS 区域
  • GET /api/dns/logs - 获取 DNS 日志

系统 API

  • GET /api/config - 获取完整配置
  • PUT /api/config - 更新完整配置
  • GET /api/config/export - 导出配置
  • POST /api/config/import - 导入配置
  • POST /api/service/restart - 重启服务

📋 配置示例

DHCP 配置示例

{
  "enabled": true,
  "interface": "eth0",
  "network": "192.168.1.0",
  "netmask": "255.255.255.0",
  "gateway": "192.168.1.1",
  "domain_name": "local",
  "dns_servers": ["192.168.1.1", "114.114.114.114", "8.8.8.8"],
  "ntp_servers": ["ntp.aliyun.com"],
  "broadcast_address": "192.168.1.255",
  "lease_time": 86400,
  "ip_pool_start": "192.168.1.100",
  "ip_pool_end": "192.168.1.200",
  "excluded_ips": ["192.168.1.1", "192.168.1.2", "192.168.1.3"],
  "static_bindings": [
    {
      "mac": "00:11:22:33:44:55",
      "ip": "192.168.1.10",
      "hostname": "nas",
      "description": "家庭 NAS"
    }
  ]
}

DNS 配置示例

{
  "enabled": true,
  "listen_addr": "0.0.0.0",
  "listen_port": 53,
  "recursion": true,
  "upstream": ["8.8.8.8", "1.1.1.1", "114.114.114.114"],
  "cache_size": 1000,
  "cache_ttl": 300,
  "zones": [
    {
      "name": "local",
      "type": "master",
      "records": [
        {
          "name": "nas.local",
          "type": "A",
          "value": "192.168.1.10",
          "ttl": 300
        },
        {
          "name": "www.local",
          "type": "CNAME",
          "value": "nas.local",
          "ttl": 300
        }
      ]
    }
  ],
  "forward_zones": [
    {
      "name": ".",
      "upstream": ["8.8.8.8", "1.1.1.1"]
    }
  ],
  "allow_query": ["any"]
}

🎯 使用场景

场景 1:家庭网络管理

配置步骤:

  1. 设置 DHCP 网段

    • 网络:192.168.1.0
    • 掩码:255.255.255.0
    • 网关:192.168.1.1
    • IP 池:192.168.1.100 - 192.168.1.200
  2. 配置 DNS

    • 上游 DNS:114.114.114.114, 8.8.8.8
    • 本地域名:local
  3. 添加静态绑定

    • NAS:192.168.1.10
    • 打印机:192.168.1.20
    • 路由器:192.168.1.1
  4. 添加 DNS 记录

    • nas.local → 192.168.1.10
    • printer.local → 192.168.1.20

场景 2:小型企业网络

配置步骤:

  1. 多网段 DHCP

    • 办公网:192.168.10.0/24
    • 访客网:192.168.20.0/24
    • 服务器网:192.168.1.0/24
  2. 企业 DNS

    • 内部域名:company.local
    • 外部转发:8.8.8.8
  3. 服务器记录

    • oa.company.local → OA 系统 IP
    • file.company.local → 文件服务器 IP
    • mail.company.local → 邮件服务器 IP
  4. 邮件交换记录

    • MX 记录指向邮件服务器

场景 3:开发测试环境

配置步骤:

  1. 隔离测试网络

    • 测试网段:10.0.0.0/24
    • 独立 DNS 区域:test.local
  2. 动态 DNS

    • 开发服务器自动注册
    • 短 TTL(60 秒)快速更新
  3. 服务发现

    • api.test.local → API 服务
    • db.test.local → 数据库
    • cache.test.local → 缓存服务

🔧 高级功能

1. 配置备份与恢复

导出配置:

curl -X GET http://localhost:8080/api/config/export \
  -H "X-Session-ID: xxx" \
  -o backup.json

导入配置:

curl -X POST http://localhost:8080/api/config/import \
  -H "X-Session-ID: xxx" \
  -F "config=@backup.json"

2. 批量操作

批量添加 DNS 记录:

{
  "records": [
    {"name": "srv1.local", "type": "A", "value": "192.168.1.101"},
    {"name": "srv2.local", "type": "A", "value": "192.168.1.102"},
    {"name": "srv3.local", "type": "A", "value": "192.168.1.103"}
  ]
}

3. 自动化集成

通过 API 自动更新 DNS:

import requests

# 添加开发服务器 DNS 记录
requests.post('http://localhost:8080/api/dns/records',
  headers={'X-Session-ID': 'xxx'},
  json={
    'name': 'dev.local',
    'type': 'A',
    'value': '192.168.1.50',
    'ttl': 60
  }
)

📊 监控与日志

DHCP 监控

  • 地址池使用率
  • 活跃租约数量
  • 静态绑定数量
  • 租约到期时间

DNS 监控

  • 查询量统计
  • 缓存命中率
  • 上游 DNS 响应时间
  • 查询类型分布

日志查询

  • 按时间范围查询
  • 按客户端 IP 过滤
  • 按查询类型过滤
  • 按响应状态过滤

🔐 安全建议

1. 访问控制

  • 修改默认密码
  • 限制 Web 界面访问 IP
  • 启用 HTTPS

2. DHCP 安全

  • 启用 DHCP Snooping
  • 限制 MAC 地址数量
  • 监控异常租约

3. DNS 安全

  • 限制递归查询范围
  • 启用 DNSSEC 验证
  • 监控异常查询

📝 待实现功能

短期(1-2 周)

  • 完整 DHCP 协议实现
  • DNS 区域传输
  • 配置验证
  • 批量导入导出

中期(1-2 月)

  • 多租户支持
  • 监控告警
  • 统计图表
  • API Token 认证

长期(3 月+)

  • IPv6 支持
  • DDNS 支持
  • 集群部署
  • Prometheus 集成

最后更新: 2026-04-23
版本: v0.2.0