ELV hat nun endlich meinen Raspberry Pi 2 B und das Homematic Funkmodul geliefert. Natürlich direkt losgelegt und das 2.15.5-3 Image auf die SD Karte geschrieben. Nachdem ich mich (wie bei jedem Pi) erst mal rum ärgern musst bis er die SD Karte akzeptiert, habe ich mir das System genauer angeschaut.
Dabei habe ich auch nach Möglichkeiten für ein VPN gesucht und dabei gesehen, dass dieses Image von Haus aus OpenVPN mit bringt! Perfekt! Sicherlich kann man auch auf meine-homematic.de zurück greifen (preislich ist der Service völlig im Rahmen), aber ich gehöre zu denen die so etwas gerne unter der eigenen Administration haben. Auch arbeite ich bei einem vServer Provider, wodurch ich hier doch die ein oder andere Ressource auf meinen Servern frei habe
Die folgende Anleitung beschreibt eine Möglichkeit auf dem Raspberry Image OpenVPN ans laufen zu bekommen.
Benötigt wird:
- Linux Vorkenntnisse.
- Ein vServer mit Linux (Anleitung ist auf Debian ausgelegt, dürfte aber zu Ubuntu weitestgehend übernommen werden können. Der vServer sollte mit einer Vollvirtualisierung wie KVM oder Xen realisiert sein)
- Ein Android Smartphone mit der OpenVPN Connect App.
- Aktivierter SSH Zugriff zur OCCU
Installieren:
Code: Alles auswählen
apt-get install openvpn easy-rsa
Code: Alles auswählen
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa2
mkdir /etc/openvpn/easy-rsa2/keys
echo 01 > /etc/openvpn/easy-rsa2/keys/serial
Datei: /etc/openvpn/easy-rsa2/vars
Ihr findet ganz unten in der Datei einen Block mit Exports, diese müsst ihr nach euren Anforderungen anpassen. Der Block beginnt mit:
Die nachfolgenden Zeilen wurden in meinem Fall wie folgt angepasst:# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
Code: Alles auswählen
export KEY_COUNTRY="DE"
export KEY_PROVINCE="BW"
export KEY_CITY="Karlsruhe"
export KEY_ORG="ks"
export KEY_EMAIL="meine@email.de"
export KEY_CN=ksvpn
export KEY_NAME=ksvpn
export KEY_OU=ksvpn
Zuerst ein
Code: Alles auswählen
cd /etc/openvpn/aesy-rsa2
source ./vars
./clean-all
1.) CA
Code: Alles auswählen
./build-ca
Code: Alles auswählen
./build-key-server server
Code: Alles auswählen
./build-dh
für die Hommatic:
Code: Alles auswählen
./build-key homematic
Code: Alles auswählen
./build-key phone
Die ca.crt und clientname.crt und clientname.key müsst ihr euch auf das jeweilige gerät kopieren wo diese später benötigt werden.
Nun konfigurieren wir den OpenVPN Server:
Code: Alles auswählen
vim /etc/openvpn/server.conf
Code: Alles auswählen
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa2/keys/ca.crt # generated keys
cert /etc/openvpn/easy-rsa2/keys/server.crt
key /etc/openvpn/easy-rsa2/keys/server.key # keep secret
dh /etc/openvpn/easy-rsa2/keys/dh1024.pem
server 10.9.8.0 255.255.255.0 # internal tun0 connection IP
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo # Compression - must be turned on at both end
persist-key
persist-tun
status log/openvpn-status.log
verb 3 # verbose mode
client-to-client
Code: Alles auswählen
service openvpn restart
Code: Alles auswählen
dev tun
proto udp
remote SERVERIP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 1
keepalive 10 900
inactive 3600
comp-lzo
<ca>
-----BEGIN CERTIFICATE-----
.............
-----END CERTIFICATE------
</ca>
<cert>
-----BEGIN CERTIFICATE-----
.............
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
.............
-----END PRIVATE KEY-----
</key>
Die Datei kann dann aufs Smartphone kopiert und in der OpenVPN Connect App als Profil importiert werden.
Nun der interessante Teil. Einrichten auf der OCCU:
Wir verbinden uns per SSH zur OCCU und führen folgende Befehle aus:
Das Dateisystem ist per Default Read-Only gemounted. Dies müssen wir ändern um die Keys und Config schreiben zu können:
Code: Alles auswählen
mount -o remount, rw /dev/root
Code: Alles auswählen
mkdir /etc/openvpn
mkdir /etc/openvpn/keys
Benötigt werden die ca.crt sowie die homematic.crt und homematic.key
Dann legen wir in /etc/openvpn noch die client.conf mit folgendem Inhalt an:
Code: Alles auswählen
client
remote SERVERIP
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/homematic.crt
key /etc/openvpn/keys/homematic.key
comp-lzo yes
dev tun
proto udp
nobind
auth-nocache
script-security 2
persist-key
persist-tun
user nobody
group nogroup
Code: Alles auswählen
/etc/init.d/S60openvpn start
Code: Alles auswählen
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.9.8.14 P-t-P:10.9.8.13 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:2502 errors:0 dropped:0 overruns:0 frame:0
TX packets:2398 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:199210 (194.5 KiB) TX bytes:1115222 (1.0 MiB)