Folks have solved these problems and open sourced solutions: https://github.com/tonarino/innernet
But all that I've seen are still centralized/federated
Folks have solved these problems and open sourced solutions: https://github.com/tonarino/innernet
But all that I've seen are still centralized/federated
(I help maintain innernet)
We have _some_ NAT traversal logic in place, but it's very basic. Tailscale does a much more thorough job on it. It would be cool to add peer relays to innernet but I imagine it's a fair amount of work.
From what I recall, tailscale has their own Wireguard implementation so they have more control over the socket and how things are routed. innernet is just a wrapper around managing wireguard peer lists, and yeah there's a central coordination server which is unfortunate. If the server goes down, you can still connect to peers so thankfully it doesn't bring down your whole network, but you won't be able to learn about new peers or peer endpoints over time until you re-establish connectivity with the coordination server.