# DNS服务器项目介绍
## 项目概述
这是一个基于Go语言开发的高性能DNS服务器，具备域名屏蔽、Hosts管理、统计分析和远程规则管理等功能。服务器支持通过Web界面进行管理配置，同时能够自动更新和缓存远程规则列表。

## 技术架构
### 核心组件
1. DNS服务模块 ( `server.go` )
   - 基于 github.com/miekg/dns 库实现高性能DNS查询处理
   - 支持配置上游DNS服务器进行递归查询
   - 实现域名屏蔽、统计数据收集等核心功能

2. 屏蔽管理系统 ( `manager.go` )
   - 管理本地和远程屏蔽规则
   - 支持规则缓存、自动更新和统计
   - 实现域名和正则表达式规则的解析和匹配

3. HTTP控制台 ( `server.go` )
   - 提供Web管理界面
   - 实现REST API用于配置管理和数据查询

4. 配置管理 ( `config.go` )
   - 定义配置结构和加载功能
   - 支持JSON格式配置文件
   
## 主要功能特性
### 1. 域名屏蔽系统
- 支持本地规则文件和远程规则URL
- 多种屏蔽方式：NXDOMAIN、refused、emptyIP、customIP
- 支持域名精确匹配和正则表达式匹配
- 远程规则自动缓存和更新机制
### 2. Hosts管理
- 支持自定义Hosts映射
- 提供Web界面管理Hosts条目
- 自动保存Hosts配置
### 3. 统计分析功能
- 记录屏蔽域名统计信息
- 记录解析域名统计信息
- 提供按小时统计的屏蔽数据
- 支持查询最常屏蔽和解析的域名
### 4. 远程规则管理
- 支持添加多个远程规则URL
- 自动定期更新远程规则
- 本地缓存机制确保规则可用性
- Web界面可视化管理
### 5. 管理界面
- 提供直观的Web控制台
- 支持查看服务器状态和统计信息
- 规则管理和配置修改
- DNS查询测试工具
## 项目结构
```
/root/dns/
├── config/          # 配置管理
├── data/            # 数据目录（包含缓存和统计）
│   └── remote_rules/ # 远程规则缓存
├── dns/             # DNS服务器核心
├── http/            # HTTP控制台
├── logger/          # 日志系统
├── shield/          # 屏蔽规则管理
├── static/          # 静态Web文件
├── main.go          # 程序入口
└── config.json      # 配置文件
```
## 配置项说明
主要配置文件 `config.json` 包含以下部分：

- DNS配置 ：端口、上游DNS服务器、超时设置等
- HTTP配置 ：控制台端口、主机绑定等
- 屏蔽配置 ：规则文件路径、远程规则URL、更新间隔等
- 日志配置 ：日志文件路径、级别设置等
## 使用场景
1. 网络内容过滤（广告、恶意网站屏蔽）
2. 本地DNS缓存加速
3. 企业/家庭网络DNS管理
4. 开发测试环境DNS重定向
## 技术栈
- 语言 ：Go
- DNS库 ：github.com/miekg/dns
- 日志库 ：github.com/sirupsen/logrus
- Web前端 ：HTML/CSS/JavaScript
该DNS服务器具有高性能、功能全面、易于配置等特点，适用于需要精确控制DNS查询结果的各种网络环境。