Hole Punching (manchmal auch Punch-Through genannt ) ist eine Technik in Computernetzwerken , um eine direkte Verbindung zwischen zwei Teilnehmern herzustellen, von denen einer oder beide sich hinter Firewalls oder Routern mit Network Address Translation (NAT) befinden. Beim Punching verbindet sich jeder Client mit einem Server eines Drittanbieters, der temporär externe und interne Adress- und Portinformationen für jeden Client speichert. Der Server leitet diese Informationen dann an den jeweils anderen Client weiter, der anschließend versucht, mithilfe dieser Informationen eine direkte Verbindung herzustellen. Dank der Verbindungen über gültige Portnummern akzeptieren und leiten restriktive Firewalls oder Router die eingehenden Pakete auf beiden Seiten weiter.

Für das Hole Punching sind keine Kenntnisse der Netzwerktopologie erforderlich. ICMP-Hole Punching , UDP-Hole Punching und TCP-Hole Punching nutzen jeweils das Internet Control Message Protocol ( ICMP) , das User Datagram Protocol (UDP) bzw. das Transmission Control Protocol (TCP) .

Überblick

Netzwerkgeräte mit öffentlichen oder global zugänglichen IP-Adressen können problemlos Verbindungen untereinander herstellen. Clients mit privaten Adressen können sich ebenfalls problemlos mit öffentlichen Servern verbinden, sofern der Client hinter einem Router oder einer Firewall die Verbindung initiiert. Um jedoch eine direkte Verbindung zwischen zwei Clients herzustellen, die sich hinter unterschiedlichen Firewalls oder Routern mit Network Address Translation (NAT) befinden, ist Hole Punching (oder eine andere Form der NAT-Traversal ) erforderlich .

Beide Clients initiieren eine Verbindung zu einem uneingeschränkten Server, der Endpunkt- und Sitzungsinformationen, einschließlich öffentlicher und privater IP-Adresse und Port, erfasst. Die Firewalls erfassen ebenfalls die Endpunkte, um die Antworten des Servers zu ermöglichen. Der Server sendet anschließend die Endpunkt- und Sitzungsinformationen jedes Clients an den jeweils anderen Client (Peer). Jeder Client versucht, sich über die angegebene IP-Adresse und den Port, die die Firewall des Peers für den Server freigegeben hat, mit seinem Peer zu verbinden. Dieser neue Verbindungsversuch öffnet die Firewall des Clients, da der Endpunkt nun für den Empfang einer Antwort vom Peer zugänglich ist. Abhängig von den Netzwerkbedingungen erhalten möglicherweise ein oder beide Clients eine Verbindungsanfrage. Der erfolgreiche Austausch einer Authentifizierungs-Nonce zwischen beiden Clients signalisiert den Abschluss des Verbindungsaufbaus. [ 1 ]

Beispiele

VoIP- Produkte, Online-Gaming-Anwendungen und P2P- Netzwerksoftware nutzen alle Lochstanzung.

  • Die Telefonie-Software Skype verwendet Lochkartentechnik, um Benutzern die Kommunikation mit einem oder mehreren Benutzern zu ermöglichen. [ 2 ]
  • Schnelle Online-Mehrspieler-Spiele verwenden möglicherweise eine Lochstanztechnik oder verlangen von den Benutzern, ein permanentes Firewall-Loch zu erstellen , um die Netzwerklatenz zu reduzieren.
  • VPN- Anwendungen wie Hamachi , ZeroTier und Tailscale nutzen Hole Punching, um Benutzern die direkte Verbindung zu abonnierten Geräten hinter Firewalls zu ermöglichen.
  • Dezentrale Peer-to-Peer-Dateiaustauschsoftware nutzt das Lochstanzen zur Dateiverteilung.

Anforderungen

Für zuverlässiges Lochstanzen ist eine konsistente Endpunktübersetzung erforderlich, und bei mehreren NAT-Ebenen ist eine Haarnadelübersetzung notwendig.

Wenn eine ausgehende Verbindung von einem privaten Endpunkt eine Firewall passiert, erhält sie einen öffentlichen Endpunkt (öffentliche IP-Adresse und Portnummer), und die Firewall übersetzt den Datenverkehr zwischen ihnen. Solange die Verbindung besteht, kommunizieren Client und Server über den öffentlichen Endpunkt, und die Firewall leitet den Datenverkehr entsprechend weiter. Die konsistente Endpunktübersetzung verwendet für einen gegebenen privaten Endpunkt denselben öffentlichen Endpunkt wieder, anstatt für jede neue Verbindung einen neuen öffentlichen Endpunkt zuzuweisen.

Die Hairpin-Übersetzung erzeugt eine Loopback-Verbindung zwischen zwei ihrer eigenen privaten Endpunkte, wenn sie erkennt, dass der Zielendpunkt sie selbst ist. Diese Funktionalität ist für Hole Punching nur dann erforderlich, wenn es innerhalb eines mehrschichtigen NAT verwendet wird. [ 1 ]

Siehe auch

Referenzen

  1. ^ a b Ford, Bryan; Srisuresh, Pyda; Kegel, Dan (2005), Peer-to-Peer Communication Across Network Address Translators
  2. ^ Schmidt, Jürgen (2006), Der Lochtrick