IPtools 网络工具箱:Android 开源网络诊断工具,集成 Ping/端口扫描/路由追踪等 13 项功能
在日常开发和运维工作中,网络诊断工具几乎是每个人的必备品。但手机上能用的网络工具类 App 往往功能单一——有的只能 Ping,有的只能查 IP,很难找到一个能覆盖大部分网络诊断场景的集成工具。
IPtools(网络工具箱) 正是为解决这个痛点而生的开源 Android 应用。
项目地址:https://github.com/xin-521/IPtools

一、项目概览
IPtools 是一个纯 Kotlin 开发的 Android 网络工具集合应用,代码包名为 org.zeroxin.iptools,应用名称为"网络工具箱"。它把开发者/运维人员日常使用频率最高的网络诊断功能整合到一个 App 中,覆盖从基础连通性测试到高级端口扫描的完整链路。
当前版本 v1.1,目标 SDK 34(Android 14),最低支持 Android 7.0(API 24)。
为什么值得关注?
如果你是 Android 开发者,这个项目的代码质量、架构选型和技术栈都是一份很好的 MVVM + Hilt + Room + DataStore 参考实现。如果你只是用户,它可以替代手机上多个单一功能的网络工具。
二、完整功能清单
IPtools 内置了 13 项网络工具,分为基础工具和高级工具两大类。
基础网络工具(日常诊断)
| 工具 | 功能说明 |
|---|---|
| 我的 IP | 查看本机公网 IP、归属地、ISP、ASN、经纬度,支持在地图上定位 |
| 局域网信息 | 显示当前 WiFi 连接详情:SSID、BSSID、信号强度、频率、网关、子网掩码、DNS 服务器、DHCP 信息 |
| Ping 工具 | 测试网络连通性与延迟,支持自定义包数量、超时时间和包大小,提供连续 Ping 模式 |
| 路由追踪 | Traceroute,显示每一跳的 IP 和 RTT(三次探测),支持最大 30 跳 |
高级网络工具(深度诊断)
| 工具 | 功能说明 |
|---|---|
| 端口扫描 | TCP Connect 扫描,三种模式:快速扫描(23 个常用端口)、自定义端口范围、全端口扫描(1-65535,100 端口并行分批) |
| 局域网扫描 | 扫描局域网内 1-254 所有设备,检测 IP、MAC 地址、主机名、厂商信息(支持 Apple、小米、华为、Raspberry Pi、Espressif 等主流 OUI 识别) |
| DNS 查询 | 支持 A/AAAA/MX/NS/TXT/CNAME 多种记录类型查询 |
| DNS 基准测试 | 对比测试多个 DNS 服务器的解析速度 |
| Whois 查询 | 查询域名注册信息:注册商、创建/到期日期、域名服务器等 |
| SSH 工具 | 内置 SSH 客户端(基于 JSch 库),可直接连接远程服务器 |
| 网络测速 | 测试网络下载和上传速度 |
| 子网计算器 | 输入 IP/掩码,自动计算网络地址、广播地址、可用主机范围 |
| MAC OUI 查询 | 根据 MAC 地址前缀查询设备厂商 |
| Wake-on-LAN | 远程唤醒局域网设备 |
辅助功能
- IP 地图:在 Leaflet WebView 地图上可视化显示 IP 位置
- 设置面板:自定义 Ping 参数、扫描并发数、测速 URL、主题模式(亮色/暗色)
- 历史记录和收藏:使用 Room 数据库保存查询历史和收藏,方便重复使用
三、技术栈与架构分析
从 Android 开发角度看,IPtools 的技术选型是现代 Android 开发的典型范本。
整体架构:MVVM
1 | View (Fragment) → ViewModel → Repository → DataSource (Room/OkHttp/DataStore) |
- View 层:基于 Android View System(XML 布局 + ViewBinding),使用 BottomNavigationView 构建底部导航
- 导航:Navigation Component + nav_graph.xml 集中管理 Fragment 路由
- ViewModel:每个工具对应一个 ViewModel,持有协程作用域,通过 LiveData 向 UI 层暴露状态
- Data 层:Room 数据库(query_history + favorites 两张表)、Jetpack DataStore(用户设置持久化)、OkHttp/Retrofit(网络 API)
关键技术组件
| 类别 | 选型 | 用途 |
|---|---|---|
| 语言 | Kotlin | 100% Kotlin,无 Java 混编 |
| DI | Hilt(Dagger + KSP) | 3 个 Module:AppModule、NetworkModule、ToolModule |
| 网络 | OkHttp + Retrofit + Gson | 调用 IP API、JSON 解析 |
| 数据库 | Room + KSP | 查询历史和收藏持久化 |
| 存储 | Jetpack DataStore Preferences | 设置项持久化 |
| 异步 | Kotlin Coroutines | 所有网络请求和工具执行均在 IO 调度器 |
| SSH | JSch (0.2.16) | SSH 客户端连接 |
| 地图 | Leaflet.js(WebView) | IP 位置可视化 |
值得关注的代码细节
依赖注入设计的 ToolModule:所有工具类(PingTool、PortScanner、TracerouteTool 等)均注册为 @Singleton,由 Hilt 统一管理生命周期。
PortScanner 的分批并行扫描:全端口扫描时按 100 端口一批分组,每组内通过 async/awaitAll 并发扫描,兼顾速度与资源控制。
PingTool 的双层策略:优先使用 Java InetAddress.isReachable() 实现跨平台兼容,同时保留 pingWithSystem() 回退到系统原生 ping -c 命令获取更准确的 ICMP 结果。
LanScanner 的 OUI 识别:内置了 Apple、小米、华为、三星、Raspberry Pi、Espressif(乐鑫)、TP-Link 等主流厂商的 MAC OUI 数据库,无需联网即可识别设备厂商。
IP 后端 API:使用 https://my.ippure.com/v1/info 作为 IP 查询接口(非 ip-api.com),说明开发者拥有独立的后端能力。
项目结构
1 | app/src/main/ |
四、安装与构建
直接安装
这是 Android 原生应用,需要下载 APK 文件安装到 Android 设备上。请在项目的 GitHub Releases 页面 查看是否有已构建的 APK。
自行构建
如果你有 Android 开发环境,可以自行编译:
环境要求:
- Android Studio Arctic Fox 或更高版本
- JDK 11+
- Android SDK 34
构建步骤:
1 | git clone https://github.com/xin-521/IPtools.git |
构建产物为 app/build/outputs/apk/ 目录下的 NetworkTools-1.1-debug.apk。
所需权限
App 仅申请网络相关的最基本权限:
- INTERNET — 网络访问
- ACCESS_NETWORK_STATE — 查看网络状态
- ACCESS_WIFI_STATE — 查看 WiFi 信息
- CHANGE_WIFI_STATE — 修改 WiFi 状态(WOL 功能需要)
- CHANGE_NETWORK_STATE — 修改网络状态
未申请任何敏感权限(如位置、相机、存储),隐私保护做得比较干净。
五、适用场景
IPtools 的核心用户群体很明确——开发者、运维人员、网工和 IT 爱好者。
典型使用场景包括:
- 日常网络排查:检查本机 IP、Ping 目标、路由追踪定位丢包节点
- 内网运维:局域网扫描发现设备、端口扫描检查服务暴露情况、SSH 直连服务器
- 域名管理:DNS 查询验证解析记录、Whois 查询域名注册信息、DNS 基准测试选最快的 DNS
- 网络规划:子网计算器快速计算 CIDR 范围、广播地址
- 远程管理:Wake-on-LAN 开机、SSH 远程维护
六、总结
IPtools 的价值在于"集成"二字。当手机上一个 App 就能完成 Ping、端口扫描、路由追踪、Whois、SSH 等一系列操作时,工作效率的提升是很明显的。从工程角度看,它的代码质量在线——MVVM 架构清晰,Hilt + Room + DataStore 的选型符合当前 Android 开发主流标准,工具类的设计和并发控制也有值得参考的地方。
如果你需要一款全功能的网络诊断 App,或者正在学习 Android 开发中的 MVVM + Hilt 实践,这个项目都值得看一看。