Hole punching

Aus xinux.net
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.

Idealfall keine Randomizes NAT

Eine Seite macht Randomizes NAT