# autodns **Repository Path**: gloop/autodns ## Basic Information - **Project Name**: autodns - **Description**: dns服务器: 1、支持自定义hosts条目 2、自动检测dns服务器返回结果可达性,只返回可达的ip - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoDNS 一个智能 DNS 解析器,支持 IP 可达性验证和自动缓存。 ## 功能特性 - **IP 可达性验证** - 在返回 DNS 响应前自动验证 IP 地址的可访问性 - **智能缓存** - 缓存已验证的 IP,提升解析效率 - **自定义 Hosts** - 支持自定义 hosts 文件映射 - **上游 DNS 服务器** - 支持配置多个上游 DNS 服务器 - **异步处理** - 使用 tokio 异步运行时,高效处理并发请求 ## 模块说明 | 模块 | 描述 | |------|------| | `checker` | IP 地址可达性检查(TCP/HTTP/HTTPS) | | `config` | 配置文件加载与管理 | | `hosts` | 本地 hosts 文件解析 | | `resolver` | DNS 解析核心逻辑,含缓存和验证 | | `upstream` | 上游 DNS 服务器管理 | ## 快速开始 ### 环境要求 - Rust 1.56+ - 现代 Unix/Linux 系统或 Windows ### 构建与运行 ```bash # 构建 cargo build --release # 运行 cargo run --release ``` ### 配置 创建 `config.json` 配置文件: ```json { "upstream_dns": ["8.8.8.8", "1.1.1.1"], "default_dns": "8.8.8.8", "bind": "0.0.0.0:53", "cache_ttl": 300, "verify_timeout": 5 } ``` ### 自定义 Hosts 在 `custom_hosts.txt` 中添加自定义域名映射: ``` 192.168.1.1 example.com 192.168.1.2 api.example.com ``` ## 工作原理 1. 接收 UDP DNS 查询请求 2. 首先查询系统 hosts 文件和自定义 hosts 3. 若未命中,查询上游 DNS 服务器 4. 对返回的 IP 进行可达性验证(TCP/HTTP/HTTPS) 5. 只返回验证通过的 IP 到客户端 6. 缓存验证结果供后续使用 ## 许可证 MIT License