# DHCP & DNS 管理器 一个基于 Go 的轻量级 DHCP 和 DNS 服务,带有 Web 管理界面。 ## 功能特性 ### DHCP 服务 - ✅ IP 地址池管理 - ✅ 动态 IP 分配和租约管理 - ✅ 静态 IP 绑定(MAC 地址绑定) - ✅ 租约过期自动清理 - ✅ 实时查看活跃租约 ### DNS 服务 - ✅ 本地 DNS 记录管理(A、CNAME、MX、TXT) - ✅ DNS 查询缓存 - ✅ 上游 DNS 转发 - ✅ DNS 查询日志 - ✅ 自定义 TTL 设置 ### Web 管理界面 - ✅ 仪表盘概览 - ✅ 用户认证 - ✅ DHCP 租约和绑定管理 - ✅ DNS 记录管理 - ✅ 查询日志查看 - ✅ 响应式设计 ## 快速开始 ### 方式一:Docker 部署(推荐) ```bash # 构建并启动 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` 访问:http://localhost:8080 默认账号:`admin` / `admin` ### 方式二:本地编译运行 ```bash # 安装依赖 go mod download # 创建数据目录 mkdir -p data # 运行 go run ./cmd -config configs/config.json # 或者编译后运行 go build -o dhcp-dns-manager ./cmd ./dhcp-dns-manager -config configs/config.json ``` ## 配置说明 配置文件位于 `configs/config.json`: ```json { "dhcp": { "enabled": true, // 是否启用 DHCP "interface": "eth0", // 网络接口 "network": "192.168.1.0", // 网络地址 "netmask": "255.255.255.0", // 子网掩码 "gateway": "192.168.1.1", // 网关 "dns_servers": ["192.168.1.1", "8.8.8.8"], "lease_time": 86400, // 租约时间(秒) "ip_pool_start": "192.168.1.100", "ip_pool_end": "192.168.1.200" }, "dns": { "enabled": true, "listen_addr": "0.0.0.0", "listen_port": 53, "upstream": ["8.8.8.8", "1.1.1.1"], "cache_size": 1000 }, "web": { "host": "0.0.0.0", "port": 8080, "session_key": "change-this-to-a-random-secret" }, "database": { "path": "data/dhcp-dns.db" } } ``` ## 项目结构 ``` dhcp-dns-manager/ ├── cmd/ # 主程序入口 │ └── main.go ├── internal/ # 核心逻辑 │ ├── config/ # 配置管理 │ ├── db/ # 数据库操作 │ ├── dhcp/ # DHCP 服务 │ ├── dns/ # DNS 服务 │ └── web/ # Web 服务 ├── web/ # 前端资源 │ ├── static/ │ │ ├── css/ │ │ └── js/ │ └── templates/ ├── configs/ # 配置文件 ├── data/ # 数据库文件(运行时创建) ├── Dockerfile ├── docker-compose.yml └── README.md ``` ## API 接口 ### 认证 - `POST /api/login` - 用户登录 ### DHCP - `GET /api/dhcp/leases` - 获取租约列表 - `GET /api/dhcp/bindings` - 获取静态绑定 - `POST /api/dhcp/bindings` - 创建静态绑定 - `DELETE /api/dhcp/bindings/:id` - 删除静态绑定 ### DNS - `GET /api/dns/records` - 获取 DNS 记录 - `POST /api/dns/records` - 创建 DNS 记录 - `DELETE /api/dns/records/:id` - 删除 DNS 记录 - `GET /api/dns/logs` - 获取查询日志 ### 系统 - `GET /api/dashboard` - 获取仪表盘数据 - `GET /api/config` - 获取配置 - `PUT /api/config` - 更新配置 ## 注意事项 ⚠️ **权限要求** - DHCP 服务需要 root 权限(监听 67 端口) - DNS 服务需要 root 权限(监听 53 端口) - 建议使用 Docker 部署,自动处理权限问题 ⚠️ **网络配置** - 确保网络接口配置正确 - 避免与现有 DHCP/DNS 服务冲突 - 生产环境请修改默认密码 ## 开发计划 - [ ] 完整的 DHCP 协议实现(目前为管理框架) - [ ] IPv6 支持 - [ ] DDNS(动态 DNS) - [ ] 多租户支持 - [ ] API Token 认证 - [ ] 配置热更新 - [ ] 监控告警 - [ ] 备份恢复 ## 技术栈 - **后端**: Go 1.21 - **Web 框架**: Gin - **数据库**: SQLite + GORM - **DNS 库**: miekg/dns - **前端**: 原生 HTML/CSS/JavaScript ## License MIT ## 贡献 欢迎提交 Issue 和 Pull Request!