netutils-cli-0.1.0 is not a library.
netutils — 本地网络检测工具集
一个用 Rust 编写的命令行网络检测工具,涵盖网络接口、路由、出口、代理检测,以及 Ping、DNS、Traceroute、端口扫描、连通性测试。
子命令一览
| 子命令 | 说明 | 示例 |
|---|---|---|
(无) |
显示全部网络信息 | netutils |
iface |
网络接口列表 | netutils iface |
egress |
流量出口 + 选路逻辑 | netutils egress |
route |
路由表 | netutils route |
proxy |
代理设置 | netutils proxy |
ping |
Ping 主机 (ICMP/TCP) | netutils ping baidu.com --count 4 |
dns |
DNS 查询 | netutils dns baidu.com --type mx |
trace |
路由追踪 | netutils trace baidu.com |
scan |
端口扫描 | netutils scan 192.168.1.1 80,443 |
check |
连通性测试 | netutils check https://baidu.com |
快速开始
# 编译
# 运行
# 查看帮助
功能详解
📡 网络信息检测
| 子命令 | 说明 |
|---|---|
netutils / all |
全部网络信息(接口 + 出口 + 路由 + 代理) |
iface |
网络接口列表(含物理/虚拟/VPN/TUN 类型识别、接口跃点) |
egress |
流量出口检测 + 选路逻辑说明 |
route |
路由表(默认路由优先) |
proxy |
代理设置(环境变量 + Windows 系统代理注册表) |
🏓 Ping
- ICMP ping(surge-ping),无权限时自动回退 TCP ping
- 自动 DNS 解析主机名
- 统计丢包率、最小/最大/平均延迟
🔍 DNS 查询
- 支持 A/AAAA/MX/CNAME/NS/TXT 六种记录类型
- 显示记录值和 TTL
🛤️ Traceroute
- TTL 递增探测路由路径,最大 30 跳
- 每跳 3 次探测,显示 IP 和延迟
- 使用 raw ICMP socket(socket2)
🔎 端口扫描
- 并发 TCP connect 扫描(100 并发)
- 默认扫描 20 个常见端口(FTP/SSH/HTTP/HTTPS/MySQL 等)
- 超时 1s,只显示开放端口
🔌 连通性测试
host:port→ TCP 连接延迟http(s)://url→ HTTP 状态码 + 响应时间- 支持连续测试模式
项目结构
netutils/
├── Cargo.toml
├── README.md
└── src/
├── main.rs # 入口:解析子命令,分发到各模块
├── cli.rs # 子命令定义(clap)
├── table.rs # 表格渲染(unicode-width 对齐)
├── info/
│ ├── mod.rs # 信息检测入口 + 全量输出
│ ├── interface.rs # 网络接口列表
│ ├── route.rs # 路由表
│ ├── egress.rs # 出口检测
│ └── proxy.rs # 代理检测
├── ping/mod.rs # Ping(ICMP/TCP)
├── dns/mod.rs # DNS 查询
├── traceroute/mod.rs # 路由追踪
├── portscan/mod.rs # 端口扫描
└── connectivity/mod.rs # 连通性测试
依赖
| 依赖 | 用途 |
|---|---|
clap |
子命令解析 |
unicode-width |
表格中英文混排对齐 |
tokio |
异步运行时 |
surge-ping |
ICMP ping |
trust-dns-resolver |
DNS 查询 |
socket2 |
raw socket (traceroute) |
reqwest |
HTTP 连通性测试 |
winreg (Windows) |
读取注册表系统代理设置 |
系统选路原理
Windows 选择出口接口时按以下顺序决策:
- 最长前缀匹配:目标 IP 先匹配最精确的路由条目
- 有效跃点比较:
有效跃点 = RouteMetric + InterfaceMetric,越低越优先 - 接口优先级:跃点相同时按接口绑定顺序决定
TUN/VPN 工具(如 Mihomo、Clash)通常在启动时将自己的 InterfaceMetric 设为 0,确保流量优先走虚拟网卡。
许可
MIT