GotaTun – Mullvad's WireGuard Implementation in Rust
71–80 of 142 posts
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#72Earlier quoted context omitted.
It became less of a choice for many after they sadly had to disable port forwarding.
Yeah, their reasoning is solid (easy to abuse) but it is still a very useful feature. AFAIK, at the moment your choices are AirVPN and ProtonVPN. AirVPN has static port forwarding and Proton has UPNP port forwarding.
I miss mullvad dearly, and I might try proton after my 3y sub is up.
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#73[flagged]
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#74Nice, I love WireGuard. I ended up building WrapGuard [1] to run applications without root access to the host and choose Go to write it in. I don't really know Rust, but does it make more sense for firmware/networking type software? Is there even a difference? 1. https://github.com/puzed/wrapguard
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#75[flagged]
They didn't. They forked an old unmaintained thing already written in rust to add new features...
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#76Nice, I love WireGuard. I ended up building WrapGuard [1] to run applications without root access to the host and choose Go to write it in. I don't really know Rust, but does it make more sense for firmware/networking type software? Is there even a difference? 1. https://github.com/puzed/wrapguard
Yes, lots of firmware runs on hardware where a GC doesn't make sense. Because of limited memory and performance constraints. Sometimes having predictable timings (i.e. not a GC with pauses) is nice. I believe compiler and library support is also just better for many embedded platforms in rust.
> networking type software
Rust is a much more aggressively optimizing compiler, and thus will typically be faster, in the places where that matters. GC pauses might also be a point against golang in some places here. Rust's idioms provide slightly less opportunity for bugs in places where reliability matters (e.g. having a type system that requires you check for errors instead of just patterns that encourage it).
So there's a difference, but generally go is a good enough language for networking software and it would be rare that I wouldn't suggest that "use what you know" is more important than the differences between the languages for non-firmware network software.
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#77Nice, I love WireGuard. I ended up building WrapGuard [1] to run applications without root access to the host and choose Go to write it in. I don't really know Rust, but does it make more sense for firmware/networking type software? Is there even a difference? 1. https://github.com/puzed/wrapguard
One usecase I've always wanted is being able to combine multiple tunnels into one shared connection, for instance airVPN allows 5 simultaneous users per sub, it would be awesome if I could run 5x connections and combine their traffic, but I dunno how I would do this with wg / nmcli
Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#78Re: GotaTun – Mullvad's WireGuard Implementation in Rust
#79I definitely noticed the performance boost on my Pixel 8, for some reason it seems to really not like wireguard-go, it struggled to pull even 100mbps, maybe something unoptimized on Google's custom hardware. With the new GotaTun version I can pull 500mbps+, though unfortunately it also seems to have introduced a bug that randomly prevents the phone from entering a deep sleep state, so occasionally my battery will ran…
MTU strikes again. 1320.