jets
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:
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
-
Install protocol compiler by downloading a pre-built binary from Protocol Buffers releases.
-
Check and run the example code. e.g.
-
Build from source. Then
jetswill appear in./target/release/folder.cargo build --releasePS: If you are building
jetsfor your own CPU platform (for example, build and run on your PC only), it is recommended to settarget-cpu=nativefeature to letrustcgenerate and optimize code for the specific CPU.export RUSTFLAGS="-C target-cpu=native"
Limitation
- Shadowsocks with 2022 cipher only accepts 32 bytes length password.
- On Android, it cannot get system dns config which means config of
localhostin dns servers won't work. May refer to https://github.com/hickory-dns/hickory-dns/issues/652#issuecomment-1783178552 for possbile workaround.