Nur für Technik-Freaks - Was Ihr Router so alles kann: DD-WRT verbindet sich mit Relakks

Posted on July 5th, 2007 by Reiner.
Categories: Deutsch, at Home, Computers.

Wie können Sie sich Ihr WLAN mit Ihren Nachbarn teilen, ohne zum Freiwild Hamburger Gerichtsbarkeit zu werden (heise: Unverschlüsseltes WLAN hat Folgen)  und ohne wegen der dem Zeitgeist geschuldeten Verdrehung der Unschuldsvermutung jeden Mausklick Ihrer Nachbarn mitschreiben zu müssen?

Hier wird keine fertige Lösung vorgestellt, sondern nur Hinweise für technisch Versierte gegeben, wie man einen DD-WRT Router (mit statischer IP)  so einrichten kann, dass er sein WLAN über Relakks tunnelt. Vielleicht findet sich ja jemand, der mehr Ahnung hat als ich, und daraus eine anklickbare Option für DD-WRT erstellen kann :-)

Im Internet gibt es unzählige Projekte, deren Ziel es ist, WLANs mit anderen zu teilen. Allen gemein ist, dass sie auf die eine oder andere Weise vom WLAN-Anbieter als auch vom WLAN-Nutzer die Konversion zu ihrer eigenen “Religion” erfordern - bis hin zum Einsatz proprietärer Hardware.  Das möchte ich nun überhaupt nicht. Mein WLAN reicht nicht einmal bis auf die Straße und ich möchte weder für mich noch für potenzielle Hinterhof-Nutzer irgendeine Art von Papier- und Legitimationskrieg beginnen.

Relakks, ein schwedischer Anonymisierungsdienst, der von der dortigen Piraten-Partei ins Leben gerufen wurde, liefert erstklassige Leistung zu einem sehr attraktiven Preis (5 Euro p. Monat). Die Einrichtung auf Ihrem PC ist ein Kinderspiel, die Nutzung offenbahrt jedoch sofort ein entscheidendes Manko: Nur Ihr eigener PC ruft seine Daten anonymisiert aus dem Internet ab, all Ihre Nachbarn, die an Ihrem WLAN saugen, tun dies nach-wie-vor direkt über Ihren Internet-Provider.

Deshalb darf die Verbindung zu Relakks nicht erst in Ihrem PC hergestellt werden, sondern muss bereits aus dem Router heraus von ihm selbst aufgebaut werden.

DD-WRT dazu zu bringen, stellte sich als eine sehr schwere und teilweise auch unlösbare Aufgabe heraus. Anfangs schlugen alle Verbindungsversuche fehl, da Relakks die gleiche öffentliche IP sowohl für seine VPN-Server als auch die Gateways am entfernten Ende innerhalb der VPN-Tunnels verwendete. Null Problem für Windows (das so klug ist, automatisch eine Host-Route zu erstellen), aber Linux PPTP versuchte immer die physikalische Verbindung zum VPN-Server durch den Tunnel selbst zu routen (sowas gelingt wohl nur Baron von Münchhausen). Inzwischen hat Relakks seine Technik verbessert, aber gleichzeitig auch eine neue Barriere errichtet, die den Einsatz von DD-WRT gänzlich unmöglich machte. Relakks erzwingt inzwischen für seine VPN-Verbindungen starke Verschlüsselung (128 Bit), die bei DD-WRT in allen bisher freigegebenen Versionen wegen Fehlern im Linux-Kernel schlicht nicht funktioniert. Deshalb blieb vorübergehend keine andere Wahl, als zu Findnot zu wechseln. Findnot erzwingt keinen bestimmten Verschlüsselungsgrad, bietet vielfältige Verbindungsoptionen und mehr als 20 Server rund um den Globus. Aber sie sind vergleichsweise teuer und man bekommt keine öffentliche IP, sondern sitzt selbst mit einer privaten IP hinter Findnots NAT. Die Verkettung der beiden NATs (das von Findnot und das des Routers) führt dazu, dass einige Anwendungen nicht mehr funktionieren, z.B. VOIP mit einem Nokia E61.

Durch Zufall hatte ich vor kurzem erfahren, dass Brainslayer bei seiner Arbeit an v24 und v23 SP3 auch die Linux-Kernel-Version des DD-Wrt aktualisiert hat, so dass die von Relakks geforderte 128 Bit Verschlüsselung nun mit den aktuellen DD-WRT Beta-Versionen funktioniert. Ich verwendete dazu beispielhaft dd-wrt.v23_std_nokaid_generic.bin vom 20.06.2007. Die nokaid Variante muss z.B. für den Linksys WRT54GL verwendet werden, da andernfalls kein Platz mehr für das JFFS Dateisystem bleibt.

 Hier die einzelnen Schritte:

  1. JFFS2 muss eingeschaltet werden (+ Reboot)
  2. Die Skriptdateien müssen ins Verzeichnis jffs hochgeladen werden und das Execute-Bit bei den .sh-Dateinen muss eingeschaltet werden.
  3. Die Skript-Dateien müssen angepasst werden (Gateway, Relakks Server- und Anmeldedaten).
  4. Für den automatischen Start beim Booten muss das Haupt-Skript ins NV-Ram eingetragen werden. Mit DD-WRT ist das ganz einfach: Unter Administration, Commands, Firewall wird einfach /jffs/bin/startvpn.sh eingetragen.
  5. Für die SSID sollte man z.B. die eigene EMail-Adresse oder Telefonnummer verwenden, so dass WLAN Nutzer wissen, wo sie sich beschweren oder einfach ihre Danksagung loswerden können.  

