de1055b959b47046651e3bd77f7a3525ce95f006
DNS服务器项目介绍
项目概述
这是一个基于Go语言开发的高性能DNS服务器,具备域名屏蔽、Hosts管理、统计分析和远程规则管理等功能。服务器支持通过Web界面进行管理配置,同时能够自动更新和缓存远程规则列表。
技术架构
核心组件
-
DNS服务模块 (
server.go)- 基于 github.com/miekg/dns 库实现高性能DNS查询处理
- 支持配置上游DNS服务器进行递归查询
- 实现域名屏蔽、统计数据收集等核心功能
-
屏蔽管理系统 (
manager.go)- 管理本地和远程屏蔽规则
- 支持规则缓存、自动更新和统计
- 实现域名和正则表达式规则的解析和匹配
-
HTTP控制台 (
server.go)- 提供Web管理界面
- 实现REST API用于配置管理和数据查询
-
配置管理 (
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、更新间隔等
- 日志配置 :日志文件路径、级别设置等
使用场景
- 网络内容过滤(广告、恶意网站屏蔽)
- 本地DNS缓存加速
- 企业/家庭网络DNS管理
- 开发测试环境DNS重定向
技术栈
- 语言 :Go
- DNS库 :github.com/miekg/dns
- 日志库 :github.com/sirupsen/logrus
- Web前端 :HTML/CSS/JavaScript 该DNS服务器具有高性能、功能全面、易于配置等特点,适用于需要精确控制DNS查询结果的各种网络环境。
Description
Languages
HTML
68.2%
Go
31.8%