That’s kinda what Tailscale does, amongst other things.
Not an intro or tutorial, but I've not found a better write-up than on their blog:
https://tailscale.com/blog/how-nat-traversal-works/
(personally, I'd just do what the author did... it's a ton less work to setup and maintain)