ipsec auf dem Sharp Zaurus

IPSec auf dem Sharp Zaurus

english This page in english

News

Die ersten Binaries sind nun auch für Openzaurus verfügbar. Ken Bantoft berichtet hier über seine Fortschritte und stellt die aktuellen Files in einem feed bereit, allerdings sollte man sich vorher die Anmerkungen gut durchlesen, da noch nicht alles out-of-the-box funktioniert.
Update: Ab der neuesten Openzaurus Version 3.1rc2 braucht man expr nicht mehr extra zu installieren, da expr nun in busybox bereits vorhanden ist. Ausserdem hat mir Joachim Ritschel von der TU-Ilmenau die Kernelmodule für ipsec und das tun-Device für den 2.4.18-rmk7-pxa3-embedix (SL-C7X0) bereitgestellt. Das Paket gibt es hier.

Warum ein VPN?

Der Zaurus ist von Hause aus mit einem Compact-Flash-Slot ausgestattet, da liegt es nahe, diesen mit einer Wireless Lan Karte auszustatten. Da das im WLan-Bereich oft standardmässig genutzte WEP leider nicht als sicher anzusehen ist (vergl. z.B. wep_attack), benötigt man eine Alternative. Hierzu ist freeswan bestens geignet..

Auftretende Probleme

Da ipsec auf dem Networklayer arbeitet, kommt der Nutzer an einer Änderung des Kernels nicht vorbei. Der Kernel auf dem Zaurus befindet sich allerdings im Flashrom, so dass ein Kernelupdate zwar prinzipiell möglich, aber dennoch mit einigen Problemen verbunden ist (vergl. Kernelupdate auf dem Zaurus). Zum Glück lässt sich ipsec jedoch als Modul kompilieren, so dass man diesen Problemen aus dem Weg gehen kann. Leider gab es bis jetzt zwar freeswan zumindest in einer älteren Version crosscompiliert für den Zaurus, jedoch kein fertig kompiliertes Modul für den original Kernel (linux-2.4.6-rmk1-np2-embedix), somit musste ich selber Hand anlegen.

Das Ergebnis

Das Ergebniss ist ein ipsec Modul sowie die Daemons und Userlandtools von freeswan 1.98b, welche zusammen den Aufbau eines VPNs auf dem Zaurus ermöglichen, ohne dass der original Kernel ausgetauscht werden muss.

Downloads

Hier gibt es freeswan 1.98b sowie das zugehörige Kernelmodul passend für den orignial Kernel linux-2.4.6-rmk1-np2-embedix kompiliert:

freeswan 1.98b
ipsec Modul für linux-2.4.6-rmk1-np2-embedix

Ausserdem wird awk und die libgmp benötigt. Beide findet man bei ipkgfind.

Tips für die Nutzung

Kurz nachdem das erste mal eine ipsec-Verbindung aufgebaut worden ist, wird man zum ersten mal mit einem sehr ungünstigen Feature des von Sharp geliefertem QPE überrascht. Es erscheint ca. alle zwei Minuten eine Alertbox, die einen Netzwerkkonflikt bemängelt, da eth0 und ipsec0 die gleiche IP benutzen. Leider habe ich nicht herausfinden können, wo genau diese Meldung herkommt. Als gut funktionierenden Workaround hat sich folgendes herausgestellt:

In der Datei /usr/lib/ipsec/_realsetup am Ende von start ein paar Sekunden warten und dann die IP von eth0 auf eine IP in einem anderen Subnetz ändern. Dies beeinträchtigt ipsec nicht, da diese IP nur beim Aufbau des VPNs nötig ist. Wichtig ist allerdings ein sleep, ansonsten funktioniert der Aufbau nicht, da ipsec ein paar Sekunden noch die richtige IP braucht (Also z.B. folgendes einfügen: sleep 6 && ifconfig eth0 192.168.123.123). Am Ende von stop in der gleichen Datei sollte man natürlich die IP mittels ifconfig wieder zurücksetzen.

Ausserdem braucht man die Logfunktion von ipsec normalerweise auf dem Zaurus nicht, da syslogd meistens nicht aktiv ist. Um Speicher zu sparen kann man deswegen die Logfunktionen aus den Startskripts auskommentieren.

Developer: Kernelkompilierung

Für alle, die ebenfalls probieren wollen, das Modul selber zu kompilieren, hier in Kurzfassung, wie ich es geschafft habe (evtl. muss noch das eine oder andere Makefile leicht angepasst werden, damit die arm-linux-tools gefunden werden):
  1. Kernelsource besorgen und kompilieren (vergl. Kernelkompilierung)
  2. freeswan downloaden
  3. Im Verzeichnis von freeswan make menugo aufrufen (keine Umgebungsvariablen für Zaurus setzen)
  4. Nach dem menuconfig das Kompilieren abbrechen
  5. Im Kernelverzeichnis make clean auffrufen
  6. Im Kernelverzeichnis in linux/net/ipsec/libdes/ make gcc aufrufen
  7. make dep && make modules

Developer: freeswan-Kompilierung

Hier ebenfalls ein paar kurze Hinweise für diejenigen, die freeswan crosscompilieren wollen:
  1. Makefile.inc anpassen
  2. Crosscompile-Umgebung herstellen
  3. gmp.h wird benötigt
  4. libgmp.so wird als shared library für den Zaurus benötigt
  5. make programs
  6. Mittles arm-linux-strip --strip-unneeded die Binaries möglichst klein halten

Kontakt

Ich hoffe, dass diese Seite vielen Leuten nützt, für mich ist ipsec eine der wichtigsten Sachen für den Zaurus. Mein Dank geht an Markus Tavenrath für die freundliche Hilfe bei den Crosscompile-Optionen.
Jens Liebchen