dns2tcp: Überspringen Sie Captive-Portale und surfen Sie unbegrenzt im Internet

Normalerweise öffentlich Wi-Fi-Netzwerke haben gefangene Portale Um uns zu authentifizieren, können wir nicht auf das Internet zugreifen, wenn wir uns nicht gegen diese Captive-Portale authentifizieren. Wenn wir uns an einem öffentlichen Ort, in einer Cafeteria, in einem Hotel, in einem Restaurant oder an einem anderen Ort mit öffentlicher Wi-Fi-Konnektivität befinden, ist es sehr wahrscheinlich, dass Captive-Portale vorhanden sind.

Diese Portale fragen Sie normalerweise nach persönlichen Daten wie dem vollständigen Namen, E-Mail, Alter, unter anderem abhängig davon, wo dieses Netzwerk hingehört. Wenn Sie das Captive-Portal überspringen oder das Authentifizierungsfenster schließen, können Sie nicht auf das Internet zugreifen, selbst wenn Sie über eine lokale Verbindung verfügen. Heute in diesem Artikel zeigen wir Ihnen das dns2tcp ToolDies ermöglicht es uns, diese Art von Captive-Portalen zu vermeiden und eine unbegrenzte Internetverbindung zu haben

Es ist gut daran zu denken, dass die DNS Protokoll erfüllt die Funktion des Auflösens der gewünschten Domainnamen. Dies ist äußerst nützlich, da wir, falls nicht vorhanden, in die Adressleiste unseres Browsers immer die IP-Adressen schreiben sollten, und dies ist praktisch unmöglich zu pflegen. In diesem Handbuch werden wir speziell auf DNS-Tunnel eingehen, mit denen wir Zugriffsbeschränkungen wie Firewalls und Captive-Portale umgehen können.

dns2tcp: Captive-Portale überspringen

Es ist jedoch möglich, diese Tunneltypen zu starten, da der Netzwerkadministrator nicht die entsprechenden Konfigurationseinstellungen vorgenommen hat, um sie zu blockieren. Eine praktische Methode, um zu wissen, ob wir den DNS-Tunnel ausführen können, besteht darin, die Befehlszeile einzugeben und Folgendes auszuführen:

nslookup www.google.com

Drücken Sie die Eingabetaste und Sie sehen Daten wie in der freigegebenen Erfassung. In diesem Fall können Sie den DNS-Tunnel starten. Das erste, was wir brauchen, ist ein Tool namens dns2tcp Mit diesem Tool werden DNS-Verbindungen hergestellt. Auf diese Weise können wir jedes in öffentlichen Netzwerken konfigurierte Captive-Portal ignorieren.

Die Hauptbedingung für die ordnungsgemäße Funktion des Tools ist, dass Port 53 UDP von aktiviert wird FirewallAndernfalls funktioniert es nicht und wir können dem Captive-Portal oder der Firewall nicht ausweichen. Im Folgenden wird das Betriebsschema demonstriert, um besser zu verstehen, wie die unverlierbare Portalbarriere vermieden wird:

  • Wenn der dns2tcp-Client gestartet wird, wird die sichere SSH-Ressource über Port 2222 unter Verwendung des TCP-Transportprotokolls benötigt. Der gesamte generierte TCP-Verkehr ist maskiert und hat die Form von gefälschte DNS-Anfragen .
  • Als nächstes wird ein SOCKS-Proxy über Port 1080 geöffnet.
  • Diese gefälschten DNS-Anforderungen werden an den dns2tcp-Server weitergeleitet, der für die Demaskierung verantwortlich ist, und können sie an das ursprüngliche Ziel senden.
  • Wenn das Ziel auf die Anforderung antwortet, durchläuft diese Antwort zuerst den dns2tcp-Server, der in a gekapselt werden soll falsche DNS-Antwort .
  • Die maskierte Antwort wird an den dns2tcp-Client übergeben, der sie entkapselt und schließlich an den Benutzer weiterleitet

Das Ende dieses Schemas ist, dass der Benutzer auf die gewünschten Websites zugreifen kann.

Start, Installation und Konfiguration von Ubuntu unter AWS

