Funktionsweise von NAT Traversal (2020)
(tailscale.com)Funktionsweise von NAT Traversal
-
Grundproblem: Es geht um die Einrichtung einer Peer-to-Peer-Verbindung zwischen zwei Geräten. Bei Tailscale geht es darum, einen WireGuard®-Tunnel aufzubauen. Diese Technik wird in Bereichen wie WebRTC, VoIP-Telefonie und Videospielen eingesetzt.
-
UDP-basiertes Protokoll: Für NAT Traversal wird ein auf UDP basierendes Protokoll benötigt. TCP kann ebenfalls verwendet werden, erhöht jedoch die Komplexität und kann ein angepasstes Kernel-Setup erfordern.
-
Direkte Kontrolle von Netzwerksockets: Es ist erforderlich, den direkten Zugriff auf die Sockets zu haben, über die Netzwerkpakete gesendet und empfangen werden. Mit bestehenden Netzwerkbibliotheken kann man NAT nicht durchdringen.
-
Einsatz eines lokalen Proxys: Wenn direkter Socket-Zugriff schwierig ist, kann ein lokaler Proxy für NAT Traversal und Paketweiterleitung verwendet werden.
Verständnis von Firewalls
-
Stateful Firewall: Die meisten NAT-Geräte enthalten eine stateful Firewall, die sich an zuvor gelesenen Paketen orientiert und sie bei der Verarbeitung neuer Pakete nutzt.
-
UDP-Verkehrsregel: Die Firewall lässt eingehende UDP-Pakete zu, die zu zuvor gelernten ausgehenden UDP-Paketen passen.
-
Umgang mit Firewalls: Wenn alle Firewalls in dieselbe Richtung ausgerichtet sind, ist das ähnlich wie die Neuerfindung einer Client/Server-Kommunikation. Wenn jedoch zwei Clients direkt kommunizieren wollen, tritt ein Problem auf.
Firewalls umgehen
-
Lösung ohne Umkonfiguration: Das Problem muss gelöst werden können, ohne die Firewall neu zu konfigurieren. Wenn ein UDP-Paket mit korrekter Quelle und Ziel kommt, wird ein Paket, das wie eine Antwort aussieht, zugelassen.
-
Informationen teilen: Peers müssen die ip:port-Informationen des Gegenübers im Voraus kennen. Dazu wird ein Koordinationsserver genutzt, um die ip:port-Informationen zu synchronisieren.
Das Wesen von NAT
-
NAT-Gerät: Ein NAT-Gerät verändert Pakete, insbesondere Source NAT (SNAT) ist problematisch. Es dient dazu, mehrere Geräte mit dem Internet zu verbinden.
-
NAT-Ermittlung: Da ein NAT-Gerät Pakete verändert, kennt kein Peer die ip:port des Gegenübers. STUN unterstützt die NAT-Ermittlung.
STUN und NAT-Ermittlung
-
STUN-Protokoll: Wenn ein NAT-unterstützter Client mit einem Server im Internet kommuniziert, kann der Server die vom NAT-Gerät erzeugte öffentliche ip:port sehen. Der STUN-Server gibt diese Information an den Client zurück.
-
Einschränkungen: STUN funktioniert nur in bestimmten Fällen, insbesondere bei NAT-Gateways, die sich als Sicherheitsgeräte ausgeben, kann es häufig fehlschlagen.
Zusätzliche Lösungen
-
Einsatz von Relays: Wenn die direkte Verbindung fehlschlägt, wird ein Relay verwendet, über das beide Seiten ohne Behinderung kommunizieren können.
-
DERP-Protokoll: Tailscale verwendet das DERP (Detoured Encrypted Routing Protocol), um Daten weiterzuleiten und NAT Traversal zu unterstützen.
-
Port-Mapping-Protokolle: Port-Mapping-Protokolle wie UPnP IGD, NAT-PMP und PCP können genutzt werden, um das NAT-Gerät dazu zu bringen, kooperativer zu funktionieren.
Noch keine Kommentare.