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
258 baris
4.9 KiB
Markdown
258 baris
4.9 KiB
Markdown
# 使用场景示例
|
||
|
||
## 场景一:家庭网络管理
|
||
|
||
### 背景
|
||
你有一个家庭网络,想管理所有设备的 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 查询日志
|
||
|
||
---
|
||
|
||
选择适合你的场景开始使用吧!🚀
|