72aa2846e574076d588da94549d2383e7df67bb2
DNS服务器项目
项目简介
这是一个基于Go语言开发的DNS服务器,具有屏蔽规则管理、查询日志记录和统计、Web控制台等功能。该服务器可以拦截特定域名的DNS查询,提供实时的查询统计和日志记录,并通过Web控制台进行管理。
技术栈
- Go语言
- Gorilla Mux (HTTP路由)
- Gorilla WebSocket (实时通信)
- Chart.js (数据可视化)
- Tailwind CSS (样式框架)
功能特性
1. DNS查询处理
- 支持UDP和TCP协议
- 支持常见DNS查询类型(A, AAAA, CNAME, MX, NS, TXT等)
- 高性能查询处理
2. 屏蔽规则管理
- 支持域名规则和正则表达式规则
- 支持规则例外
- 支持远程规则列表
- 支持本地规则管理
3. 查询日志记录和统计
- 实时记录DNS查询日志
- 支持日志持久化到文件
- 提供查询统计和趋势分析
- 支持日志搜索和过滤
- 支持日志排序
4. Web控制台
- 直观的仪表盘
- 实时统计数据
- 图表可视化
- 规则管理界面
- 查询日志详情页面
- 支持分页和自定义记录数量
5. WebSocket实时更新
- 实时更新统计数据
- 实时更新图表
- 支持连接状态管理
6. 查询日志持久化
- 将查询日志保存到
querylog.json文件 - 定期自动保存
- 服务器重启后自动加载
安装步骤
环境要求
- Go 1.18或更高版本
- Linux或Windows操作系统
安装依赖
go mod download
编译和运行
# 编译
go build -o dns-server main.go
# 运行
./dns-server
配置说明
主要配置项
ListenPort: DNS服务器监听端口,默认53HTTPPort: HTTP控制台监听端口,默认8080StatsFile: 统计数据保存文件,默认data/stats.jsonSaveInterval: 自动保存间隔(秒),默认300MaxQueryLogs: 最大保存日志数量,默认1000
配置文件格式
配置文件使用JSON格式,位于config.json:
{
"ListenPort": 53,
"HTTPPort": 8080,
"StatsFile": "data/stats.json",
"SaveInterval": 300,
"MaxQueryLogs": 1000
}
使用方法
启动服务器
./dns-server
访问Web控制台
在浏览器中访问:
http://localhost:8080
管理屏蔽规则
- 登录Web控制台
- 点击左侧菜单中的"屏蔽管理"
- 在"本地规则管理"中添加或删除规则
- 在"远程黑名单管理"中添加或删除远程规则列表
查看查询日志
- 登录Web控制台
- 点击左侧菜单中的"查询日志"
- 查看日志统计和趋势
- 使用搜索和过滤功能查找特定日志
- 点击列头进行排序
- 使用刷新按钮手动刷新日志
API文档
主要API端点
1. DNS查询
GET /api/query?domain=example.com
2. 屏蔽规则管理
GET /api/shield/rules
POST /api/shield/rules
DELETE /api/shield/rules/:id
3. Hosts管理
GET /api/hosts
POST /api/hosts
DELETE /api/hosts/:id
4. 查询日志
GET /api/logs/stats
GET /api/logs/query
GET /api/logs/count
5. WebSocket
ws://localhost:8080/ws/stats
开发说明
项目结构
/root/dnsbak/
├── config/ # 配置文件
├── data/ # 数据文件
├── dns/ # DNS服务器相关代码
├── http/ # HTTP服务器相关代码
├── shield/ # 屏蔽规则管理
├── static/ # 静态资源
│ ├── css/ # CSS文件
│ ├── js/ # JavaScript文件
│ └── index.html # 主页面
├── main.go # 入口文件
├── go.mod # Go模块文件
└── go.sum # Go依赖校验文件
开发流程
- 克隆仓库
- 安装依赖
- 开发功能
- 编译和测试
- 提交代码
测试
go test ./...
许可证
MIT License
贡献
欢迎提交Issue和Pull Request!
联系方式
如有问题或建议,请通过以下方式联系:
更新日志
v1.0.0 (2025-11-30)
- 初始版本
- 实现基本DNS服务器功能
- 实现屏蔽规则管理
- 实现查询日志记录和统计
- 实现Web控制台
- 实现WebSocket实时更新
- 实现查询日志持久化
v1.0.1 (2025-11-30)
- 修复搜索和过滤功能
- 优化查询日志显示
- 修复样式间隔问题
- 添加查询日志刷新按钮
致谢
感谢所有为该项目做出贡献的开源项目和开发者!
Description
Languages
JavaScript
61%
Go
21.7%
HTML
11.8%
CSS
5.3%
Shell
0.2%