Wenn wir dies in die Praxis umsetzen möchten, benötigen wir einen Server, auf dem das Tool dns2tcp installiert ist, und eine eigene Domäne, die auf die öffentliche IP-Adresse des Servers verweisen muss (auch dns2tcp). Wir können einen zusätzlichen Computer verwenden, den wir haben, oder mehr funktionale und wirtschaftliche Ressourcen wie z Raspberry Pi. Zu letzterem könnten wir das installieren Linux Verteilung, die wir wollen, wie Raspbian unter anderem.

Die Entscheidung für zusätzliche Hardware ist jedoch mit zusätzlichen Kosten verbunden. So können wir kostenlose Alternativen wie wählen Amazon Web Services . In diesem Tutorial konzentrieren wir uns auf den wichtigsten Teil beim Erstellen des DNS-Tunnels: den Server, auf dem dns2tcp gehostet wird. Wenn wir das nicht haben, gibt es keine Möglichkeit zu beginnen.

Das erste, was Sie tun sollten, ist die Eingabe der AWS Portal und erstellen Sie ein kostenloses Konto. Sie können ein Jahr lang auf mehrere Lösungen zugreifen, ohne ein Abonnement zu bezahlen. Ein wichtiges Detail ist, dass Sie in einem der Schritte Ihre Kreditkarteninformationen eingeben müssen, aber keine Sorge, es fallen keine Gebühren an. Dann geh zu Mein Konto und wählen Sie die AWS-Managementkonsole .

Unter den zahlreichen Optionen, die Sie sehen, wählen Sie die erste aus EC2. Unnötig zu sagen, EC2 wird von Instanzen . Diese Instanzen sind wie Container, in denen die von uns erstellten virtuellen Maschinen untergebracht sind. Sie können verschiedene Versionen von sein Windows Server oder Linux Server. Wenn Sie mehr erfahren möchten, empfehlen wir Ihnen, die unzähligen Virtualisierungsoptionen zu erkunden.

Wir gelangen zum Dashboard für den EC2-Dienst und gehen zu Instanzen .

Lass uns ins Blaue gehen Instanz starten Taste im nun erscheinenden Bestätigungsfenster nun wieder los.

Wir haben jetzt einen Erstellungsassistenten für unsere Instanz . Dies ist die Instanz, die unseren virtualisierten Server enthält, auf dem wiederum das Tool dns2tcp gehostet wird.

In diesem Fall wählen wir eine Ubuntu Server und wir werden uns nicht so sehr um die zu verwendende Version kümmern. Da testen wir nur. Dann klicken wir auf das Blau Auswählen .

Wir wählen die Option, die für den kostenlosen Plan geeignet ist (derjenige mit dem Label Free Tier berechtigt) .

Später werden Schritte erscheinen, auf die wir diesmal nicht achten müssen. Wir werden jedoch dazu kommen Schritt 6 (Sicherheit Gruppen) und fügen Sie eine neue Regel hinzu, mit der DNS-Tunnel erstellt werden können: die DNS Protokoll (UDP)

Sobald wir diese Option ausgewählt haben, wird automatisch die Portnummer angezeigt, nämlich 53. Wenn dort Quelle steht, können wir die benutzerdefinierte Option angeben und daneben die IP eingeben 0.0.0.0/0 . Dann klick Überprüfen und starten .

Ein letzter Revisionsschritt wird angezeigt und Sie müssen auf klicken Einführung . Wie wir weiter unten sehen werden, ist dies in Wirklichkeit nicht der letzte Schritt. Was wir jetzt tun werden, ist zu generieren das Schlüsselpaar (bestehend aus einem öffentlichen und einem privaten Schlüssel), mit denen wir eine sichere Verbindung zu unserer gerade erstellten Instanz herstellen können.

In diesem Schritt müssen Sie die auswählen Erstellen Sie ein neues Schlüsselpaar Option, damit wir ein neues Schlüsselpaar erhalten. Wo steht Schlüsselpaarname geben wir den Namen des gewünschten Paares an. Wir empfehlen die Verwendung eines Namens, damit wir die Datei bei der Suche leicht erkennen können. Sehr wichtig ist, dass die Datei nur einmal generiert wird. Daher ist es praktisch, sie an einem sicheren Ort auf dem Computer zu speichern, an den wir uns erinnern können. Dann klicken wir Laden Sie das Schlüsselpaar herunter um die Datei herunterzuladen und Instanzen starten

