Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Add Support For WireGuard Over Shadowsocks (or other obfuscation protocols) #1049

Open
ProgressiveArchitect opened this issue Aug 19, 2019 · 21 comments
Labels
feature request For issues asking for new features

Comments

@ProgressiveArchitect
Copy link

ProgressiveArchitect commented Aug 19, 2019

Currently, there is in-app support for Shadowsocks being used as multi-hop to connect to OpenVPN servers. I'd like to see the same support available when connecting to WireGuard servers.

@ProgressiveArchitect ProgressiveArchitect changed the title Add Support For WireGuard Over Shadowsocks [Feature Request] Add Support For WireGuard Over Shadowsocks Aug 25, 2019
@faern
Copy link
Member

faern commented Aug 28, 2019

This is blocked on the fact that WireGuard currently can't operate over TCP and Shadowsocks can't really relay UDP. But yes, using bridges with WireGuard connections is surely a desired feature, so it's something we will work on when there is time.

@faern
Copy link
Member

faern commented Aug 29, 2019

Let's keep the issue open. It's something we want to implement. If it's open other people might see it easier and not create duplicate issues.

@faern faern reopened this Aug 29, 2019
@maximbaz
Copy link

This is blocked on the fact that WireGuard currently can't operate over TCP and Shadowsocks can't really relay UDP

According to the usage page, Shadowsocks does support relaying UDP, see -u (Enable UDP relay) and -U (Enable UDP relay and disable TCP relay).

Does this mean this could potentially be implemented now, or there is more to this?

@PacoBell
Copy link

PacoBell commented Apr 3, 2020

@faern Any comment on the apparent removal of this blocker? I've seen evidence of folks getting this working on their own single VPS instances. Someone just needs to code the backend now to glue it all together.

@ProgressiveArchitect
Copy link
Author

@faern It looks like ShadowSocks can be routed over UDP now. So any updates for implementing this on WireGuard?

@faern
Copy link
Member

faern commented Apr 6, 2020

Last time I checked it was not using purely UDP. Even if you enable the UDP relaying it was handshaking over TCP. But that might have changed. Please also note that we use the shadowsocks-rs Rust implementation in this VPN app, so it has to be supported there for us to use it. Changing which Shadowsocks implementation we use would be a bigger task.

@faern faern added the feature request For issues asking for new features label Feb 26, 2021
@aveao
Copy link

aveao commented Mar 25, 2021

A year later, shadowsocks-rs has a "udp_only" mode and it's possible to relay wireguard traffic through it.

So, any updates?

@faern
Copy link
Member

faern commented Mar 26, 2021

We are currently working looking at ways of tunneling WireGuard etc. But we are currently not looking at shadowsocks. Thanks for the update on their UDP only support.

@faern faern changed the title [Feature Request] Add Support For WireGuard Over Shadowsocks [Feature Request] Add Support For WireGuard Over Shadowsocks (or other obfuscation protocols) Jun 11, 2021
@whywhah
Copy link

whywhah commented Mar 11, 2022

It's been another year and Wireguard still has no Shadowsocks or other UDP tunneling. Just a reminder that this feature is still pretty much needed.

@faern
Copy link
Member

faern commented Mar 14, 2022

This is being actively worked on. Good timing on your question as we will likely merge the initial support for WireGuard obfuscation very soon.

@ProgressiveArchitect
Copy link
Author

@faern I've noticed your language shift from "shadowsocks" to "obfuscation". Does this mean that the Mullvad devs intend to utilize a different obfuscation protocol? If so, which protocol is being looked at as most likely to be implemented with UDP in mind?

@faern
Copy link
Member

faern commented Mar 25, 2022

We shift the language because our obfuscation support is not only for Shadowsocks. We recently merged (#3431) a new "obfuscation engine" or whatever you want to call it, for our WireGuard connections. This is a framework in mullvad-daemon that allows it to connect WireGuard over any proxy implementation that can listen to a localhost UDP port and in some way send that obfuscated over the network.

Currently the only supported protocol is udp-over-tcp. This allows connecting to WireGuard servers using TCP. We supported this before the mentioned PR, but then we modeled it differently internally, now it's classified as an obfuscation protocol instead.

Shadowsocks is likely going to be the next protocol added to this new obfuscation framework of ours. But it's not 100% decided upon yet.

You configure what obfuscation WireGuard should use via the CLI command mullvad obfuscation. This has not been released yet, but if you build from the latest source code you can see this subcommand.

@PragmaTwice
Copy link

PragmaTwice commented Dec 3, 2022

Hi, any updates here?

I want to try mullvad but I am live in a country where bridge mode is needed in my phone (I know that I can use mullvad with shadowsocks app manually, but it will be more complex than other VPN solutions).

Bridge mode on phone app will hugely facilitate many people like me and make mallvad a more good choice.

@faern
Copy link
Member

faern commented Dec 16, 2022

Hi @PragmaTwice.

WireGuard over TCP has been in the desktop app for a while now. Not yet on mobile, it's in the backlog.
We are also looking at enabling custom proxies for WireGuard for desktop. But nothing on using our own bridges yet. However, this is more at the idea stage than implementation stage so far sadly.

@Pilaton
Copy link

Pilaton commented Jul 10, 2023

Is there any news?

@faern
Copy link
Member

faern commented Jul 11, 2023

Not really. What I can say is that it's being frequently discussed as an anti-censorship measure we want to add. But it's not currently at the top of the pile. So other anti-censorship measures will be implemented during Q3.

@Panuchi
Copy link

Panuchi commented Aug 16, 2023

Any news here?

@Cohenl19
Copy link

Cohenl19 commented Feb 3, 2024

Hey any updates? It's 2024 and still wondering if there are ways to use Wireguard let's say at a school or library that would otherwise block the VPN connection. I've used shadowsocks before and I liked it, I just wasn't much of a fan of needing to use OpenVPN

@duxsco
Copy link

duxsco commented Oct 21, 2024

fyi, the release android/2024.5 features Wireguard over Shadowsocks, but doesn't mention whether UDP is used. At least, there are Shadowsocks bridges that run over UDP:

❯ curl -fsS https://api.mullvad.net/app/v1/relays | jq .bridge.shadowsocks
[
  {
    "protocol": "tcp",
    "port": 443,
    "cipher": "aes-256-gcm",
    "password": "mullvad"
  },
  {
    "protocol": "udp",
    "port": 1234,
    "cipher": "aes-256-cfb",
    "password": "mullvad"
  },
  {
    "protocol": "udp",
    "port": 1236,
    "cipher": "aes-256-gcm",
    "password": "mullvad"
  }
]

@duxsco
Copy link

duxsco commented Oct 21, 2024

Now, I use version 2024.6-beta2 on Linux, and Wireguard with obfuscation via Shadowsocks over UDP works.

@Serock3
Copy link
Contributor

Serock3 commented Nov 5, 2024

🎉 🥷 WireGuard over Shadowsocks has been released for desktop and Android 🥷 🎉

It's coming to iOS sometime later, I'll close this issue when that happens.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request For issues asking for new features
Projects
None yet
Development

No branches or pull requests

13 participants