# D-N-S **Repository Path**: Onehundredmillion/DNS ## Basic Information - **Project Name**: D-N-S - **Description**: 本机优化程序 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-04 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 优化的本地DNS服务器 一个高性能、功能丰富的本地DNS服务器,提供DNS缓存、上游转发、性能监控和Web管理界面。 ## 功能特性 ### 🚀 高性能DNS服务 - **异步处理**: 基于asyncio的高并发DNS查询处理 - **智能缓存**: 支持TTL管理的DNS缓存机制 - **多上游支持**: 支持多个上游DNS服务器,自动故障转移 - **本地记录**: 支持自定义本地DNS记录 - **域名阻止**: 支持阻止特定域名的解析 ### 📊 实时监控 - **性能统计**: 查询数量、响应时间、缓存命中率等 - **热门域名**: 统计最常查询的域名 - **上游服务器状态**: 监控各上游服务器的性能 - **客户端统计**: 跟踪各客户端的查询情况 - **告警系统**: 支持自定义告警规则 ### 🌐 Web管理界面 - **实时仪表板**: 直观显示DNS服务器状态 - **配置管理**: 在线修改服务器配置 - **监控图表**: 可视化性能数据 - **日志查看**: 实时查看服务器日志 ### 🔧 灵活配置 - **JSON配置**: 易于编辑的配置文件 - **动态重载**: 支持配置热重载 - **安全控制**: 支持客户端白名单/黑名单 - **速率限制**: 防止DNS查询滥用 ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置服务器 编辑 `config.json` 文件,配置DNS服务器参数: ```json { "server": { "host": "127.0.0.1", "port": 53, "max_workers": 50 }, "cache": { "max_size": 10000, "cleanup_interval": 60, "default_ttl": 300 }, "upstream_servers": [ { "name": "Google DNS Primary", "address": "8.8.8.8", "port": 53, "timeout": 2.0, "priority": 1 } ] } ``` ### 3. 启动服务器 ```bash # 启动DNS服务器和Web界面 sudo python main.py # 仅启动DNS服务器(无Web界面) sudo python main.py --no-web # 自定义Web界面地址和端口 sudo python main.py --web-host 0.0.0.0 --web-port 8080 ``` **注意**: DNS服务器需要绑定53端口,通常需要管理员权限。 ### 4. 访问Web界面 打开浏览器访问: http://127.0.0.1:8080 ## 配置说明 ### 服务器配置 - `host`: DNS服务器监听地址 - `port`: DNS服务器端口(通常为53) - `max_workers`: 最大工作线程数 ### 缓存配置 - `max_size`: 缓存最大记录数 - `cleanup_interval`: 缓存清理间隔(秒) - `default_ttl`: 默认TTL值(秒) ### 上游服务器 - `name`: 服务器名称 - `address`: 服务器IP地址 - `port`: 服务器端口 - `timeout`: 查询超时时间 - `priority`: 优先级(数字越小优先级越高) ### 本地记录 支持A、AAAA、CNAME等记录类型: ```json "local_records": { "localhost": { "A": "127.0.0.1", "AAAA": "::1" }, "router.local": { "A": "192.168.1.1" } } ``` ### 域名阻止 阻止特定域名的解析: ```json "blocked_domains": [ "ads.example.com", "tracker.example.com" ] ``` ## 性能优化 ### 1. 缓存优化 - 合理设置缓存大小,避免内存占用过多 - 调整TTL值,平衡缓存命中率和数据新鲜度 - 定期清理过期缓存 ### 2. 上游服务器优化 - 选择延迟低的上游DNS服务器 - 配置多个上游服务器实现负载均衡 - 根据网络环境调整超时时间 ### 3. 系统优化 - 增加工作线程数处理高并发 - 使用SSD存储提高日志写入性能 - 监控系统资源使用情况 ## 监控和告警 ### 性能指标 - 总查询数 - 成功/失败查询数 - 缓存命中率 - 平均响应时间 - 每秒查询数(QPS) ### 告警规则 - 高响应时间告警 - 低缓存命中率告警 - 高错误率告警 - 高查询率告警 ### 数据导出 支持将统计数据导出为JSON格式,便于进一步分析。 ## 安全考虑 ### 1. 访问控制 - 配置客户端白名单/黑名单 - 启用速率限制防止滥用 - 定期审查访问日志 ### 2. 网络安全 - 使用防火墙限制访问 - 考虑使用DNS over HTTPS (DoH) - 定期更新系统和依赖 ### 3. 数据保护 - 不记录敏感查询信息 - 定期清理日志文件 - 加密配置文件中的敏感信息 ## 故障排除 ### 常见问题 1. **端口绑定失败** - 确保以管理员权限运行 - 检查端口是否被其他程序占用 2. **上游DNS查询失败** - 检查网络连接 - 验证上游DNS服务器地址 - 调整超时时间 3. **缓存命中率低** - 检查TTL设置 - 分析查询模式 - 调整缓存大小 4. **Web界面无法访问** - 检查防火墙设置 - 验证Web服务器配置 - 查看错误日志 ### 日志分析 服务器会生成详细的日志文件,包含: - DNS查询记录 - 错误信息 - 性能统计 - 配置变更 ## 开发和扩展 ### 项目结构 ``` DNS/ ├── main.py # 主启动脚本 ├── dns_server.py # DNS服务器核心 ├── dns_config.py # 配置管理 ├── dns_monitor.py # 监控和统计 ├── web_interface.py # Web管理界面 ├── config.json # 配置文件 ├── requirements.txt # Python依赖 └── README.md # 项目说明 ``` ### 自定义扩展 - 添加新的DNS记录类型支持 - 实现自定义缓存策略 - 集成外部监控系统 - 添加更多告警规则 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 联系方式 如有问题或建议,请通过GitHub Issues联系。