Nach einigen Minuten überprüfen Sie, ob der Status der neu erstellten Instanz zum Starten bereit ist, und haben daher Zugriff auf unseren virtualisierten Server. Was rot hervorgehoben ist, warnt Sie, wenn Sie Ihre Instanz bereits starten können. Wenn es so aussieht, wie es als Beispielaufnahme ist, können Sie beginnen. Sie müssen die von Ihnen erstellte Instanz auswählen und auf klicken Vernetz Dich .

Ein Fenster mit Optionen zum Herstellen einer Verbindung zu Ihrer Instanz wird angezeigt. In diesem Fall zeigen wir Ihnen, wie Sie eine Verbindung mit einem SSH-Client herstellen. Deshalb brauchen wir ein Programm namens PuTTY .

Installieren Sie PuTTY in Sekunden

Damit wir eine Verbindung zu unserem Ubuntu-Server herstellen können, den wir mit der AWS-Instanz erstellt haben, benötigen wir dieses Programm. Speziell zwei, PuTTY und PuTTY Gen. Greifen Sie darauf zu Link und suchen Sie nach beiden Programmen, sie sind ziemlich leicht und erfordern nicht zu viele Installationsschritte.

Nun gehen wir zu PuTTY Gen. Mit diesem Tool können wir die Schlüsselpaardatei konvertieren, die wir heruntergeladen haben, als wir unsere Instanz in AWS erstellt haben. Um zu verstehen, warum wir das tun, unterstützt PuTTY Schlüsselpaardateien in .ppk Format, sobald wir die Konvertierung durchgeführt haben, hilft uns diese Datei, über SSH eine Verbindung zu unserem virtuellen Ubuntu-Server herzustellen.

At Parameter wählen wir den RSA-Verschlüsselungsalgorithmus, der für SSH-2 verwendet wird. Heutzutage wird jedoch empfohlen, SSH-Schlüssel mit Ed25519 oder mit ECDSA zu erstellen, da diese am sichersten sind. Dann in Laden Sie , wir werden nach dem suchen .pem Datei, die wir zuvor in AWS erstellt hatten.

Wenn wir die Datei öffnen möchten, stellen Sie sicher, dass alle Dateien angezeigt werden können, und vermeiden Sie Probleme beim Auffinden. Sie öffnen es und in Sekunden sehen Sie einen Hinweis, dass es erfolgreich importiert wurde:

Sie klicken OK und dann klicken Sie auf Privaten Schlüssel speichern Klicken Sie auf die Schaltfläche, da dies der Schlüssel ist, mit dem Sie sich authentifizieren und eine Verbindung zu Ihrem Ubuntu-Server herstellen können. Sie sehen einen Warnhinweis, können aber klicken Ja Benennen Sie die Datei ohne Verlegenheit nach Ihren Wünschen und speichern Sie sie.

So stellen Sie mit PuTTY eine Verbindung zu unserem virtualisierten Server her

Lassen Sie uns nun das PuTTY-Programm finden und wir werden ein Fenster wie dieses haben

Wie bereits erwähnt, werden wir eine Verbindung über das SSH-Protokoll herstellen. Was wir tun müssen, um zu vermeiden, dass der nächste Schritt immer wieder gemacht wird, ist zu Reparieren Sie unsere generierter privater Schlüssel Datei mit PuTTY Gen. damit wir uns erfolgreich verbinden können, wann immer wir wollen.

Wir suchen die SSH Abschnitt, der in ist Kategorie und dann Auth und wo es heißt Private Schlüsseldatei zur Authentifizierung Wir laden unsere hoch .ppk Datei, in die wir gerade konvertiert haben PuTTY Gen. Wir kehren zu AWS zurück und suchen nach der gerade erstellten Instanz, wählen sie aus und klicken auf Vernetz Dich . Wieder erscheint das Fenster, das wir oben gesehen haben, und wir kopieren die in genannten Informationen Step , das ist unser öffentlicher DNS.

