2025-11-30 13:31:16 +08:00
2025-11-30 11:44:26 +08:00
2025-11-30 13:31:16 +08:00
2025-11-30 13:31:16 +08:00
2025-11-30 11:52:41 +08:00
2025-11-23 18:21:29 +08:00
2025-11-30 13:31:16 +08:00
2025-11-30 02:25:36 +08:00
2025-11-30 02:25:36 +08:00
2025-11-30 13:31:16 +08:00
2025-11-30 13:31:16 +08:00
2025-11-30 13:31:16 +08:00
2025-11-25 16:51:27 +08:00
2025-11-30 03:46:47 +08:00
2025-11-30 12:46:22 +08:00
2025-11-30 02:25:36 +08:00

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服务器监听端口默认53
  • HTTPPort: HTTP控制台监听端口默认8080
  • StatsFile: 统计数据保存文件,默认data/stats.json
  • SaveInterval: 自动保存间隔默认300
  • MaxQueryLogs: 最大保存日志数量默认1000

配置文件格式

配置文件使用JSON格式位于config.json

{
  "ListenPort": 53,
  "HTTPPort": 8080,
  "StatsFile": "data/stats.json",
  "SaveInterval": 300,
  "MaxQueryLogs": 1000
}

使用方法

启动服务器

./dns-server

访问Web控制台

在浏览器中访问:

http://localhost:8080

管理屏蔽规则

  1. 登录Web控制台
  2. 点击左侧菜单中的"屏蔽管理"
  3. 在"本地规则管理"中添加或删除规则
  4. 在"远程黑名单管理"中添加或删除远程规则列表

查看查询日志

  1. 登录Web控制台
  2. 点击左侧菜单中的"查询日志"
  3. 查看日志统计和趋势
  4. 使用搜索和过滤功能查找特定日志
  5. 点击列头进行排序
  6. 使用刷新按钮手动刷新日志

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依赖校验文件

开发流程

  1. 克隆仓库
  2. 安装依赖
  3. 开发功能
  4. 编译和测试
  5. 提交代码

测试

go test ./...

许可证

MIT License

贡献

欢迎提交Issue和Pull Request

联系方式

如有问题或建议,请通过以下方式联系:

更新日志

v1.0.0 (2025-11-30)

  • 初始版本
  • 实现基本DNS服务器功能
  • 实现屏蔽规则管理
  • 实现查询日志记录和统计
  • 实现Web控制台
  • 实现WebSocket实时更新
  • 实现查询日志持久化

v1.0.1 (2025-11-30)

  • 修复搜索和过滤功能
  • 优化查询日志显示
  • 修复样式间隔问题
  • 添加查询日志刷新按钮

致谢

感谢所有为该项目做出贡献的开源项目和开发者!

Description
No description provided
Readme 159 MiB
Languages
JavaScript 61%
Go 21.7%
HTML 11.8%
CSS 5.3%
Shell 0.2%