Files
dhcp-dns-manager/USE_CASES.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

258 lines
4.9 KiB
Markdown
Raw 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.
# 使用场景示例
## 场景一:家庭网络管理
### 背景
你有一个家庭网络,想管理所有设备的 IP 分配,并为重要设备(NAS、打印机)分配固定 IP。
### 配置步骤
1. **配置 DHCP 地址池**
```json
{
"dhcp": {
"enabled": true,
"interface": "eth0",
"network": "192.168.1.0",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"dns_servers": ["192.168.1.1", "114.114.114.114"],
"lease_time": 86400,
"ip_pool_start": "192.168.1.100",
"ip_pool_end": "192.168.1.200"
}
}
```
2. **为 NAS 添加静态绑定**
- 登录 Web 界面
- 进入 DHCP → 静态 IP 绑定
- 点击"新增绑定"
- 输入:
- MAC 地址:`00:11:22:33:44:55`NAS 的 MAC
- IP 地址:`192.168.1.10`
- 主机名:`my-nas`
- 描述:`家庭 NAS 存储`
3. **为打印机添加静态绑定**
- MAC 地址:`AA:BB:CC:DD:EE:FF`
- IP 地址:`192.168.1.20`
- 主机名:`printer`
- 描述:`客厅打印机`
### 效果
- 手机、电脑等设备自动获取 `192.168.1.100-200` 范围内的 IP
- NAS 和打印机始终使用固定 IP,方便访问
- 在 Web 界面可以看到所有在线设备
---
## 场景二:小型办公室网络
### 背景
10 人办公室,需要内部 DNS 解析公司服务器,并管理员工设备。
### 配置步骤
1. **配置内部 DNS 记录**
登录 Web 界面 → DNS 管理 → 新增记录:
| 域名 | 类型 | 值 | TTL | 用途 |
|------|------|-----|-----|------|
| oa.company.local | A | 192.168.1.50 | 300 | OA 系统 |
| file.company.local | A | 192.168.1.51 | 300 | 文件服务器 |
| git.company.local | A | 192.168.1.52 | 300 | Git 服务器 |
| www.company.local | CNAME | file.company.local | 300 | 公司官网 |
2. **为员工电脑绑定 IP**
- 记录每个员工的 MAC 地址
- 分配固定 IP 方便管理
- 例如:`192.168.1.101` - 张三的电脑
3. **查看 DNS 查询日志**
- 监控内部域名解析情况
- 排查网络问题
### 效果
- 员工可以通过 `oa.company.local` 访问 OA 系统
- 不需要配置 hosts 文件
- 集中管理所有网络资源
---
## 场景三:开发测试环境
### 背景
开发人员需要模拟 DNS 环境,测试域名解析。
### 配置步骤
1. **修改 DNS 端口(避免冲突)**
```json
{
"dns": {
"enabled": true,
"listen_addr": "127.0.0.1",
"listen_port": 5353,
"upstream": ["8.8.8.8"]
}
}
```
2. **添加测试域名**
```bash
# 创建测试记录
curl -X POST http://localhost:8080/api/dns/records \
-H "X-Session-ID: xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "api.test.local",
"type": "A",
"value": "127.0.0.1",
"ttl": 60
}'
```
3. **配置系统 DNS**
```bash
# Linux
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
# 或使用 dnsmasq 转发
```
4. **测试解析**
```bash
dig @127.0.0.1 -p 5353 api.test.local
```
### 效果
- 本地开发环境模拟生产 DNS
- 快速切换不同测试场景
- 查看完整的 DNS 查询日志
---
## 场景四:树莓派网络服务
### 背景
在树莓派上运行轻量级 DHCP+DNS 服务,作为家庭网络的核心。
### 硬件要求
- 树莓派 3B+ 或更高
- 8GB SD 卡
- 有线网络连接
### 安装步骤
1. **安装 Docker**
```bash
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker pi
```
2. **部署服务**
```bash
git clone <your-repo>
cd dhcp-dns-manager
docker-compose up -d
```
3. **设置开机自启**
```bash
docker-compose enable
```
4. **配置网络接口**
```json
{
"dhcp": {
"interface": "eth0"
}
}
```
### 效果
- 低功耗 24 小时运行
- 替代路由器 DHCP 功能
- 提供快速本地 DNS 解析
---
## 场景五:网络隔离测试
### 背景
测试不同网段的网络隔离策略。
### 配置多网段(需要多个实例)
**实例 1 - 网段 A**
```json
{
"dhcp": {
"network": "192.168.10.0",
"ip_pool_start": "192.168.10.100",
"ip_pool_end": "192.168.10.200"
},
"web": {
"port": 8081
}
}
```
**实例 2 - 网段 B**
```json
{
"dhcp": {
"network": "192.168.20.0",
"ip_pool_start": "192.168.20.100",
"ip_pool_end": "192.168.20.200"
},
"web": {
"port": 8082
}
}
```
### 效果
- 隔离测试环境和生产环境
- 模拟复杂网络拓扑
- 验证防火墙规则
---
## 最佳实践
### 1. IP 地址规划
```
192.168.1.1 - 网关
192.168.1.2-50 - 静态设备(服务器、打印机)
192.168.1.51-99 - 预留
192.168.1.100-200 - DHCP 动态分配
192.168.1.201-254 - 预留
```
### 2. DNS 命名规范
```
设备类型.位置.域名
- nas.home.local
- printer.office.local
- server.dc.local
```
### 3. 安全建议
- 修改默认密码
- 限制 Web 界面访问 IP
- 启用 HTTPS(反向代理)
- 定期备份数据库
### 4. 监控建议
- 监控 DHCP 地址池使用率
- 设置告警(地址池 > 80%)
- 定期查看 DNS 查询日志
---
选择适合你的场景开始使用吧!🚀