onetun
ini
Our great sponsors
onetun | ini | |
---|---|---|
9 | 2 | |
794 | 3,394 | |
- | 0.4% | |
7.6 | 0.0 | |
3 months ago | 8 months ago | |
Rust | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
onetun
-
A userspace WireGuard client that exposes itself as a proxy
Plug for my own similar project: https://github.com/aramperes/onetun
Though admittedly, mine doesn't have SOCKS support, and the code is not as lean as yours!
Sure, essentially it's a TCP and UDP server that:
- receives connections and assigns a random internal port for it
- wraps the data packets in a transport packet (TCP/UDP)
- wraps the transport in an IP packet that's routed from the internal port and to the remote WireGuard address
- wraps that with WireGuard's protocol (encryption)
- sends off the encrypted packet to the WireGuard UDP endpoint
The packet-wrapping and state machine for the connection is implemented using smoltcp in Rust, which is similar to netstack in Go
The WireGuard encapsulation and state machine is implemented with boringtun, Cloudflare's implementation of the WireGuard client in Rust.
I do have a more thorough architecture explanation in the Readme: https://github.com/aramperes/onetun#architecture
- Show HN: Onetun, a cross-platform WireGuard port-forwarder
-
onetun: Cross-platform, user-space WireGuard port-forwarder
It's in the plans! I'm going to finish UDP support and multi-port forwarding first and then I'll get to it: https://github.com/aramperes/onetun/issues/6
ini
What are some alternatives?
toml - Instream TOML to JSON encoder
env - A simple and zero-dependencies library to parse environment variables into structs
viper - Go configuration with fangs
go-toml - Go library for the TOML file format
config - JSON or YAML configuration wrapper with convenient access methods.
goConfig - goconfig uses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
kelseyhightower/envconfig - Golang library for managing configuration data from environment variables
konfig - Composable, observable and performant config handling for Go for the distributed processing era
store - A dead simple configuration manager for Go applications
comment - Golang package for use comments in JSON config files
tunsocks - User-level IP forwarding, SOCKS proxy, and HTTP proxy for VPNs that provide tun-like interface
wireproxy - Wireguard client that exposes itself as a socks5 proxy