Files
CNBUGS AI 8ad4c3576d Fix DHCP client unable to get IP and config not persisting
- 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
2026-04-24 16:03:54 +08:00

400 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📋 功能说明文档
## ✅ 已实现功能
### 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**
- 上游 DNS114.114.114.114, 8.8.8.8
- 本地域名:local
3. **添加静态绑定**
- NAS192.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**
- 开发服务器自动注册
- 短 TTL60 秒)快速更新
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