Hier die Skripte: relakks-dd-wrt-jffs.zip

Sie weisen u.a. folgende Schwächen auf:

  1. Sie benötigen eine feste Gateway-IP-Adresse, funtionieren also i.d.R. ausschließlich bei (DSL-) Anschlüssen mit fester IP-Adresse.
  2. Sie benötigen eine feste VPN-Server-Adresse. Relakks hat inzwischen mehrere VPN-Server, die von DNS-Servern in round-robin aufgelöst werden. Man muss sich also einen davon aussuchen und dessen IP in die Skripte eintragen.
  3. Sie sind hässlich und unbeholfen, da ich alles, nur kein Linux-Experte bin.

11 comments.

palym

Comment on December 19th, 2007.

Ersteinmal vielen Dank für diesen Eintrag, nach dem ich versucht habe eine relakks Verbindung einzurichten. Leider bricht das startvpn Script mit folgendem Fehler ab.

root@xxxx:/jffs/bin# ./startvpn.sh
: not foundsh/bin/sh: ./startvpn.sh: 6:
root@xxxx:/jffs/bin# : Can’t open

Vielleicht hat ja jemand das selbe Problem und kann mir helfen.

Reiner

Comment on December 19th, 2007.

Ich bin zwar ein Winows Guru, aber ein blutiger Linux-Anfänger, ich selbst hätte bestimmt vergessen, für vpn.sh das “execute” Bit zu setzen. Und in dem .ZIP, das ich unter Windows mit WinZip erstellt habe, gibt es keine Exceute-Flags.

Zeile 6 von startvpn.sh enthält die Anweisung “/jffs/bin/vpn.sh &”. Mein Erklärungsversuch dazu wäre: Entweder gibt es die Datei nicht auf dem Router oder sie darf wg. des fehlenden Execute-Bits nicht ausgeführt werden.

Palym

Comment on December 20th, 2007.

Die Rechte hatte ich eigentlich angepasst…

root@xxx:~# ls -al /jffs/bin
drwxrwxrwx 1 root root 0 Dec 19 20:06 .
drwxr-xr-x 1 root root 0 Dec 19 00:01 ..
-rwxrwxrwx 1 root root 112 Dec 19 20:06 startvpn.sh
-rwxrwxrwx 1 root root 443 Dec 19 20:10 vpn.sh
root@xxx:~# /jffs/bin/vpn.sh
/bin/sh: Can’t open
root@xxx:~#

und das vpn script existiert auch, wie Du siehst. Ich habe im DD WRT Forum einen Thread zu Relakks gesehen, in dem Du auch schon geschrieben hast, den werde ich mal widerbeleben.

Reiner

Comment on December 20th, 2007.

Hm, ich bin doof, aber wenn ich ganz naiv das lese, was da steht (”/bin/sh: Can’t open”) kann ich das auch so verstehen, dass /bin/sh selbst nicht geöffnet werden kann. Daher Testfrage: Kannst Du denn irgendwelche anderen Skripts ausführen, die (wahrscheinlich in der ersten Zeile) /bin/sh als Skript-Prozessor benötigen?

palym

Comment on December 20th, 2007.

Ja kann ich. Ich hatte auch schon eine Menge rumprobiert, da mir diese Sache auch seltsam vorgekommen ist. Ich glaube aber jetzt die Lösung gefunden zu haben:
In dem vpn.sh script muss ein nicht darstellbares Zeichen gewesen sein. Ich schätze mal durch einen Windows Editor, wobei ich das zipfile direkt per wget geladen und nur mit nano bearbeitet habe :-)

Reiner

Comment on December 21st, 2007.

Ich drück Dir die Daumen! Gib Laut, wenn’s relakksed :-)

palym

Comment on December 21st, 2007.

So, nun hab ichs geschafft. Da ich pppoe benutze, um mich bei meinem Provider einzuwählen, musste ich Deine Scripte etwas anpassen. ich schau mir das noch ein wenig an und poste sie dann.

MeTT

Comment on January 5th, 2008.

Hi palym, wirst du das Script noch posten? Im Moment gibt es sonst in den Weiten des Internets kein ordentliches Script für DD-WRT… :)

Danke schonmal!

Reiner

Comment on January 7th, 2008.

Asche auf mein Haupt: Alle (!) Dateien im relakks-dd-wrt-jffs.zip waren mit Windows Zeilenenden verseucht. Habe relakks-dd-wrt-jffs.zip repariert…

palym

Comment on March 5th, 2008.

ah sorry, ich hätte mich nochmal melden müssen. das problem ist, dass manchmal etwas mit den ppp verbindungen durcheinander kommt. diese problem konnte ich in der zeit als ich einen relakks account hatte nicht lösen.

Reiner

Comment on March 5th, 2008.

Durcheinander: Hast Du für die Verbindung zu Relakks die (genauer: eine der) IP von pptp.relakks.com genommen? Der Name pptp.relakks.com funktioniert nicht, da der Name pptp.relakks.com mehrere verschiedene IPs liefert (vermutlich zur Lastverteilung) und dadurch die Route-Befehle in meinen doofen Skripten nicht mehr zuverlässig arbeiten.

Leave a comment

Comments can contain some xhtml. Names and emails are required (emails aren't displayed), url's are optional.