netutils-cli 0.2.1

本地网络检测工具集:网络接口、路由、出口、代理检测,Ping、DNS、Traceroute、端口扫描、连通性测试
# netutils — 本地网络检测工具集

[English](README_EN.md) | 中文

---

一个用 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` |
| `diag` | 一键诊断 | `netutils diag` |

### 快速开始

```bash
# 编译
cargo build --release

# 运行
./target/release/netutils

# 查看帮助
./target/release/netutils --help
```

### 一键诊断

```bash
$ netutils diag

🔍 网络诊断报告  2026-06-25 14:30:00

  ✅ [出口] 网络连接正常 (出口: 以太网 192.168.50.4)
  ✅ [国内 DNS] DNS 解析正常 (baidu.com → 111.63.65.247, 45ms)
  ✅ [国际 DNS] DNS 解析正常 (google.com → 142.250.69.174, 180ms)
  ✅ [网关] 默认网关可达 (192.168.50.1, 0.5ms)
  ⚠️  [代理] 系统代理已启用 (127.0.0.1:7897)
  ✅ [国内连通] HTTPS 连通正常 (baidu.com → 200, 54ms) [经代理]
  ✅ [国际连通] HTTPS 连通正常 (google.com → 200, 1096ms) [经代理]
  ❌ [IPv6] IPv6 不可用

  诊断耗时: 8.2s
```

### 核心特性

- **国际化**: 自动检测系统语言(中英文),`--lang zh|en` 可覆盖
- **JSON 输出**: `--json` 全局参数,所有子命令支持,便于脚本处理
- **颜色高亮**: 出口绿色、错误红色、虚拟网卡黄色
- **命令别名**: `i`/`e`/`r`/`p`/`pg`/`d`/`t`/`s`/`c`/`dx`
- **跨平台**: Windows (PowerShell)、Linux (`ip`)、macOS (`ifconfig`)
- **系统代理感知**: HTTP 检测自动走系统代理,标注 `[经代理]`/`[直连]`
- **出口检测**: UDP 探测识别实际流量出口 + 解释选路逻辑
- **端口范围语法**: `netutils scan host 80-100,443,8080-8090`

### 系统选路原理

Windows 选择出口接口时按以下顺序决策:

1. **最长前缀匹配**:目标 IP 先匹配最精确的路由条目
2. **有效跃点比较**`有效跃点 = RouteMetric + InterfaceMetric`,越低越优先
3. **接口优先级**:跃点相同时按接口绑定顺序决定

TUN/VPN 工具(如 Mihomo、Clash)通常在启动时将自己的 `InterfaceMetric` 设为 0,确保流量优先走虚拟网卡。

### 许可

MIT