Wir gehen zu PuTTY und in die Session Abschnitt, in der Hostname Feld setzen wir folgendes:

nombredeusuario@DNSpublico

Während wir einen Ubuntu-Server virtualisieren, schreiben wir im Benutzer einfach ubuntu in Kleinbuchstaben gefolgt von @ und das öffentliche DNS, das wir zuvor ohne Leerzeichen kopiert haben

ubuntu@dnspublico-ABC-123-dEf

Wir behalten die Portnummer 22 in Gespeicherte Sitzungen Wir geben einen beliebigen Namen ein, um unsere Verbindung zum Ubuntu-Server aufzuzeichnen. Wir klicken Speichern um es aufzunehmen und dann klicken Offen .

Zum ersten Mal wird eine Warnung angezeigt und Sie müssen klicken Ja :

Warten Sie einige Sekunden, bis die Verbindung hergestellt ist, und wir sehen ein Fenster wie dieses. Wir haben Zugriff auf unseren virtualisierten Ubuntu-Server!

Sobald wir die virtuelle Maschine in AWS erstellt haben und über SSH verbunden sind, müssen wir nur noch das Tool dns2tcp selbst verwenden.

Installation und Konfiguration von dns2tcp in Ubuntu

Das erste, was wir auf unserer machen müssen Ubuntu-Server ist das dns2tcp Tool zu installieren:

sudo apt install dns2tcp

Nach der Installation sowohl auf dem Client als auch auf dem Server müssen einige kleine Anpassungen vorgenommen werden.

Konfiguration und starten Sie den dns2tcp-Server

Wir müssen eine kurze Konfiguration vornehmen, indem wir die Konfigurationsdatei bearbeiten, die sich in /etc/dns2tcp.conf befindet und Folgendes enthält:

root@debian-vm:/home/bron# cat /etc/dns2tcpd.conf
listen = 127.0.0.1
port = 53
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = your.domain.tld
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25
root@debian-vm:/home/bron#

Wir müssen es wie folgt bearbeiten:


listen = 0.0.0.0
port = 53
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = EL_DOMINIO_DE_AWS
key= redeszone
resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25
root@debian-vm:/home/bron#

Das Feld "Schlüssel" ist optional, es wird jedoch empfohlen, eine Authentifizierung zu haben, um zu verhindern, dass jemand eine Verbindung herstellt. Wir müssen es folgendermaßen ausführen:

root@debian-vm:/home/bron# sudo dns2tcpd -F -d 3 -f /etc/dns2tcpd.conf
18:52:08 : Debug options.c:97 Add resource ssh:127.0.0.1 port 22
18:52:08 : Debug options.c:97 Add resource smtp:127.0.0.1 port 25
18:52:08 : Debug socket.c:55 Listening on 0.0.0.0:53 for domain your.domain.tld
Starting Server v0.5.2...
18:52:08 : Debug main.c:132 Chroot to /tmp
16:52:08 : Debug main.c:142 Change to user nobody

Sobald dies erledigt ist, müssten wir uns nur noch mit unserem Kunden verbinden.

Client-Konfiguration für die Verbindung über dns2tcp

Der einfachste Weg, eine Verbindung herzustellen, besteht darin, eine Befehlszeile auszuführen, die alles enthält, was Sie benötigen. Anschließend können Sie im Detail sehen, welche Verbindung hergestellt und der Socket für SSH an Port 2222 automatisch erstellt werden soll.

dns2tcpc -z EL_DOMINIO_DE_AWS -k redeszone -r ssh -l 2222

Jetzt können wir die Verbindung mit SSH folgendermaßen herstellen und die Kommunikation wird verschlüsselt und authentifiziert:

ssh [email protected] -p 2222 -D 8080

Schließlich müssen wir die PROXY SOCKS in unserem Browser konfigurieren, zum Beispiel in Firefox es wäre wie folgt:

Auf diese Weise können Sie Captive-Portale überspringen, und es ist möglich, dass sie auch Firewalls haben, sofern sie keine spezifischen Blöcke haben, die die Ausführung dieser Technik verhindern.