Hole punching
Zur Navigation springen
Zur Suche springen
Grundsätzliches
- Hole Punching ist eine Technik, mit der eine UDP-Verbindung zwischen zwei Rechnern hergestellt werden kann
- Auch wenn beide sich hinter restriktiven Firewalls befinden.
- Es handelt sich um einen Spezialfall des Tunnelling.
- Technik wird genutzt für Anwendungen wie Online-Spiele, Peer-to-peer-Netzwerke und IP-Telefonie.
- Beide Clients bauen eine Verbindung mit einem offenen dritten Rechner auf
- Dieser kennt dadurch die IP-Adressen und Port-Nummern beider Clients kennt.
- Diese Informationen gibt der Server dem jeweils anderen Client weiter.
- Beide Clients senden nun jeweils ein UDP-Paket an den anderen Client.
- Wesentlich dabei ist, dass die eigene Stateful-Paket-Inspection-Firewall des Senders dadurch eine Regel erzeugt
- Im weiteren Verlauf den Empfang von 'Antworten' des Adressaten zulässt.
- Nach diesem initialen Handshake können beide Clients direkt via UDP miteinander kommunizieren.
Beispiel
- Alice möchte Dateien direkt an Bob verschicken.
- Hierfür nutzen sie einen Client mit Serverinfrastruktur.
- Die Serverinfrastruktur hält einen Anmeldeserver Ziggy, erreichbar unter der Adresse 1.2.3.4 bereit.
- Alice und Bob sind beide an diesem Server angemeldet.
- Alice schickt eine Austauschanfrage mit dem Inhalt Ihrer öffentlichen IP-Adresse und Wunschport (IP 2.2.2.2, Port 49000) für Bob an den Server Ziggy.
- Da Bob an dem Server ebenfalls angemeldet ist und eine Verbindung zu diesem hält, kann der Server Bobs Client erreichen.
- Bobs Client schickt nun ein UDP Paket von seiner öffentlichen IP(1.1.1.1) mit dem ausgehenden Port 50000 an Alice (2.2.2.2:49000).
- Dadurch wartet er auf eine Antwort an seinem ausgehenden Port.
- Seine Firewall muss den Port für eine gewisse Zeit offen halten, da sie aufgrund der Eigenschaften des UDP-Protokolls nicht genau wissen kann, wann die Verbindung zu Ende ist.
- Das Paket wird allerdings zunächst von Alice Firewall geblockt.
- Deshalb schickt Bob an den Server 1.2.3.4 nun die Aussage, dass er Port 50.000 bei sich geöffnet hat.
- Daraufhin erhält Alice Client die Nachricht ein UDP-Paket von Port 49.000 an Bobs IP(1.1.1.1, Port 50000) zu schicken.
- Alice Client erledigt dies und wartet nun ebenfalls auf eine Antwort, hier allerdings von Bobs öffentliche IP-Adresse 2.2.2.2 von Port 50000.
- Diese kann nun kommen und wird nicht mehr von seiner Firewall verworfen, dank des vorher geschlagenen Lochs.
- Bobs Antworten an Alice zu Port 49.000 kommen ebenfalls an und Alice kann Ihre Dateien nun direkt an Bob schicken und Bob den Empfang direkt bestätigen.