# 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查询结果的各种网络环境。