jets
A Rust rule-based tunnel targeting to enduser for secure & reliable network access in high speed.
Features
This project is still in the very early development stage. Welcome anyone interested to join.
✅ Implemented 🚧 Under construction ❌ Not yet implemented
-
Inbound
- socks(✅ socks5, ❌ socks4)
- ✅ http
- ❌ tun
-
Outbound
- freedom
- socks(✅ socks5)
- vless(✅ v2fly, ✅ xtls)
- ✅ shadowsocks
- ❌ trojan
- ❌ vmess
-
Routing
- ✅ InboundTag, Ip, Domain
- ❌ source, protocol, balancerTag
- ✅ AsIs, ❌ IPIfNonMatch & IPOnDemand
-
DNS
- ✅ UDP
- ✅ DNS over TCP
- ❌ doh/doq/dot
-
Transport
- ✅ raw
- ✅ tls ❌ config, e.g. server name, certificate, ...
- ❌ reality
- ❌ http, websocket, gprc
-
Other
- ❌ Connection option, e.g. bind interface, tcp fast open, ...
- ❌ socks & http authentication
- ✅ UDP Full Cone
- ❌ fakedns
- ❌ more protocols & configurations
Getting Started
Create a Jets' configuration file named config.json. For detailed explanation of the configuration file could be found on the Wiki page. Then run the following command:
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 using 2022 cipher doesn't support password containing '-'.