So server2 terminates the request twice? One for server1 and another time for the client who generated the request? I don't understand how it's possible for server1 to not be exposed to the data.
So server2 terminates the request twice? One for server1 and another time for the client who generated the request? I don't understand how it's possible for server1 to not be exposed to the data.
> It’s a WireGuard tunnel being sent inside another WireGuard tunnel
Edit: replaced with a better diagram (and again, now based on example in [0]):
▼ ▼ ▼ ▼
YOU->NL1 tunnel SE4->NL1 tunnel PLAIN/TLS
YOU ────────────────────► SE4 ───────────────────► NL1 ───────────────► CATPICS.COM
On the wire: YOU->SE4 traffic SE4->NL1 traffic NL1->CATPICS.COM traffic
┌────────────────┐ ┌────────────────┐ ┌──────┐
Inside: │YOU->NL1 traffic│ │YOU->NL1 traffic│ │ DATA │
└────────────────┘ └────────────────┘ └──────┘
[0] https://mullvad.net/en/help/wireguard-and-mullvad-vpn/- the WireGuard public key for server 2
- the IP address for server 1
- a unique port for server2 on server 1
So all they're doing is a standard iptables redirect to the second host (which may or may not itself be under a WireGuard tunnel).
I replaced the diagram in the previous comment, take a look.
The guide at https://mullvad.net/en/help/wireguard-and-mullvad-vpn/ only talks about how the config files does it. Which is completely different from how the app does it!
But the app actually has a wg tunnel inside another wg tunnel. If you (on Linux) run `wg` (as root) in a terminal when it's connected with multihop you will see that it has two peers set up for the `wg-mullvad` interface, one peer is routed through the other.
So the only thing that SE4 can see is encrypted WireGuard traffic headed for NL1.