Ein UDP-VPN nur über TCP erreichen

564
Breus

Für ein Projekt von mir suche ich nach Möglichkeiten, ein UDP-only-VPN über TCP (vorzugsweise Port 443 oder 80) zu betreiben. Ich habe während meiner Recherche Folgendes gefunden:

  • Dies ist mit socat möglich, dies ist jedoch unzuverlässig, da die UDP-Verbindung möglicherweise den Datenverkehr weitergibt, während der TCP-Puffer überlastet wird.
  • Ich vermute, dass dies mit Secure Socket Funneling (SSF) [1] möglich sein könnte, ich bin mir jedoch nicht sicher, ob dies 100% zuverlässig funktioniert und ob es den Datenverkehr über TCP weiterleitet oder ob TLS über UDP verwendet werden konnte Weg für mich).

Ich möchte, dass das UDP-VPN nur über TCP funktioniert: Verschiedene Firewalls oder bundesweite Firewalls blockieren den UDP-Verkehr an (zufälligen) UDP-Ports. Natürlich gibt es bestimmte UDP-Ports (beispielsweise 53 DNS), die meistens geöffnet sind. Es ist jedoch sehr einfach, VPN anhand des regulären Datenverkehrs an diesen Ports zu erkennen. Ich kenne das Nachahmen von Verkehr, aber dies bedeutet viel zu viel Aufwand für das VPN. Das für dieses Projekt verwendete Protokoll ist WireGuard anstelle von OpenVPN, wo TCP-Fallback eingebaut ist.

Soweit ich weiß, gibt es keine guten (zuverlässigen) Techniken, um UDP-Verkehr in TCP einzubinden. Ist das wahr und wenn ja, gibt es andere Techniken, die mein Ziel erreichen könnten?

[1] https://securesocketfunneling.github.io/ssf/#home

2
OpenVPN hat keinen Fallback-Mechanismus. Es ist entweder UDP oder TCP, wie eingerichtet. Leider sehe ich keine andere Möglichkeit, als nur OpenVPN zu verwenden. Seine Vielseitigkeit in Umgebungen mit Firewall ist unübertroffen. Daniel B vor 5 Jahren 0
@DanielB Ich habe es tatsächlich falsch über den Fallback gesagt. Hinweis, dass OpenVPN-Clients über den Fallback-Mechanismus verfügen können, da OpenVPN sowohl UDP als auch TCP unterstützt. Wir verwenden OpenVPN jedoch derzeit für dieses Projekt, suchen jedoch nach Möglichkeiten, stattdessen WireGuard (nur UDP) zu verwenden, während diese Option beibehalten wird (Rückgriff auf TCP, wenn UDP blockiert ist). Breus vor 5 Jahren 0
Werfen Sie einen Blick auf https://www.softether.org/. Patrick Mevzek vor 5 Jahren 0
@Patrick Mevzek Danke, aber der Punkt meiner Frage ist, dass es irgendwie für WireGuard funktioniert. Breus vor 5 Jahren 0

1 Antwort auf die Frage

0
harrymc

Ich kann Ihnen nicht mit einer direkten Antwort helfen, aber in den folgenden Quellen finden Sie möglicherweise gute Informationen.

Zebedee (Open Source ab 2005)

Zebedee ist ein einfaches Programm, um einen verschlüsselten, komprimierten "Tunnel" für die TCP / IP- oder UDP-Datenübertragung zwischen zwei Systemen herzustellen. Auf diese Weise können Datenverkehr wie Telnet, FTP und X vor dem Snooping geschützt werden und möglicherweise die Leistung über Netzwerke mit geringer Bandbreite durch Komprimierung zunehmen.

Weitere Informationen finden Sie hier .

udptunnel

Dieses ist als Linux-Paket verfügbar ( Debian-Link ).

Die Quelle befindet sich auf GitHub und wird dort beschrieben als:

Dieses Projekt tunnelt TCP-Daten durch einen UDP-Tunnel. Die ausführbare Datei kann als Server oder Client fungieren. Der Server fungiert als Proxy für den Client, überwacht einen angegebenen UDP-Port und stellt eine Verbindung zu einem vom Client angegebenen TCP-Server her. Der Client wartet auf einen TCP-Port und fungiert als Server, mit dem sich einige TCP-Clients verbinden. Der Client empfängt alle TCP-Daten an diesem Port und sendet die Daten an den udpserver, der sie an die TCP-Verbindung sendet, die er mit dem gewünschten TCP-Server hergestellt hat.

Nur um zu bemerken, dass UDP-Pakete, die einen TCP-basierten VPN-Tunnel passieren, die Zustellung nur für den TCP-Teil ihrer gesamten Reise garantiert haben. In den Abschnitten des gesamten Pfads außerhalb des TCP-basierten VPN-Tunnels kann ein Paketverlust auftreten.