UDP/TCP hole punching (Router Firewall legal löchern)
UDP/TCP hole punching (Router Firewall legal löchern)
Habe sowas in Erinnerung, das es möglich ist/war, eine Peer to Peer Verbindung mit einem anderen PC herzustellen, selbst wenn beide PCs hinter einem Router sitzt.
Ich weiß jetzt nicht, ob das eine Router Bug Meldung war (die ich damals in der PC-Welt gelesen habe) oder ob das immer noch funktioniert. Die Möglichkeit wäre aber für mein Programm sehr hilfreich.
So ähnlich funktioniert das: PC 1 (hinter Router) stellt eine Verbindung zu PC 2 (hinter Router) her. Der Router 1 hat nun ein Loch in der Firewall und der 2. PC kann nun eine Verbindung zu PC 1 (durch die Firewall herstellen) weil Router 1 die IP-Adresse von PC 2 auf der Weißen-Liste hat.
(Kein Router hat im NAT einen Port offen)
Wenn ich das jetzt Richtig beschrieben habe, würde ich gerne wissen, ob das wirklich funktioniert und wie man das realisiert.
Ich weiß jetzt nicht, ob das eine Router Bug Meldung war (die ich damals in der PC-Welt gelesen habe) oder ob das immer noch funktioniert. Die Möglichkeit wäre aber für mein Programm sehr hilfreich.
So ähnlich funktioniert das: PC 1 (hinter Router) stellt eine Verbindung zu PC 2 (hinter Router) her. Der Router 1 hat nun ein Loch in der Firewall und der 2. PC kann nun eine Verbindung zu PC 1 (durch die Firewall herstellen) weil Router 1 die IP-Adresse von PC 2 auf der Weißen-Liste hat.
(Kein Router hat im NAT einen Port offen)
Wenn ich das jetzt Richtig beschrieben habe, würde ich gerne wissen, ob das wirklich funktioniert und wie man das realisiert.
Zuletzt geändert von Joel am 20.05.2009 19:31, insgesamt 2-mal geändert.
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Naja das NAT-Punching geht ungefähr so (Alles UDP Transfer):
Endpoint 1 schickt Dummypaket an Endpoint 2.
Nun weiß die NAT-Box von Endpoint 1, dass Nachrichten diesen Quellports an diesen Endpoint zurückkommen.
Endpoint 2 schickt Dummypaket an Endpoint 1.
Nun weiß die NAT-Box von Endpoint 2, dass Nachrichten diesen Quellports an diesen Endpoint zurückkommen.
Nun ist keine Blockade mehr vorhanden, es sei denn es ist etwas anderes als eine NAT-Box.
Nur weiß ich nicht wie man bei Paketen den Quellport bestimmt ohne die Pakete selbst zu basteln (Also mit UDP Header).
UDP Header:
2Byte Quellport
2Byte Zielport
2Byte Länge
2Byte Prüfsumme
Daten...
Natürlich auf die Netzwerk Bytereihenfolge achten.
Endpoint 1 schickt Dummypaket an Endpoint 2.
Nun weiß die NAT-Box von Endpoint 1, dass Nachrichten diesen Quellports an diesen Endpoint zurückkommen.
Endpoint 2 schickt Dummypaket an Endpoint 1.
Nun weiß die NAT-Box von Endpoint 2, dass Nachrichten diesen Quellports an diesen Endpoint zurückkommen.
Nun ist keine Blockade mehr vorhanden, es sei denn es ist etwas anderes als eine NAT-Box.
Nur weiß ich nicht wie man bei Paketen den Quellport bestimmt ohne die Pakete selbst zu basteln (Also mit UDP Header).
UDP Header:
2Byte Quellport
2Byte Zielport
2Byte Länge
2Byte Prüfsumme
Daten...
Natürlich auf die Netzwerk Bytereihenfolge achten.
Zuletzt geändert von DarkDragon am 07.04.2009 15:48, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kann ich dafür OpenNetworkConnection() Verwenden?
Wenn ich eine Verbindung mit dem UDP Parameter per OpenNetworkConnection() herstelle, dann gibt es ja nie 0 zurück, wie weiß ich jetzt, ob die Verbindung hergestellt werden konnte (also UDP hole punching positiv war) und wann nicht?
Wenn ich eine Verbindung mit dem UDP Parameter per OpenNetworkConnection() herstelle, dann gibt es ja nie 0 zurück, wie weiß ich jetzt, ob die Verbindung hergestellt werden konnte (also UDP hole punching positiv war) und wann nicht?
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Das kannst du nach nem Three-Way-Handshaking feststellen. Mit OpenNetworkConnection setzt du aber nicht den Quellport fest.Joel hat geschrieben:Kann ich dafür OpenNetworkConnection() Verwenden?
Wenn ich eine Verbindung mit dem UDP Parameter per OpenNetworkConnection() herstelle, dann gibt es ja nie 0 zurück, wie weiß ich jetzt, ob die Verbindung hergestellt werden konnte (also UDP hole punching positiv war) und wann nicht?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Nein das geht nicht.Joel hat geschrieben:Muss ich dann die Daten per UDP senden oder kann ich nach/in dieser Attacke dann irgentwie auf TCP umsteigen?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
3. UDP mit PortforwardingJoel hat geschrieben:Ok also das heißt enweder:
1. TCP und Port Forwarding
2. UDP ohne Portforwarding
4. Softwaregesteuertes Portforwarding (UPnP) - geht allerdings nicht mit jeder NAT-Box.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
http://www.purebasic.fr/english/viewtop ... light=upnpJoel hat geschrieben:Das wäre eine gute Idee!DarkDragon hat geschrieben:
4. Softwaregesteuertes Portforwarding (UPnP) - geht allerdings nicht mit jeder NAT-Box.
Und wie mache ich das mit PB
http://www.purebasic.fr/english/viewtop ... light=upnp
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.