onetun
tunsocks
Our great sponsors
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
- WireGuard client that exposes itself as a HTTP/SOCKS5 proxy
-
A userspace WireGuard client that exposes itself as a proxy
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
-
Remote access without port forwarding?
If you use WireGuard instead of Tinc, you can use onetun which is specifically designed for doing this: https://github.com/aramperes/onetun
- aramperes/onetun - Access your WireGuard network from any device, without root access or having to install WireGuard locally
-
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
- Cross-platform, user-space WireGuard port-forwarder that requires no system network configurations.
- Show HN: Onetun, a cross-platform WireGuard port-forwarder
tunsocks
- A userspace WireGuard client that exposes itself as a proxy
-
SSH and User-Mode IP WireGuard
tunsocks[0] might be of interest to you. It's very similar to the software mentioned by OP except in C. It uses the lwIP usermode tcp/ip stack. It doesn't itself have any VPN or tunneling support, but instead relies on raw packets being passed into and out of a pipe. It can then provide access to that network via various proxies, port forwards, and even raw packets via NAT (very useful for VMs).
What are some alternatives?
wireproxy - Wireguard client that exposes itself as a socks5 proxy
wireguard-go - Mirror only. Official repository is at https://git.zx2c4.com/wireguard-go
esp_wireguard - WireGuard Implementation for ESP-IDF
ini - Package ini provides INI file read and write functionality in Go
tailscale - The easiest, most secure way to use WireGuard and 2FA.
systemd - The systemd System and Service Manager
wireguard-vyatta-ubnt - WireGuard for Ubiquiti Devices
slirpnetstack - slirp4netns implementation using gvisor/netstack