Файли
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

4.9 KiB
Неформатований Анотація Історія

使用场景示例

场景一:家庭网络管理

背景

你有一个家庭网络,想管理所有设备的 IP 分配,并为重要设备(NAS、打印机)分配固定 IP。

配置步骤

  1. 配置 DHCP 地址池
{
  "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"
  }
}
  1. 为 NAS 添加静态绑定
  • 登录 Web 界面
  • 进入 DHCP → 静态 IP 绑定
  • 点击"新增绑定"
  • 输入:
    • MAC 地址:00:11:22:33:44:55NAS 的 MAC
    • IP 地址:192.168.1.10
    • 主机名:my-nas
    • 描述:家庭 NAS 存储
  1. 为打印机添加静态绑定
  • 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 公司官网
  1. 为员工电脑绑定 IP
  • 记录每个员工的 MAC 地址
  • 分配固定 IP 方便管理
  • 例如:192.168.1.101 - 张三的电脑
  1. 查看 DNS 查询日志
  • 监控内部域名解析情况
  • 排查网络问题

效果

  • 员工可以通过 oa.company.local 访问 OA 系统
  • 不需要配置 hosts 文件
  • 集中管理所有网络资源

场景三:开发测试环境

背景

开发人员需要模拟 DNS 环境,测试域名解析。

配置步骤

  1. 修改 DNS 端口(避免冲突)
{
  "dns": {
    "enabled": true,
    "listen_addr": "127.0.0.1",
    "listen_port": 5353,
    "upstream": ["8.8.8.8"]
  }
}
  1. 添加测试域名
# 创建测试记录
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
  }'
  1. 配置系统 DNS
# Linux
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf

# 或使用 dnsmasq 转发
  1. 测试解析
dig @127.0.0.1 -p 5353 api.test.local

效果

  • 本地开发环境模拟生产 DNS
  • 快速切换不同测试场景
  • 查看完整的 DNS 查询日志

场景四:树莓派网络服务

背景

在树莓派上运行轻量级 DHCP+DNS 服务,作为家庭网络的核心。

硬件要求

  • 树莓派 3B+ 或更高
  • 8GB SD 卡
  • 有线网络连接

安装步骤

  1. 安装 Docker
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker pi
  1. 部署服务
git clone <your-repo>
cd dhcp-dns-manager
docker-compose up -d
  1. 设置开机自启
docker-compose enable
  1. 配置网络接口
{
  "dhcp": {
    "interface": "eth0"
  }
}

效果

  • 低功耗 24 小时运行
  • 替代路由器 DHCP 功能
  • 提供快速本地 DNS 解析

场景五:网络隔离测试

背景

测试不同网段的网络隔离策略。

配置多网段(需要多个实例)

实例 1 - 网段 A

{
  "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

{
  "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 查询日志

选择适合你的场景开始使用吧!🚀