Die bessere, dritte Möglichkeit wäre die oben beschriebene:
Beide "Spieler" verbinden zum Masterserver in eine Art "Lobby".
Wenn zwei miteinander spielen möchten, sendet der Client A dem Client B ein Paket, das wahrscheinlich von der Firewall von B geblockt wird. Dann schickt B ein Paket zu A. Dies sollte ankommen, das die Firewall von A dies als Antwort auf das gesendete Paket wertet. Jetzt nochmal von A ein Paket an B schicken, und die Verbindung steht.
Die Koordination kann ja über den Masterserver erfolgen (welcher Port, welche
IP haben die beiden usw.) bis die direkte Verbindung hergestellt ist. Der eigentliche Traffic sollte natürlich direkt zwischen den Clients abgewickelt werden ...
Dann braucht man keine
IP's umherschicken und auch keine Ports freischalten