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:
- ich werde in Kürze noch die Konfiguration des Servers erklären
- die nötigen Konfigurationsdateien und zusätzliche Tools werde ich auf meiner Webseite im Linux Bereich zum Download anbieten