8ad4c3576d
- Fixed verifyAssignment being too strict for new clients - Fixed parseRequestedIP string conversion bug - Fixed response sent to 0.0.0.0 instead of broadcast address - Added SO_BROADCAST support for UDP socket - Fixed session persistence after page refresh (localStorage) - Added in-memory session store for auth middleware - Added config reloader so DHCP server picks up web UI changes dynamically
8.1 KiB
8.1 KiB
📋 功能说明文档
✅ 已实现功能
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:家庭网络管理
配置步骤:
-
设置 DHCP 网段
- 网络:192.168.1.0
- 掩码:255.255.255.0
- 网关:192.168.1.1
- IP 池:192.168.1.100 - 192.168.1.200
-
配置 DNS
- 上游 DNS:114.114.114.114, 8.8.8.8
- 本地域名:local
-
添加静态绑定
- NAS:192.168.1.10
- 打印机:192.168.1.20
- 路由器:192.168.1.1
-
添加 DNS 记录
- nas.local → 192.168.1.10
- printer.local → 192.168.1.20
场景 2:小型企业网络
配置步骤:
-
多网段 DHCP
- 办公网:192.168.10.0/24
- 访客网:192.168.20.0/24
- 服务器网:192.168.1.0/24
-
企业 DNS
- 内部域名:company.local
- 外部转发:8.8.8.8
-
服务器记录
- oa.company.local → OA 系统 IP
- file.company.local → 文件服务器 IP
- mail.company.local → 邮件服务器 IP
-
邮件交换记录
- MX 记录指向邮件服务器
场景 3:开发测试环境
配置步骤:
-
隔离测试网络
- 测试网段:10.0.0.0/24
- 独立 DNS 区域:test.local
-
动态 DNS
- 开发服务器自动注册
- 短 TTL(60 秒)快速更新
-
服务发现
- 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