I have a raspberry on a dynamic IP network where I can't open ports and I need to be able to reach it even if it gets rebooted (all I need is the port 22).
My first idea was to combine no-ip client (which gives me a DNS and an api that allows me to update it with whatever IP I want through CNAMES/A/ecc..) and a reverse tunnel with ngrok. In this way, as long as I know ngrok's assigned IP I could have access to the Raspberry.
The problem is that Ngrok assigns me a random <ip:port> every time it's restarted (such as 6.tcp.ngrok.io:1234) and CNAMEs only work with IPs, not ports.