Rathole – A lightweight reverse proxy in Rust like frp and ngrok
github.com
github.com
Performance, while it's working, I've found to be generally good. But there are clear ceilings to the method that you hit when trying to use it heavily.
I never saw any issues when I used it to forward ports for myself. But the moment I tried to use it for production for a small service it falls on it's face regularly unless I baby it.
Without that you wouldn't have any performance at all, in that case. If you're using public IPs you simply don't need it, because no NAT is involved.
Machine A -> public IP Machine B -> behind NAT
You can always SSH from Machine B to Machine A and expose any local Machine B port to the internet as a port on Machine A. The feature is called GatewayPorts and is a standard SSH feature (at least in OpenSSH). It does not require installing anything other than SSH on Machine A (or even Machine B, unless you want a script to re-establish the tunnel upon disconnect).