Freitag, 31. Oktober 2008

Freecom FSG-3 als Open-VPN Client

Da ich es leid war, die VPN-Verbindung in das Firmennetz ständig auf dem Notebook per Hand herzustellen und um eventuell weitere Netzwerkgeräte, wie zum Beispiel ein SIP-Telefon, mit dem Netzwerk zu verbinden, habe ich mein FSG-3 als Openvpn Client eingerichtet.
Zuerst sind die nötigen Pakete zu installieren:

ipkg install openvpn
ipkg install kernel-module-tun

Empfehlenswert ist zur Komprimierung noch LZO:

ipkg install lzo

Sämtliche Dateien des Openvpn Paketes werden wieder unter /opt/ abgelegt.
Die Konfigurationsdatei ist in meinem Fall /opt/etc/openvpn/openvpn.conf:


client
remote xxx.xxxxx.xx 1194
# Hostname/externe IP des Servers/Routers, Port entsprechend anpassen
proto udp
dev tun
pkcs12 /opt/etc/openvpn/mycert.p12 # Zertifikat im PKCS#12 Format
ns-cert-type server
verb 3
keepalive 10 60
route xxx.xxx.xxx.x 255.255.255.0 # entferntes Netz
comp-lzo


Die Authentifizierung erfolgt über X509 Zertifikate. Erstellt habe ich diese über eine eigene CA, Anleitungen dafür gibt es zum Beispiel auf der Openvpn Webseite, deshalb gehe ich hier nicht weiter darauf ein.
Mein Zertifikat ist im PKCS#12 Format erstellt, da dort alle Komponenten in einer Datei liegen. Andernfalls ist in der Konfiguration auf die einzelnen Komponenten zu verweisen:

#pkcs12 /opt/etc/openvpn/mycert.p12
ca /opt/etc/openvpn/ca.crt
cert /opt/etc/openvpn/server.crt
key /opt/etc/openvpn/server.key # This file should be kept secret

Die PKCS#12 Datei darf nicht mit einem Passwort versehen sein. Ist dies beim private Key der Fall, muss dies erst entfernt werden:

openssl rsa <> newserver.key

Da Openvpn automatisch beim Systemstart geladen werden soll, habe ich mir die Vorlage angepasst und nach /etc/init.d/openvpn kopiert. Bei den Anpassungen habe ich auf die vorhandenen Startscripte zurückgegriffen:

#! /bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
if ( [ !
-c /dev/net/tun ] ) then
if ( [ ! -d /dev/net ] )
then
mkdir -m 755
/dev/net
fi
mknod /dev/net/tun c 10
200
fi
if (
!(/sbin/lsmod grep -q "^tun") );
then
/sbin/insmod
/lib/modules/2.6.18/kernel/drivers/net/tun.ko
fi

if [ -n "`pidof
openvpn`" ]; then
/bin/killall openvpn
2>/dev/null
fi
cd /opt/etc/openvpn --config
openvpn.conf
REMOTENET=xxx.xxx.xxx.x/24 #
Mit dem IP Kreis des
entfernten
Netzes ersetzen
INIF=eth0
IPaddr=$(grep ^config_ipaddr /etc/master.conf cut -d= -f2)
IPmask=$(grep ^config_netmask /etc/master.conf cut -d= -f2)
SUBNET=$(ipcalc $IPaddr $IPmask cut -d" " -f3)
/sbin/iptables -A FORWARD -i tun+ -o $INIF \

--source $REMOTENET --destination $SUBNET -m state \
--state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i tun+ --source $REMOTENET \

-m state --state RELATED,ESTABLISHED -j ACCEPT

Mittels dieses Startscripts wir zur Vorsicht IP Forward für IPv4 noch einmal eingeschalten, bei Nichtvorhandensein die Gerätedatei für tun angelegt und das Modul geladen. Dann wird Openvpn gestartet und noch ein paar Firewallregelen erzeugt. Die hier eingesetzten Regeln bewirken, das der Zugriff vom FSG-3 selbst und aus dem eigenen Netzwerk auf das entfernte Netzwerk möglich ist. Vom remote Netzwerk aus ist kein Verbindungsaufbau möglich, wenn dies gewünscht ist, müssen die Regeln so aussehen:

/sbin/iptables -A FORWARD -i tun+ -o $INIF --source $REMOTENET --destination \
$SUBNET -j ACCEPT
/sbin/iptables -A INPUT -i tun+ --source $REMOTENET -j ACCEPT

Letztendlich wird das Startscript noch aktiviert:

ln -s /etc/init.d/openvpn /etc/rc/S99openvpn

Somit startet der Openvpn Client bei jedem Systemstart automatisch.

Wie geht es weiter:

Freitag, 17. Oktober 2008

FSG - Kommandozeile mit Minimalkomfort

Im Moment bin ich dabei, mein Freecom Storage Gateway ein wenig in seinen Möglichkeiten zu erweitern. Speziell soll es auch als VPN Gateway arbeiten. Auf jeden Fall kommt man hier mit den vorgesehenen Möglichkeiten über die Admin-Oberfläche nicht viel weiter. Also geht es ab auf die Kommandozeile, an sich kein Problem. Dort fehlen dann aber schon schnell gewohnte Programme, wie zum Beispiel der GNU Midnight Commander oder einfach nur "less". Dies alles lässt sich recht einfach mittels "ipkg" nachinstallieren.
Die zusätzlichen Pakete werden dabei alle unter "/opt" installiert, um vom Standard System getrennt zu sein. Das ist insgesamt sinnvoll, macht den Aufruf aber umständlicher, da die Programmverzeichnisse nicht im Suchpath liegen.
Aus dem Grund bietet es sich an, die Datei "/etc/profile" mit folgendem Inhalt auzulegen:

PATH="$PATH:/opt/bin:/opt/sbin"
export PATH

Nach dem nächsten Systemstart ist der Suchpath erweitert und die neu installierte Software kann ganz normal aufgerufen werden.