# rust-iproute2 [English](README.md) | [中文](README.zh-CN.md) 跨平台的 `ip` / `bridge` / `ss` 命令, 把 Linux iproute2 的命令体验统一带到 **macOS / Windows / Linux**,三平台用法与输出对齐真实 Linux iproute2。 ## 安装 **macOS(Homebrew)** ```bash brew tap hhktony/rust-iproute2 brew install rust-iproute2 ``` **Windows(Scoop / Winget)** ```powershell scoop bucket add hhktony https://github.com/hhktony/scoop-rust-iproute2 scoop install rust-iproute2 # 或 winget install hhktony.rust-iproute2 ``` **任意平台(mise)** ```toml # ~/.config/mise/config.toml [tools] "github:hhktony/rust-iproute2" = { version = "0.1.0", exe = "ip" } ``` > 同一 release 装多个二进制(`bridge`/`ss`)的 mise 支持仍在演进 > (见 [jdx/mise#8266](https://github.com/jdx/mise/discussions/8266)); > `bridge`/`ss` 暂用 Homebrew/Scoop 或源码构建。 **从源码**:见下方「构建」段。安装后 `ip` / `bridge` / `ss` 三命令均可用。 ## 设计 - **包装系统命令**:不依赖 netlink/FFI,调用各平台原生命令并解析。 - **Linux**:透传系统真 `ip`/`ss`/`bridge`(输出即黄金标准)。 - **macOS**:包装 `ifconfig`/`netstat`/`ndp`/`arp`/`route`/`networksetup`。 - **Windows**:包装原生命令 `ipconfig /all`、`route print`、`netstat -ano`、`arp -a`(按值形态 locale 无关解析)。 - **架构**:`core` 库(数据模型 + 格式化器 + 分发,平台无关)+ 平台 `Provider`。 macOS/Windows 共用同一套格式化器,输出一致由架构保证。 ## 构建 ```bash cargo build --release # 产出 target/release/{ip,bridge,ss} cargo test # 运行全部测试 ``` ## 支持的命令 ```bash # Link(接口) ip link ip -br link ip link show en0 ip link set dev en0 up # 需 root(macOS 自动 sudo) ip link set dev en0 mtu 9000 ip link set dev en0 address random|factory| # Address ip addr ip -4 addr ip -br addr ip addr add 10.0.0.5/24 dev en0 ip addr del 10.0.0.5 dev en0 # Route ip route ip -6 route ip route get 8.8.8.8 ip route add 192.168.0.0/16 via 10.0.0.1 ip route del 192.168.0.0/16 ip route flush table main # Neighbour(ARP/NDP) ip neigh ip -4 neigh ip neigh show dev en0 ip neigh flush dev en0 # Bridge bridge link bridge link show dev en2 # Socket statistics ss ss -t -a ss -nat ss -s # 通用选项 -j[son] -p[retty] -c[olor][=always|auto|never] -br[ief] -o[neline] -4 -6 ``` 命令、子命令、长选项均支持 iproute2 风格的无歧义前缀缩写 (`ip a`、`ip ro`、`ss -nat` 等)。 ## 提权 写操作需管理员权限:**macOS 自动加 `sudo`**(弹密码);**Linux** 透传原生(非 root 时底层报错);**Windows** 需在管理员终端运行。 ## 许可 MIT