jets

Crates.iojets
lib.rsjets
version0.4.3
created_at2025-01-30 11:38:37.477863+00
updated_at2025-07-20 12:20:28.571622+00
descriptionA Rust rule-based tunnel
homepagehttps://github.com/zhangsan946/jets
repositoryhttps://github.com/zhangsan946/jets
max_upload_size
id1536261
size457,809
Zhang San (zhangsan946)

documentation

https://docs.rs/jets

README

jets

Release crates.io docs.rs

A Rust rule-based tunnel targeting to enduser for secure & reliable network access in high speed.

Features

This project still has many features to be implemented. Welcome anyone interested in this project to PR to accelerate.

✅ Implemented 🚧 Partial Implemented ❌ Not yet implemented

  • Inbound

    • socks(✅ socks5, ✅ socks4a)
    • ✅ http
    • ✅ tun
  • Outbound

    • ✅ freedom
    • ✅ blackhole
    • socks(✅ socks5)
    • vless(✅ v2fly, ✅ xtls-vision)
    • ✅ shadowsocks
    • ✅ trojan
    • ❌ vmess
  • Routing

    • ✅ InboundTag, Ip, Domain
    • ❌ source, protocol, balancerTag
    • ✅ AsIs, IPIfNonMatch, IPOnDemand
  • DNS

    • ✅ UDP
    • ✅ DNS over TCP
    • ❌ doh/doq/dot
  • Transport

    • ✅ raw/tcp
    • ✅ tls
    • ✅ websocket
    • ❌ reality
    • ❌ http, gprc, xhttp, ...
  • Other

    • ✅ Connection option, e.g. bind interface, tcp fast open, ...
    • ✅ UDP Full Cone
    • ✅ Connection retry logic
    • ✅ socks & http authentication
    • 🚧 tls config, e.g. server name, certificate, ...
    • ❌ fakedns
    • ❌ more protocols & configurations

Getting Started

Create a Jets' configuration file named config.json. Detailed explanation of the configuration file could be found on the Wiki page. Then run the following command:

jet -c config.json

Use tun inbound on Windows

Need to copy the wintun.dll file which matches the system's architecture to the same directory as jets.exe and run as administrator.

Development

  1. Install protocol compiler by downloading a pre-built binary from Protocol Buffers releases.

  2. Intall Rust 1.80.0+.

  3. Check and run the example code. e.g.

    cargo run --example full
    
  4. Build from source. Then jets will appear in ./target/release/ folder.

    cargo build --release
    

    PS: If you are building jets for your own CPU platform (for example, build and run on your PC only), it is recommended to set target-cpu=native feature to let rustc generate and optimize code for the specific CPU.

    export RUSTFLAGS="-C target-cpu=native"
    

Limitation

  1. Shadowsocks with 2022 cipher only accepts 32 bytes length password.
  2. On Android, it cannot get system dns config which means config of localhost in dns servers won't work. May refer to https://github.com/hickory-dns/hickory-dns/issues/652#issuecomment-1783178552 for possbile workaround.

Credits

  1. shadowsocks-rust
  2. v2ray-rust
  3. Xray-core
  4. leaf
Commit count: 36

cargo fmt