Ich sende etwas an IP X auf Port Y, dadurch wird Port Y für IP X an mich (bzw. die Software) weitergeleitet.
So in etwa. Weil du vorher auf Port Y an IP X geschickt hast, weiß der NAT-Router dass das was von IP X auf Port Y zurückkommt an dich soll.
Habe ich nun einen Server der auf Port Z horcht, weiß der ja nicht von wo die Verbinundung kommt. Ich muss also eingehende Datenpakete auf Port Z an mich (bzw. die Software) weiterleiten. --> eingehende Verbindungen weiterleiten
Nein, das Problem ist der NAT-Router. Dein Server hinter dem Router hat eine private IP-Adresse, üblich ist z.B. 192.168.178.42 (bei Fritzen). Das ist deine Heimnetz-IP. Wenn du aber in's Internet willst, hat dein Router eine eigene IP-Adresse, sagen wir einfach mal 88.88.88.88. Dem Internet ist jetzt nur die IP vom Router "bekannt", nicht aber die private Heimnetz-IP des Servers (was logisch ist, da es die in LANs vmtl. Millionen-Mal gibt). D.h. wenn von außerhalb jemand auf deinen Server will, dann fragt er NICHT bei 192.168.178.42 (der IP deines Servers) an, sondern bei 88.88.88.88 (der IP deines Routers). Und der Router sagt: "Ähh... sorry, dich kenn ich nicht. WTF willst du eigentlich von mir?"

Da kommt jetzt die Portweiterleitung in's Spiel. Wenn du jetzt z.B. 8888 an 192.168.178.42 weiterleitest, dann bedeutet das nichts anderes als dass dein Router ALLE Verbindungen die auf Port 8888 reinkommen automatisch an deinen Server weiterschiebt. Frei nach dem Motto "Ich hab zwar keine Ahnung wer das ist, aber der Server weiß schon, wie man damit umzugehen hat... ist nicht mein Bier."
Und liege ich richtig in der Annahme, dass es auch nicht ohne Portfreigabe geht, wenn der Server die IP vom Client hat und der Client vom Server, da sie ja nur etwas annehmen, wenn sie vorher etwas geschickt haben, was aber nicht funktioniert, da die ports geblockt sind.
Nö. Siehe oben. Das Problem ist nicht, dass die Ports dicht sind. Das sind sie nämlich nicht. Das Problem ist, dass die IP-Adresse, von der der Client
denkt dass sie die des Servers ist, eben nicht die des Servers ist (sondern des Routers). Und umgekehrt.
Vereinfacht gesagt: Du schickst einen Brief an Frau Müller, aber die Adresse von Frau Müller die du hast ist tatsächlich die von Herrn Meier. Und wenn der Brief bei Herrn Meier ankommt sagt der "Das ist nicht für mich, zurück an den Absender". Und die Portweiterleitung ist, dass Frau Müller Herrn Meier VORHER mitteilt, dass bei ihm Briefe für sie ankommen werden, die er bitte an sie weiterschicken möge.
