pex: add support for figuring out the external data port via STUN servers
authorFelix Fietkau <nbd@nbd.name>
Fri, 16 Sep 2022 09:00:15 +0000 (11:00 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 16 Sep 2022 16:56:53 +0000 (18:56 +0200)
commit639cdcdf6edacbcd00db746727ea1ae881bef5c6
tree1da890123c50b5136e3bbee55faf12c587c389c7
parente88f2cd4d3f0e93ebce1bbd3cd53eb2888b18961
pex: add support for figuring out the external data port via STUN servers

When establishing a direct connection on the auth/PEX port via DHT, both sides
need to know the externally mapped data port number in order to establish a
wireguard connection.
If there is an existing data connection, the port can be queried via PEX
over the tunnel. If that is not available, an external public server is needed
in order to poke a hole in the NAT. The easiest way to do this is to use
STUN, since there are a lot of public servers available.

The servers can be configured via the network data, based on the assumption,
that an auth exchange with network data update can be done directly

Signed-off-by: Felix Fietkau <nbd@nbd.name>
12 files changed:
CMakeLists.txt
network.c
network.h
pex-msg.h
pex-stun.c [new file with mode: 0644]
pex.c
pex.h
stun.c [new file with mode: 0644]
stun.h [new file with mode: 0644]
utils.h
wg-linux.c
wg-user.c