Skip to content

zhangsan946/jets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, ❌ socks4)
    • ✅ 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 using 2022 cipher only support 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 hickory-dns/hickory-dns#652 (comment) for possbile workaround.

Credits

  1. shadowsocks-rust
  2. v2ray-rust
  3. Xray-core
  4. leaf

About

A Rust rule-based tunnel

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages