Тайлбар байхгүй

CNBUGS AI 7d54c165a9 Fix DNS record and static binding deletion 1 сар өмнө
cmd 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
configs 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
internal 7d54c165a9 Fix DNS record and static binding deletion 1 сар өмнө
web 5bb84c159a Add client eviction feature 1 сар өмнө
.gitignore 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
API_EXAMPLES.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
BUILD.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
CHANGELOG.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
CLIENTS_FEATURE.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
DELIVERY.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
DEPLOY.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
Dockerfile 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
FEATURES.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
FIX_SUMMARY.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
INDEX.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
INSTALL.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
PROJECT_SUMMARY.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
QUICKSTART.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
README.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
TROUBLESHOOTING.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
USE_CASES.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
WINDOWS_GUIDE.md 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
diagnose.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
docker-compose.yml 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
fix-deps.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
go.mod 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
go.sum 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
install.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
start.bat 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
start.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
test-api.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө
uninstall.sh 8ad4c3576d Fix DHCP client unable to get IP and config not persisting 1 сар өмнө

README.md

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

访问:http://localhost:8080

默认账号: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!