Warum diskutiert ihr noch weiter?
Was DocZimmermann geschrieben hat ist die einzig vernünftige Erklärung, eine wirkliche Lösung gibts dafür nicht.
Hatte auch schonmal ein ähnliches Problem, allerdings war es da aus Zeit- und anderen Gründen nicht praktikabel sich ne öffentliche IP schalten zu lassen.
Mit bissl SSH-Gehäcksel kann man eine beliebige Verbindung tunneln. Das funktioniert so, dass auf dem nicht erreichbaren PC hinter dem NAT ein Skript läuft was eine Verbindung zu einem PC nach außen aufbaut, dessen IP sich nicht ändert bzw durch einen dynamischen Hostnamen maskiert wird.
Sobald diese Verbindung steht, öffnet der außenstehende, erreichbare PC, einen Tunnel zurück zu dem PC hinter dem NAT.
Danach kann man sich z.B. per SSH auf einen vorher gewählten Port auf dem erreichbaren PC verbinden, der die Verbindung dann über die bereits bestehende andere SSH-Verbindung auf den Rechner hinter dem NAT zurückleitet.
Das ganze nennt sich dann SSH-Reverse-Tunneling und lässt sich trotz der ausschweifenden Erklärung in einem Einzeiler zusammenfassen ^^
Code:
ssh -R 12345:localhost:22 remote.dyndns.org
...auf dem nicht erreichbaren PC starten
ssh -p 12345 remote.dyndns.org
...auf einem beliebigen Rechner eingeben
Dies würde jetzt den Traffic der beim Remoterechner an Port 12345 eingeht an Port 22 (SSH) des eigentlich nicht erreichbaren Rechners weiterleiten.