众所周知之前的 macOS 需要用 RNDIS 驱动就得用 jwise/HoRNDIS 需要关闭 SIP ,还是很麻烦的。 但是实际上在用户态可以直接用 libusb 在用户态实现。
把实现目标说清楚直接交给 Opus5,一共用了两小时全部完成了。
用了一个 vivo 手机(USB 共享网络)测试和一个开发板( USB gadget )测试都是成功的
| 方案 | 能否纯用户态 | 门槛 | 语义层级 | 结论 |
|---|---|---|---|---|
| kext / NKE | ❌ | Apple 授予的 kext 签名 entitlement 或关 SIP | L2 | Apple Silicon 上实质不可行 |
NEPacketTunnelProvider |
✔ | 付费开发者账号 + entitlement + App bundle | L3 | 要自己实现 ARP/ND/DHCP |
utun |
✔ | root | L3 | 同上,且要自己拆装以太头 |
feth + BPF |
✔ | root | L2 | ✅ 本项目选择 |