Ihr habt einen Server mit Ubuntu irgendwo im Netz stehen? Dann könnt ihr daraus einen OpenVPN Server machen. Ich habe hier die wichtigsten Schritte für mich dokumentiert.
Foto: pixabay.com unter CC0 Linzenz
OpenVPN installieren
sudo apt-get install openvpn easy-rsa
Falls das Paket easy-rsa
nicht vorhanden ist, dann lässt sich das auch hier bekommen.
Server Zertifikate generieren
Passe die Parameter in der Datei vars
an deine Bedürfnisse an.
cd /etc/openvpn/easy-rsa
sudo vim vars
export KEY_COUNTRY="XX"
export KEY_PROVINCE="YY"
export KEY_CITY="City"
export KEY_ORG="My VPN Service"
export KEY_EMAIL="mail@example.com"
eventuell noch KEY_SIZE auf mindestens 2048 Bit setzen.
Jetzt können die Zertifikate generiert werden:
source ./vars
sudo -E ./clean-all
sudo -E ./build-ca
sudo -E ./build-key-server server
sudo -E ./build-dh
sudo openvpn --genkey --secret ta.key
Diese müssen dann noch in das OpenVPN Verzeichnis kopiert werden.
sudo cp ca.crt /etc/openvpn
sudo cp ca.key /etc/openvpn
sudo cp dh2048.pem /etc/openvpn
sudo cp server.crt /etc/openvpn
sudo cp server.key /etc/openvpn
sudo cp ta.key /etc/openvpn
Client Zertifikate generieren
Nun müssen noch die Zertifikate für den Client generiert werden.
source ./vars
sudo -E ./build-key user1
Diese Dateien kopiert man nun (am besten via ssh/scp) auf den Client.
ca.crt
user1.crt
user1.key
ta.key
Wie man OpenVPN auf einem iPhone einrichtet, habe ich hier beschrieben.
OpenVPN Konfiguration
Einen eigenen User anlegen
sudo adduser --system --no-create-home --disabled-login openvpn
sudo addgroup --system --no-create-home --disabled-login openvpn
Konfigurationsdatei anlegen:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz
Dort anpassen unter welchem User der OpenVPN Service laufen soll.
sudo vim server.conf
user openvpn
group openvpn
TLS Authentication aktivieren.
sudo vim server.conf
tls-auth ta.key 0
Den OpenVPN Service neu starten.
sudo service openvpn restart
Überprüfen, ob das Netzwerkdevice eingerichtet wurde.
ifconfig tun0
Ab hier solltet ihr euch schon problemlos zum OpenVPN Server verbinden können.
Kompletten Client Traffic durch das VPN routen
Viele möchten gerne den kompletten Traffic ihres Clients über das VPN routen. Das ist zum Beispiel sinnvoll, wenn man in einem öffentlichen WLAN sicher gehen will, dass niemand Daten abgreift.
cd /etc/openvpn
sudo vim server.conf
Diese Zeile aktivieren (ist auskommentiert im Default):
push "redirect-gateway def1 bypass-dhcp"
DNS Server für Clients definieren (hier im Beispiel 8.8.8.8 von Google).
push "dhcp-option DNS 8.8.8.8"
Den OpenVPN Service neu starten.
sudo service openvpn restart
IP-Forwarding aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
SNAT Regel anlegen (hinten $SERVERIP
durch die IP Adresse des Servers ersetzen):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to $SERVERIP
Dafür sorgen, dass die iptables Regel nach einem Reboot noch vorhanden ist:
sudo apt-get install iptables-persistent
sudo bash -c "iptables-save > /etc/iptables/rules.v4"
Als Vorlage hat mir das Gist von padde gedient.
Das lässt sich auch auf einem OpenWRT betriebenen Router aufsetzen. Wie das geht, findet sich hier.
Wer in die Details einsteigen will, der findet hier die komplette Anleitung von openvpn.net.