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
400 řádky
8.1 KiB
Markdown
400 řádky
8.1 KiB
Markdown
# 📋 功能说明文档
|
||
|
||
## ✅ 已实现功能
|
||
|
||
### 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 配置示例
|
||
|
||
```json
|
||
{
|
||
"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 配置示例
|
||
|
||
```json
|
||
{
|
||
"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. 配置备份与恢复
|
||
|
||
**导出配置:**
|
||
```bash
|
||
curl -X GET http://localhost:8080/api/config/export \
|
||
-H "X-Session-ID: xxx" \
|
||
-o backup.json
|
||
```
|
||
|
||
**导入配置:**
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/config/import \
|
||
-H "X-Session-ID: xxx" \
|
||
-F "config=@backup.json"
|
||
```
|
||
|
||
### 2. 批量操作
|
||
|
||
**批量添加 DNS 记录:**
|
||
```json
|
||
{
|
||
"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:**
|
||
```python
|
||
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
|