Transparenter Proxy mit SOCKS5 Proxy

In meinem Blogbeitrag über SSH-Tunnel habe ich gezeigt wie man auf Port 7070 einen dynamischen SOCKS5 Proxy erstellen kann der über eine SSH-Verbindung einige Vorteile bieten kann. Heute möchte ich kurz erläutern wie man nun diesen Dienst auch als transparenten Proxy nutzen kann.

Um den SOCKS5 nutzen zu können muss man ja IP und Port nur im Browser eintragen und kann das nutzen. Leider muss man das auch in jedem anderen Programm, welches Internetzugriff benötigt machen. Daher wäre es besser diesen Proxy transparent im Netzwerk zur Verfügung zu stellen. Wie funktioniert das?Wenn Netzwerkverbindungen das Ziel außerhalb des lokalen Netzwerkes haben, dann muss der Gateway genutzt werden. Dieser wird normalerweise per DHCP immer mit verkündet. Dieser Gateway macht eigentlich nicht´s anderes als die Pakete von einem Netzwerk in das andere Netzwerk “zu schaufeln”. Nutzt ihr private Netzwerke (192.168.x.y) dann kommt meist noch ein NAT zum Einsatz. Ein Proxy kann man allerdings nicht einfach per DHCP mit übertragen. Wie soll das also gehen?

Der “Trick” besteht nun darin, dass wir Anfragen, welche über den Gateway laufen und die als Ziel-Port 80 oder 443 haben auf den Proxy-Port lokal umleiten (iptables). Und der Proxy kümmert sich dann darum die Inhalte auszulesen:

Der SOCKS5 Proxy lässt sich dafür nur nicht benutzen, weswegen es etwas Software benötigt. Auf “JonDoNym” fand ich den transsocks_ev der genau das macht 🙂 In dem Fall für TOR – geht aber auch hiermit. Quellcode: transocks_ev.tar 

SOCKS5 Proxy umleiten in Proxyport

Ein SOCKS5 erwartet immer ein CONNECT Befehl damit er weiß womit er dich verbinden soll.. wie so eine Vermittlungsstelle von früher. Wenn der Proxy transparent arbeiten soll muss das also automatisiert werden. Wir brauchen also ein Programm, welches das TCP-Paket auseinander nimmt und damit den SOCKS5 aufruft..danach geht´s dort normal weiter. Und das kann z.B. transsocks bzw. das hier vorgestellt transsocks_ev.

Um transocks_ev (entwickelt von triggerswelt.net) zu kompilieren benötigt man zu allererst nur gcc und die livevent-dev, welche man mit apt-get schnell installiert bekommen sollte. Dann noch einen Benutzer/Gruppe hinzufügen und schon kann man den Server starten:

sudo apt-get install gcc libevent-dev
make && sudo make install
sudo adduser --system --disabled-password --group transocks_daemon

## Starten:
sudo -u transocks_daemon transocks_ev -H 127.0.0.1 -p 4008 -S 127.0.0.1 -s 4001
  • -H IP – binde transsocks_ev an folgende IP
  • -p port – Der Port an den wir transsocks_ev binden
  • -S IP – Wo läuft der SOCKS5 Proxy
  • -s port – Auf welchem Port läuft der SOCKS5 Proxy
  • -f – starte im Vordergrund – sonst autom. detached

Im Paket ist ebenfalls ein INIT-Skript enthalten.

Damit man von nicht-lokal darauf zugreifen kann sollte -H auf die ip eines Interfaces lauten.

Transparenten Proxy einrichten

was man nun noch benötigt sind zwei Einträge für die iptables:

Wie auf tldp.org beschrieben muss man für NAT/PREROUTING definieren dass auf dem “internen” Interface ankommende Pakete mit Ziel-Port 80 bzw. 443 umgeleitet werden auf den Proxy-Port der auf dem selbigen Interface erreichbar sein muss. Zum testen also vorher proxy eintragen.. das muss schon vorher funktionieren.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

man kann das auch im Webmin machen 🙂 dann sieht das so aus:

[Update 18.03.2017]

Wer alle Ports weiterleiten möchte kann auch die Regel so definieren, dass nicht der Destination-port entscheidend ist sondern das Ziel-Netzwerk ungleich dem Lokalen.

dann wären auch Dienste wie eMail oder SSH möglich – über den SSH-Tunnel!

 

Über Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.
Dieser Beitrag wurde unter Linux-Welt abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.