Files
dhcp-dns-manager/FEATURES.md
T
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 řádky
8.1 KiB
Markdown
Surový Blame Historie

Tento soubor obsahuje nejednoznačné znaky Unicode
Tento soubor obsahuje znaky Unicode, které mohou být zaměněny s jinými znaky. Pokud si myslíte, že je to záměrné, můžete toto varování bezpečně ignorovat. Použijte tlačítko Escape sekvence k jejich zobrazení.
# 📋 功能说明文档
## ✅ 已实现功能
### 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