Files
dns-server/README.md
2025-11-30 03:46:47 +08:00

235 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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操作系统
### 安装依赖
```bash
go mod download
```
### 编译和运行
```bash
# 编译
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`
```json
{
"ListenPort": 53,
"HTTPPort": 8080,
"StatsFile": "data/stats.json",
"SaveInterval": 300,
"MaxQueryLogs": 1000
}
```
## 使用方法
### 启动服务器
```bash
./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. 提交代码
### 测试
```bash
go test ./...
```
## 许可证
MIT License
## 贡献
欢迎提交Issue和Pull Request
## 联系方式
如有问题或建议,请通过以下方式联系:
- Email: wxf26054@live.cn
- Git: https://gitea.amazehome.xyz/AMAZEHOME/dns-server
## 更新日志
### v1.0.0 (2025-11-30)
- 初始版本
- 实现基本DNS服务器功能
- 实现屏蔽规则管理
- 实现查询日志记录和统计
- 实现Web控制台
- 实现WebSocket实时更新
- 实现查询日志持久化
### v1.0.1 (2025-11-30)
- 修复搜索和过滤功能
- 优化查询日志显示
- 修复样式间隔问题
- 添加查询日志刷新按钮
## 致谢
感谢所有为该项目做出贡献的开源项目和开发者!