🚀 高性能终端DNS解析与网络测试工具
一款专业的无图形界面、基于终端交互的域名解析与网络测试工具,支持智能DNS服务器选择、并行解析、网络性能测试和hosts文件自动生成。
English Version |未来计划|Future plan| 快速开始 | 使用指南 | 常见问题
- 📋 结构化交互流程 - 清晰的文本引导和操作提示
- 🎮 交互式菜单系统 - 支持键盘导航,操作便捷
- 🎨 彩色终端输出 - 清晰的信息层级,视觉友好
- 📊 动态进度显示 - 实时状态更新和进度条
- ⚡ 响应式设计 - 适配不同终端尺寸!
- 🎯 单个域名输入 - 即时格式验证,错误智能提示
- 📝 批量域名输入 - 支持
.txt文件导入或多行粘贴 - 🔍 全面格式验证 - 基于RFC 1035规范的严格验证
- 🛠️ 智能修正建议 - 精确的错误提示和修正方案
- 🔄 自动去重处理 - 避免重复测试,提高效率
-
🌍 200+公共DNS服务器 - 智能选择最优服务器
-
⚙️ 自定义DNS管理 - 添加、删除、优先级排序
-
🔄 并行解析引擎 - 最多50线程并发处理
-
⏱️ 详细性能统计 - 解析耗时和成功率记录
-
🛡️ DNS污染检测 - 识别和规避污染问题
-
⚡ 自适应超时策略 - 0.8s ~ 5.0s智能调整
-
🔧 熔断器机制 - 指数退避重试,保障稳定性
- 🏓 智能Ping测试 - ICMP socket + 系统命令双重支持
- 🌊 TCP/UDP速率测试 - 下载+上传双向测试
- 📈 多维度数据分析 - 延迟、抖动、丢包率、速率
- ⚡ 并行IP测试 - 最多50线程并发
- 📊 智能统计分析 - 多次测试取平均值,去除异常值
- 🏆 Top N最优推荐 - 智能推荐最佳IP地址
- 📊 格式化表格展示 - 清晰直观的结果呈现
- 🔄 三种排序模式 - 延迟优先、速率优先、平衡模式
- ⭐ 智能推荐标记 - 等级标记,一目了然
- 📝 hosts文件生成 - 标准格式,一键复制到剪贴板
- 💾 多格式导出 - 支持
.txt和.csv格式 - 🔍 结果筛选排序 - 灵活的数据筛选功能
- 🐛 详细调试日志 - 全面的调试信息输出
- 📊 性能监控报告 - 实时性能分析和报告
- ⏱️ 执行时间统计 - 代码段性能分析
- 🧪 性能基准测试 - 内置基准测试功能
- 🏃 性能基准测试 - 全面的性能评估工具
- 🔄 配置热重载 - 无需重启的配置更新
- 📝 详细日志记录 - 完整的操作日志
- 🛡️ 全面异常处理 - 健壮的错误处理机制
- 📊 动态进度指示 - 实时任务进度展示
- 🚀 首次运行智能引导 - 自动检测首次运行,提供初始化向导
- ⚙️ 系统自动性能检测 - 自动测试系统最大并发连接数、线程数、DNS解析线程数
- 🔧 智能参数优化 - 根据检测结果自动计算最优配置(取最大值的2/3)
- 🌍 DNS服务器自动筛选 - 依次测试所有DNS服务器,自动移除不可用或响应慢的服务器
- 💾 配置自动保存 - 优化后的配置自动保存到config.json
- 🔄 重新初始化支持 - 支持随时重新运行初始化向导或重置初始化记录
# 克隆源代码仓库
git clone https://github.com/DHA404/DNS_Network_Tool.git
cd DNS_Network_Tool- 🌐 访问项目主页:DNS Network Tool
- 📥 点击 "Code" 按钮,选择 "Download ZIP"
- 📂 解压下载的压缩包到本地目录
| 要求 | 最低版本 | 推荐版本 |
|---|---|---|
| 操作系统 | Windows 7 | Windows 10/11 |
| Python | 3.7+ | 3.9+ |
| 预留运行内存 | 40MB | 100MB+ |
| 磁盘空间 | 20MB | 50MB+ |
# 安装所有依赖包
pip install -r requirements.txt| 包名 | 版本要求 | 用途 |
|---|---|---|
dnspython |
>=2.8.0 |
DNS解析库 |
requests |
>=2.32.0 |
HTTP请求库 |
colorama |
>=0.4.6 |
终端颜色支持 |
prettytable |
>=3.10.0 |
表格格式化输出 |
psutil |
>=5.9.0 |
系统进程监控 |
# 启动主程序
python main.py确保已安装 Python 3.7 或更高版本:
# 检查 Python 版本
python --version
# 如果未安装,请前往 https://www.python.org/downloads/ 下载安装# 进入项目目录
cd DNS_Network_Tool
# 安装所有依赖
pip install -r requirements.txt# 运行主程序
python main.py# 启动程序后,选择菜单:
# 1. 域名输入并测试
# 2. 单个域名输入
# 3. 输入域名(如:google.com)
# 4. 程序将自动进行 DNS 解析和网络测试# 创建域名列表文件 domains.txt,每行一个域名:
google.com
baidu.com
github.com
microsoft.com
# 在程序中选择:
# 1. 域名输入并测试
# 2. 批量输入
# 3. 从文件导入
# 4. 选择 domains.txt# 在程序主菜单选择:
# 2. 配置 DNS 服务器
# 1. 添加新的 DNS 服务器
# 输入 DNS 服务器 IP 地址(如:114.114.114.114)# 启动程序后,选择菜单:
# 1. 域名输入并测试
# 2. 单个域名输入
# 3. 输入域名(如:google.com)
# 4. 程序将自动进行 DNS 解析和网络测试# 创建域名列表文件 domains.txt,每行一个域名:
google.com
baidu.com
github.com
microsoft.com
# 在程序中选择:
# 1. 域名输入并测试
# 2. 批量输入
# 3. 从文件导入
# 4. 选择 domains.txt# 在程序主菜单选择:
# 2. 配置 DNS 服务器
# 1. 添加新的 DNS 服务器
# 输入 DNS 服务器 IP 地址(如:114.114.114.114)$ python main.py
╔════════════════════════════════════════════════════════════╗
║ DNS Network Tool ║
║ 高性能域名解析与网络测试工具 ║
╚════════════════════════════════════════════════════════════╝
1. 域名输入并测试
2. 配置 DNS 服务器
3. 配置测试参数
4. 启动/关闭开发者模式
5. 初始化配置向导
6. 退出程序
请输入选项编号 [1-6]: _根据需求选择相应功能:
- 选项 1:进行域名解析和网络测试
- 选项 2:管理 DNS 服务器列表
- 选项 3:调整测试参数
- 选项 4:启用开发者模式获取详细日志
- 选项 5:运行初始化配置向导
- 选项 6:安全退出程序
支持两种输入方式:
单个域名输入:
- 输入格式:
域名(如:www.example.com) - 程序会即时验证域名格式
- 格式错误时会提示修正建议
批量域名输入:
- 方式一:逗号分隔(
google.com,baidu.com) - 方式二:多行粘贴(每行一个域名)
- 方式三:文件导入(
.txt文件,每行一个域名)
综合解析模式:
- 所有域名同时进行 DNS 解析
- 统一测试所有获取到的 IP 地址
- 适用于需要对比不同域名的解析结果
依次解析模式:
- 逐个解析域名
- 分别对每个域名进行网络测试
- 适用于需要详细分析单个域名的场景
程序支持多种结果展示和导出方式:
查看 DNS 解析结果:
- 显示所有解析到的 IP 地址
- 显示解析耗时和来源 DNS 服务器
查看网络测试结果:
- Ping 测试结果(延迟、丢包率、抖动)
- 速率测试结果(下载速度、上传速度)
- 支持多种排序方式(延迟优先、速率优先、平衡模式)
导出测试结果:
- 导出为
.txt格式(表格形式) - 导出为
.csv格式(可导入 Excel) - 生成 hosts 文件格式并复制到剪贴板
baidu.com taobao.com jd.com douyin.com
google.com github.com stackoverflow.com
在程序中选择批量输入,然后复制以上域名列表即可批量测试。
在程序主菜单选择「配置测试参数」可调整:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Ping 测试次数 | 10-20 | 平衡准确性和测试时间 |
| Ping 超时时间 | 1.5 秒 | 根据网络环境调整 |
| 速率测试时长 | 25 秒 | 建议 20-30 秒 |
| 数据包大小 | 1024 字节 | 根据需求调整 |
| 并发连接数 | 12 | 根据网络带宽调整 |
| DNS 解析超时 | 5 秒 | 根据 DNS 服务器响应调整 |
程序内置 200+ 公共 DNS 服务器,支持:
- 查看当前 DNS 服务器列表
- 添加自定义 DNS 服务器(支持 IPv4/IPv6)
- 删除不常用的 DNS 服务器
- 按性能排序 DNS 服务器
- 设置 DNS 服务器优先级
启用开发者模式可获取:
- 详细的调试日志
- 性能监控报告
- 代码执行时间统计
- 适合排查问题和性能优化
A: 请检查以下几点:
- Python 版本是否 >= 3.7
- 是否已安装所有依赖(
pip install -r requirements.txt) - 是否在正确的工作目录(包含
main.py的目录) - 检查是否有端口冲突(部分功能可能占用端口)
A: 可能原因及解决方法:
- 网络连接异常 → 检查网络连接
- DNS 服务器不可用 → 尝试更换 DNS 服务器
- 域名格式错误 → 检查域名格式是否正确
- DNS 解析超时 → 增加 DNS 解析超时时间
A: 可能原因:
- 目标 IP 禁止 Ping(ICMP 被禁用)
- 防火墙阻止 ICMP 请求
- 网络连接不稳定
解决方法:
- 尝试增加 Ping 超时时间
- 切换到其他目标 IP 进行测试
- 检查本地防火墙设置
A: 优化建议:
- 增加测试次数和时长
- 在网络负载较低时测试
- 多次测试取平均值
- 关闭其他占用带宽的程序
A: 测试完成后:
- 查看网络测试结果
- 选择「生成 hosts 文件」
- 程序会自动复制到剪贴板
- 直接粘贴到
C:\Windows\System32\drivers\etc\hosts
# 启动程序
python main.py
# 选择 1. 域名输入并测试
# 选择单个域名输入
# 输入:google.com
# 程序将自动:
# 1. 解析 google.com 的 IP 地址
# 2. 对所有 IP 进行 Ping 测试
# 3. 进行速率测试
# 4. 显示最优 IP 推荐
# 5. 生成 hosts 文件格式google.com
github.com
raw.githubusercontent.com
# 启动程序
python main.py
# 选择批量导入 domains.txt
# 程序测试所有域名
# 生成合并的 hosts 文件
# 一键复制到剪贴板# 添加阿里 DNS
# 主菜单选择 2. 配置 DNS 服务器
# 选择添加 DNS 服务器
# 输入:223.5.5.5
# 添加腾讯 DNS
# 输入:119.29.29.29
# 重新测试域名,观察解析速度变化- 定期更新 DNS 服务器列表:删除响应慢的服务器,添加新的高速 DNS
- 使用开发者模式排查问题:当测试结果异常时,启用开发者模式查看详细日志
- 多次测试取平均值:对于重要场景,建议多次测试后取最优结果
- 合理设置测试参数:根据网络环境调整参数,避免测试时间过长
- 及时备份 hosts 文件:修改前备份原始 hosts 文件
- 问题反馈:https://github.com/DHA404/DNS_Network_Tool/issues
- 功能建议:https://github.com/DHA404/DNS_Network_Tool/discussions
1. 域名输入并测试
2. 配置 DNS 服务器
3. 配置测试参数
4. 启动/关闭开发者模式
5. 初始化配置向导
6. 退出程序
选择此选项进入域名测试流程:
-
选择输入方式
- 单个域名输入
- 批量输入(逗号分隔或隔行粘贴)
-
选择解析模式
- 综合解析:所有域名同时解析,统一测试所有IP
- 依次解析:逐个解析域名,分别测试
-
选择IP模式(仅综合解析模式)
- 唯一IP模式:所有域名使用同一个最优IP
- 独立IP模式:每个域名使用自己的最优IP
-
查看结果
- 查看DNS解析结果
- 查看网络测试结果(Ping/速率)
- 查看最优IP列表
- 自动生成hosts文件并复制到剪贴板
管理DNS服务器列表:
- 查看当前DNS服务器列表
- 添加新的DNS服务器
- 删除现有DNS服务器
- DNS服务器性能排序
调整测试相关参数:
- Ping测试次数(1-100)
- Ping超时时间(0.1-10秒)
- 速率测试时长(1-60秒)
- 数据包大小(64-8192字节)
- 并发连接数(1-20)
- DNS解析线程数(1-50)
- DNS解析超时时间(1-30秒)
切换开发者模式:
- 启用:显示详细调试日志
- 禁用:仅显示基本信息
运行初始化配置向导:
- 首次运行自动提示:程序首次运行时会自动提示进行初始化
- 系统性能测试:自动检测系统支持的最大并发连接数、线程数、DNS解析线程数
- DNS服务器筛选:测试并筛选可用的DNS服务器
- 智能参数优化:根据检测结果自动优化配置参数
- 手动运行:随时从主菜单选择"初始化配置向导"重新运行
安全退出程序,生成性能报告(如已启用开发者模式)。
- 选择"域名输入并测试"
- 选择"批量输入"
- 选择输入方式(文件导入或多行粘贴)
- 等待域名验证完成
- 选择是否执行网络测试
- 查看测试结果
- 选择是否导出结果
-添加DNS 服务器:输入IP地址添加新服务器
- 删除DNS服务器:从列表中移除服务器
- 查看服务器列表:显示所有已配置的DNS服务器
- 性能排序:按响应时间排序服务器
| 参数 | 范围 | 说明 |
|---|---|---|
| ping_count | 1-100 | Ping测试次数 |
| ping_timeout | 0.1-10秒 | Ping超时时间 |
| test_duration | 1-60秒 | 速率测试时长 |
| packet_size | 64-8192字节 | 数据包大小 |
| concurrent_connections | 1-20 | 并发连接数 |
| dns_threads | 1-50 | DNS解析线程数 |
| dns_timeout | 1-30秒 | DNS解析超时时间 |
程序会在首次运行时创建config.json文件:(默认下载时自带)
{
"dns_servers": [
"8.8.8.8",
"1.1.1.1",
"9.9.9.9",
"208.67.222.222",
"4.2.2.1",
"1.0.0.1",
"8.8.4.4",
"208.67.220.220",
"84.200.69.80",
"84.200.70.40"
],
"test_params": {
"ping_count": 7,
"ping_timeout": 1.5,
"test_duration": 25,
"packet_size": 1024,
"concurrent_connections": 12,
"max_threads": 50,
"dns_threads": 50,
"dns_timeout": 5,
"geo_query_enabled": true,
"geo_query_threads": 50,
"top_n_ips": 10,
"speed_test_type": "tcp",
"enable_ipv6": true,
"output_format": "txt",
"auto_save_results": false,
"enable_download_test": true,
"enable_upload_test": false,
"speed_test_method": "both",
"min_data_threshold": 1048576,
"min_valid_data": 102400,
"min_speed": 1.0
},
"log_level": "INFO",
"web_interface": {
"enabled": false,
"host": "0.0.0.0",
"port": 5000
}
}- 支持IPv4和IPv6地址
- 最多支持200+个DNS服务器
- 建议保留多个备选服务器
-
ping_count:Ping测试发送的数据包数量 -
ping_timeout:等待Ping响应的超时时间 -
test_duration:速率测试的持续时间(秒) -
packet_size:测试使用的数据包大小(字节) -
concurrent_connections:速率测试的并发连接数 -
max_threads:最大线程数 -
dns_threads:DNS解析线程数 -
dns_timeout:DNS解析超时时间 -
top_n_ips:返回最优IP的数量 -
speed_test_type:速率测试类型(tcp/udp/both) -
enable_ipv6:是否启用IPv6支持 -
output_format:输出格式 -
auto_save_results:是否自动保存结果 -
enable_download_test:是否启用下载测试 -
enable_upload_test:是否启用上传测试 -
speed_test_method:速率测试方法 -
min_data_threshold:最小数据阈值(字节) -
min_valid_data:最小有效数据(字节) -
min_speed:最小速率(Mbps)
DEBUG:详细调试信息INFO:一般信息WARNING:警告信息ERROR:错误信息CRITICAL:严重错误
程序会将日志记录到logs目录下:
- 按日期命名日志文件(如
2026-01-06.log) - 每个文件最大10MB
- 自动轮转,保留最近7个日志文件
- 自动清理7天前的日志文件
-
Python 3.7+ - 主要开发语言
-
dnspython - DNS解析库
-
colorama - 终端颜色支持
-
prettytable - 表格格式化输出
-
psutil - 系统进程监控
A: 请检查以下几点:
- 网络连接是否正常
- DNS服务器是否可用
- 域名格式是否正确
- 尝试更换其他DNS服务器
A: 可能的原因:
- 目标IP不支持Ping(可能已禁用ICMP)
- 防火墙阻止了ICMP请求
- 网络连接不稳定
- 尝试增加ping_timeout参数
A: 建议:
- 增加test_duration参数值
- 在网络负载较低时测试
- 多次测试取平均值
- 检查是否有其他程序占用带宽
A: 有两种方式:
- 手动编辑:直接修改
config.json文件 - 程序内配置:使用菜单中的"配置测试参数"选项
修改后需要重启程序生效(除部分支持热重载的参数外)。
A: 开发者模式提供:
- 详细的调试日志
- 性能监控报告
- 代码执行时间统计
- 适合排查问题和性能优化
A: 程序支持多种导出方式:
- TXT格式:表格形式的文本报告
- CSV格式:逗号分隔值,可导入Excel
- hosts文件:自动生成并复制到剪贴板
A: 在配置菜单中选择"恢复默认配置"选项,确认后所有配置将重置为初始值。
DNS Network Tool采用模块化设计,主要包含以下核心模块:
- 主控制模块 (
main.py):程序入口点,负责协调各模块工作 - DNS解析模块 (
dns_utils.py):实现DNS解析功能,支持多服务器并行查询 - 网络测试模块 (
network_utils.py):提供Ping和速率测试功能 - 配置管理模块 (
config_utils.py):处理配置文件读写和参数管理 - 日志管理模块 (
log_utils.py):统一日志记录和管理 - 结果处理模块 (
result_utils.py):处理和导出测试结果 - 终端交互模块 (
terminal_utils.py):提供彩色终端输出和交互界面 - 会话管理模块 (
session_manager.py):管理HTTP会话和连接池 - 域名分析模块 (
domain_analyzer.py):分析域名和IP连接关系 - 性能监控模块 (
performance_monitor.py):监控程序性能指标
get_session_manager():单例模式管理HTTP会话create_process_manager():创建进程管理器实例
- 重试策略:指数退避重试机制
- 超时策略:自适应超时管理器
- 排序策略:多种结果排序模式(延迟优先、速率优先、平衡模式)
- 事件系统:支持插件钩子机制
- 日志系统:多级别日志输出
- 性能监控:实时监控各DNS服务器响应时间
- 熔断机制:对故障服务器实施熔断保护
- 负载均衡:根据服务器性能动态分配查询负载
- 故障转移:自动切换到备用DNS服务器
- 使用
concurrent.futures.ThreadPoolExecutor实现多线程并行解析 - 根据系统负载动态调整线程池大小
- 支持A记录和AAAA记录同时查询
- 根据历史响应时间动态调整超时阈值
- 分为5个等级:very_fast(0.8s)、fast(1.2s)、normal(2.0s)、slow(3.5s)、very_slow(5.0s)
- 优先使用ICMP raw socket(需要管理员权限)
- 降级到系统ping命令(跨平台兼容)
- 支持IPv4和IPv6双栈测试
- TCP/UDP协议支持
- 多服务器并行测试
- 自定义数据包大小和测试时长
- 实时速率计算和统计
- 输入验证:域名格式验证和预处理
- DNS解析:多服务器并行解析获取IP列表
- IP去重:合并相同IP,统计来源服务器
- 网络测试:对每个IP进行Ping和速率测试
- 结果排序:根据选择的策略排序结果
- 输出生成:生成表格、hosts文件或导出文件
- 动态调整:根据CPU核心数和系统负载动态调整线程池大小
- 负载均衡:根据系统当前负载计算最优线程数
- 资源监控:实时监控系统资源使用情况,避免过载
- 非阻塞操作:使用非阻塞I/O操作提高并发性能
- 事件驱动:基于事件的异步处理机制
- 连接复用:HTTP和TCP连接池复用,减少连接建立开销
- 域名批量解析:同时向多个DNS服务器发送解析请求
- IP批量测试:并行对多个IP进行网络测试
- 结果聚合:高效聚合和处理批量测试结果
- 对象池模式:复用频繁创建的网络连接对象
- 连接池管理:HTTP和TCP连接复用,减少内存分配
- 缓冲区复用:预分配固定大小缓冲区,避免频繁分配
- 及时释放:确保资源及时释放,避免内存泄漏
- 垃圾回收优化:合理管理对象生命周期,优化垃圾回收
- 缓存策略:智能缓存机制,平衡内存使用和性能
- 快速排序:使用优化的排序算法处理大量测试结果
- 多维度排序:支持按延迟、速率、稳定性等多维度排序
- 部分排序:仅对Top N结果进行完整排序,提高效率
- 哈希查找:使用字典和集合进行O(1)时间复杂度的快速查找
- 索引优化:为常用查询建立索引,提高查找效率
- 去重算法:高效的IP去重和合并算法
- 字典优化:使用高效的字典结构存储DNS解析结果
- 列表优化:优化列表操作,减少不必要的复制和移动
- 集合操作:使用集合进行高效的去重和交集操作
- TCP参数调优:优化TCP连接参数,提高传输效率
- 连接预热:预建立常用连接,减少连接建立时间
- Keep-Alive:使用长连接减少连接建立开销
- HTTP/1.1优化:使用连接复用和管道化请求
- 请求合并:合并相似请求,减少网络往返次数
- 压缩传输:对大数据量使用压缩传输
- CPU亲和性:优化线程与CPU核心的绑定
- I/O调度:优化磁盘I/O和网络I/O调度
- 内存分配:优化内存分配策略,减少碎片
- 实时监控:实时监控系统性能指标
- 性能分析:内置性能分析工具,识别性能瓶颈
- 调优建议:根据系统配置提供性能调优建议
- 自定义异常类:定义了多个专用异常类,如
DNSResolveException、NetworkTestException等 - 异常处理器:统一的
ExceptionHandler类处理所有异常 - 错误分类:根据错误类型进行分类处理和记录
- 模块级处理:各模块内部处理特定异常
- 服务级处理:服务层统一处理业务异常
- 应用级处理:应用层处理未捕获异常
- 动态重试:根据错误类型和重试次数动态调整重试间隔
- 最大重试次数:可配置的最大重试次数限制
- 退避因子:基于2的指数退避,避免服务器过载
- 网络错误重试:对网络超时、连接失败等错误进行重试
- DNS错误重试:对DNS解析超时等临时性错误进行重试
- 智能判断:根据错误类型智能判断是否需要重试
- 故障计数:统计服务器连续故障次数
- 熔断阈值:达到阈值后自动熔断服务器
- 半开状态:定时尝试恢复已熔断的服务器
- 快速失败:对已熔断服务器快速返回失败
- 自动恢复:定时尝试恢复,避免永久性故障
- 健康检查:对恢复的服务器进行健康检查
- 备用方法:主方法失败时自动切换到备用方法
- 功能降级:在部分功能失效时保持核心功能可用
- 数据降级:使用缓存数据或默认数据替代
- 请求限流:限制对单个服务器的请求频率
- 并发控制:控制并发连接数,防止服务器过载
- 队列管理:使用队列管理请求,避免突发流量
- DEBUG:详细调试信息,用于开发和调试
- INFO:一般信息,记录程序正常运行状态
- WARNING:警告信息,记录潜在问题
- ERROR:错误信息,记录错误但不影响程序运行
- CRITICAL:严重错误,记录导致程序异常的信息
- 时间戳:精确到毫秒的时间记录
- 模块信息:记录发生错误的模块和函数
- 上下文信息:包含错误发生时的上下文信息
- 堆栈跟踪:完整的错误堆栈信息
- ConnectionError:网络连接错误,尝试重连或切换服务器
- TimeoutError:网络超时,增加超时时间或重试
- ConnectionResetError:连接被重置,重新建立连接
- ConnectionRefusedError:连接被拒绝,检查服务器状态
- DNS解析失败:尝试其他DNS服务器或使用备用方法
- DNS服务器无响应:标记服务器为故障状态
- 域名格式错误:验证域名格式并提示用户修正
- 权限不足:提示用户以管理员权限运行
- 资源不足:降低并发数或释放部分资源
- 系统调用失败:使用备用方法或降级处理
- 连接重连:自动尝试重新建立断开的连接
- 服务重启:对临时性故障自动重启相关服务
- 配置重载:在配置错误时自动重载正确配置
- 状态重置:提供手动重置功能
- 服务重启:支持手动重启特定服务
- 配置重置:支持重置到默认配置
- 响应时间监控:监控各服务器响应时间
- 成功率统计:统计各功能的成功率
- 错误率监控:监控错误发生频率
- 阈值告警:超过阈值时触发告警
- 趋势告警:性能下降趋势告警
- 故障告警:服务不可用时立即告警
- 并发连接数:根据网络带宽和目标服务器性能调整
- DNS线程数:根据DNS服务器数量和响应速度调整
- 测试时长:平衡测试准确性和执行时间
- 域名列表格式:支持多种格式的域名输入
- 结果筛选:根据延迟、速率等指标筛选最优IP
- 自动化脚本:结合shell脚本实现自动化测试
- 开发者模式:启用详细日志和性能监控
- 自定义DNS服务器:添加私有或高性能DNS服务器
- IPv6优先:配置IPv6优先的解析策略
- ICMP Ping:需要管理员权限(Windows)或root权限(Linux/MacOS)
- Raw Socket:需要特殊权限进行网络操作
- 隐私保护:不收集或上传用户数据
- 本地处理:所有数据处理在本地完成
- 日志安全:敏感信息不会记录到日志中
- 合理使用:避免对目标服务器造成过大压力
- 频率限制:内置限流机制防止滥用
- 合规测试:仅对有权限的域名和IP进行测试
A: 请检查以下几点:
- 网络连接是否正常
- DNS服务器是否可用
- 域名格式是否正确
- 尝试更换其他DNS服务器
A: 可能的原因:
- 目标IP不支持Ping(可能已禁用ICMP)
- 防火墙阻止了ICMP请求
- 网络连接不稳定
- 尝试增加ping_timeout参数
A: 建议:
- 增加test_duration参数值
- 在网络负载较低时测试
- 多次测试取平均值
- 检查是否有其他程序占用带宽
A: 有两种方式:
- 手动编辑:直接修改
config.json文件 - 程序内配置:使用菜单中的"配置测试参数"选项
修改后需要重启程序生效(除部分支持热重载的参数外)。
A: 开发者模式提供:
- 详细的调试日志
- 性能监控报告
- 代码执行时间统计
- 适合排查问题和性能优化
A: 程序支持多种导出方式:
- TXT格式:表格形式的文本报告
- CSV格式:逗号分隔值,可导入Excel
- hosts文件:自动生成并复制到剪贴板
A: 在配置菜单中选择"恢复默认配置"选项,确认后所有配置将重置为初始值。
A: 建议配置:
- 增加ping_count(如20-50次)
- 延长test_duration(如30-60秒)
- 在网络空闲时段测试
- 多次测试取平均值
A: 批量处理建议:
- 分批处理域名(每次10-50个)
- 适当降低并发参数避免系统过载
- 使用文件导入方式输入域名
- 启用自动保存结果功能
-
Python 3.7+ - 主要开发语言
-
dnspython - DNS解析库
-
colorama - 终端颜色支持
-
prettytable - 表格格式化输出
-
psutil - 系统进程监控
MIT License
- 克隆项目到本地
- 创建虚拟环境:
python -m venv .venv - 激活虚拟环境:
source .venv/bin/activate(Linux/macOS) 或.venv\Scripts\activate(Windows) - 安装依赖:
pip install -r requirements.txt
- 遵循PEP 8代码风格
- 使用类型提示增强代码可读性
- 编写单元测试确保代码质量
- 提交前运行代码检查
- Fork项目
- 创建功能分支
- 提交更改
- 发起Pull Request
DNS Network Tool - 高性能域名解析与网络测试工具



