A Rust rule-based tunnel targeting to enduser for secure & reliable network access in high speed.
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
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
Need to copy the wintun.dll file which matches the system's architecture to
the same directory as jets.exe
and run as administrator.
-
Install protocol compiler by downloading a pre-built binary from Protocol Buffers releases.
-
Check and run the example code. e.g.
cargo run --example full
-
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 settarget-cpu=native
feature to letrustc
generate and optimize code for the specific CPU.export RUSTFLAGS="-C target-cpu=native"
- Shadowsocks using 2022 cipher only support 32 bytes length password
- 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.