Setio sam se da postoji još jedno bolje rešenje, pod uslovom da ti ne treba sumanuta brzina (mada, pošto si na SBB-u, upload ti je verovatno već loš, tako da ... ), i da ti ne treba ekstremni convenience.
Ukoliko se uklapaš u to, evo uputstva:
0. Podesi OpenVPN, odlična skripta je
https://git.io/vpn
1. Registruj se na ngrok.com, skini binary za armhf, extract-uj na RaspberryPi, chmod +x ngrok, pokreni ono ./ngrok authtoken sa dashboard-a
2. Pokreni screen sesiju i pokreni "./ngrok tcp -region=eu 1194"
3. ovpn fajl koji si dobio modifikuj da je domen 0.tcp.eu.ngrok.io, a port taj što si dobio od ngrok-a (vidi se na dashboard-u).
inače, moraš da staviš da je protokol tcp a ne udp, to skripta iz koraka 0. nudi pri instalaciji
4. Ta-da, free port "forwarding"
Ngrok će, ako nestane net na sekund, da se rekonektuje na isti tunnel, ali ako duže vreme nema izgubićeš port, pa preporučujem da se pre logovanja na VPN uloguješ na ngrok dashboard i vidiš koji port je dodeljen tunelu.
Možeš i systemd skriptu da napraviš da ti sama startuje ngrok, i čak da preko JSON-RPC API-ja pokupiš port, regenerišeš ovpn fajl, i pošalješ sebi npr. na mejl, da bi mogao da uvek imaš ažurne podatke.
Ja sam na tom principu napravio ceo sistem za remote management uređaja iza više slojeva NAT-a i CGNAT-a, čak i uz emergency mere za reboot, reset, upgrade software, upgrade OS, i emergency reverse shell ako sve ostalo crkne, koji ima ogromnu latenciju (1s+) zbog načina rada (i čeka se 5-15s da se aktivira shell).