- 🌈 Flexible traffic routing rules based off source/destination IP/Domain/GeoIP etc.
- 📦 Local anti spoofing DNS with support of UDP/TCP/DoH/DoT remote, and expose it as a local UDP/TCP/DoH/DoT server.
- ⚙️ AnyTLS/Hysteria2/Shadowquic/Shadowsocks/Socks5(TCP/UDP)/SSH/Tailscale/tor(onion)/Trojan/Tuic/VLess/Vmess/Wireguard(userspace) outbound support with different underlying transports(gRPC/TLS/H2/WebSocket/etc.).
- 🔀 Multiple inbound modes: HTTP, SOCKS5, Mixed, Shadowsocks, Redir, TProxy, and TUN (utun) for transparent proxying.
- 🌍 Dynamic remote rule/proxy loader.
- 🎵 Tracing with Jaeger
| Type | Description | Notes |
|---|---|---|
http |
HTTP proxy | |
socks |
SOCKS5 (TCP + UDP) | |
mixed |
HTTP + SOCKS5 on a single port | |
shadowsocks |
Shadowsocks inbound with multi-user support | shadowsocks feature |
tun |
TUN device for transparent proxying | All platforms |
tproxy |
Transparent proxy (TCP + UDP) | Linux; tproxy feature |
redir |
TCP redirect | Linux; redir feature |
tunnel |
Routes all traffic to a fixed target |
| Protocol | Transports | Notes |
|---|---|---|
direct |
— | |
reject |
— | |
ss |
plain · obfs-http · obfs-tls · v2ray-plugin-ws · v2ray-plugin-ws-tls · shadow-tls | shadowsocks feature |
socks5 |
plain TCP · TLS | |
anytls |
TLS | |
trojan |
TLS · WebSocket+TLS · gRPC+TLS | |
vmess |
TCP · TCP+TLS · WebSocket+TLS · H2+TLS · gRPC+TLS | |
vless |
TLS · WebSocket+TLS · H2+TLS · gRPC+TLS · REALITY | |
wireguard |
UDP (userspace) | wireguard feature |
hysteria2 |
QUIC · obfs-salamander | |
tuic |
QUIC (bbr / cubic / new_reno) | tuic feature |
shadowquic |
QUIC · over-stream | shadowquic feature |
ssh |
SSH tunnel | ssh feature |
tor |
Onion routing | onion feature (plus build) |
tailscale |
Mesh VPN | tailscale feature (plus build) |
- Linux
- macOS
- Windows
- You need to copy the wintun.dll file which matches your architecture to the same directory as your executable and run your program as administrator.
- iOS
- TestFlight Access: TestFlight
https://github.com/LibNyanpasu/clash-nyanpasu
Can be found at https://github.com/Watfaq/clash-rs/releases
https://github.com/Watfaq/clash-rs/pkgs/container/clash-rs
Dependencies
- cmake (3.29 or newer)
- libclang(LLVM)
- nasm (Windows)
- protoc(for geodata proto generation)
- pre-commit for managing git hooks
$ pipx install pre-commit
$ pre-commit install
$ cargo build
sample.yaml:
port: 7890-> % ./target/debug/clash-rs -c sample.yaml-> % ./target/debug/clash-rs -h
Usage: clash-rs [OPTIONS]
Options:
-d, --directory <DIRECTORY> Set working directory (config-relative paths resolve from here)
-c, --config <FILE> Specify configuration file [default: config.yaml] [short aliases: f]
-t, --test-config Test configuration and exit
-v, --version Print clash-rs version and exit [short aliases: V]
-l, --log-file <LOG_FILE> Additionally log to file
--help-improve Enable crash report to help improve clash
--controller-ipc <IPC_PATH> Specify the IPC path for the controller [aliases: --ext-ctl-pipe, --ext-ctl-unix]
--compatibility Enable compatibility mode for mihomo-consistent behavior
-h, --help Print helpTo create a framework for iOS and macOS platforms
git clone https://github.com/Watfaq/clash-rs.git
cd clash-rs
chmod +x scripts/build_apple.sh
./scripts/build_apple.shThis command will generate a clashrs.xcframework file in the build directory.
