1 Punkte von GN⁺ 2025-01-06 | Noch keine Kommentare. | Auf WhatsApp teilen

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.

Noch keine Kommentare.