8ad4c3576ded62fa627851a8bcb1f7409ad30e32
- 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
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 部署(推荐)
# 构建并启动
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
默认账号:admin / admin
方式二:本地编译运行
# 安装依赖
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:
{
"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!
Açıklama
Dil
Go
43.6%
JavaScript
26.4%
HTML
13.2%
Shell
11.2%
CSS
4.1%
Diğer
1.5%