Inhaltsverzeichnis

OpenVPN Installation

Autor: F4RR3LL|sven
Email: sven.richter@nixhelp.de
Stand: 18.08.2009
System: Debian ETCH 4.0 + ff


Anhand dieser Anleitung wird OpenVPN auf Debian installiert


OpenVPN installieren

aptitude install openvpn openssl udev

Hier installieren wir nun OpenVPN, OpenSSL falls noch nicht schon angelegt und das benötigte udev welches uns die TAP Schnittstelle für OpenVPN zur Verfügung stellt.

Zertifikate und Schlüssel für den OpenVPN Server anlegen

Wir beginnen mit dem Server. Hier müssen wir die Zertifikate für die spätere TLS Verbindung zu den Clients erstellen.

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0
 
nano vars 

(hier könnt ihr eure Daten anpassen) anschließend speichern mit strg +o und dann schließen mit strg +x

source ./vars

./clean-all
./build-ca

Keys für den Server erstellen

./build-key-server server

Keys für den Clienten erstellen

./build-key client1

Zu guter letzt noch Diffie Hellman parameter erstellen

./build-dh

Configfile für den OpenVPN Server anlegen

Hier treffen wir auf unser neues IP und Subnetz. Wir verwenden das Netz 172.16.0.0 255.255.0.0. Das 172.16er Netz gilt nach Internationalem Standard als Internes Netzwerk und wir kommen somit nicht mit IP's in Konflikt.
Hierzu unten stehende Config unter /etc/openvpn/server.conf speichern. (Aufgrund aktueller Ereignisse: cat ist ein eigenständiger Befehl. Das Untere einfach copy paste in die Console copieren und nicht via nano vi vim joe o.ä. einfügen)

cat > /etc/openvpn/server.conf << "EOF"
# Port
port 1194

# TCP oder UDP?
#proto tcp-server
proto udp
mode server
tls-server
dev tap

#Unser VPN Interface des Servers
ifconfig 172.16.17.1 255.255.0.0

#Adressbereich unserer Clients
ifconfig-pool 172.16.17.2 172.16.17.254

#Paketgroesse festlegen
#tun-mtu 1492
#fragment 1300
#mssfix

#Pfade zu den Zertifikaten
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key


#Clients können miteinander kommunizieren
#client-to-client

#Diffie-Hellmann Parameters
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

#Mithilfe dieses Parameters erhalten wir soweit möglich immer die gleiche IP Adresse vom VPN Server
ifconfig-pool-persist ipp.txt

#Wer in ein internes Netzwerk weiter routen möchte muss das hier mit dem entsprechenden Bereich eintragen!
#push "route 192.168.0.0 255.255.255.0"

#Teste die Aktivität anhand eines Pings (wait=120sec)
keepalive 10 120

#Authenication
auth SHA1

#Our encryption algorithm
#cipher aes-256-ecb
#openvpn --show-ciphers for testing

#comp
comp-lzo

#Sets new rights after the connection
user nobody
group nogroup

#We need this because of user nobody/group nobody.
persist-key
persist-tun

#Logging 0, (testing:5)
verb 3
EOF

Unter Win muss dieser Teil hier ohne # drin stehen, für Win User also nicht vergessen das anzupassen

#Paketgroesse festlegen
tun-mtu 1492
fragment 1300
mssfix

Testen des Servers durch Start am Server

Wir starten den Server zum Test manuell. Wenn unten stehende Ausgabe erscheint ist alles in Ordnung. Wenn nicht nochmal die Zertifikate prüfen.

cd /etc/openvpn&& openvpn --config server.conf
OpenVPN 2.0 i386-pc-linux [SSL] [LZO] built on Jun 20 2008
Diffie-Hellman initialized with 1024 bit key
WARNING: file 'certs/serverkey.pem' is group or others accessible
TLS-Auth MTU parms [ L:1568 D:140 EF:40 EB:0 ET:0 EL:0 ]
TUN/TAP device tap0 opened
/sbin/ifconfig tap0 172.16.17.1 netmask 255.255.0.0 mtu 1492 broadcast 10.0.0.255
Data Channel MTU parms [ L:1568 D:1450 EF:44 EB:23 ET:32 EL:0 AF:3/1 ]
GID set to nogroup
UID set to nobody
Listening for incoming TCP connection on [undef]:21
TCPv4_SERVER link local (bound): [undef]:21
TCPv4_SERVER link remote: [undef]
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=172.16.17.2 size=253
IFCONFIG POOL LIST
Home,172.16.17.2
MULTI: TCP INIT maxclients=1024 maxevents=1028
Initialization Sequence Completed 

Wir brechen diesen Test mit Control C wieder ab und starten OpenVPN normal.

/etc/init.d/openvpn restart

Den korrekten Start sehen wir mit [OK] bestätigt und können über ifconfig auf der console an unserem Server prüfen ob das TAP Device angelegt worden ist.

Config für die Clients

Wir müssen nun noch die Files:
client1.key
client1.crt
ca.crt

mit einer sicheren Verbindung wie WinSCP etc. zu unserem Client PC übertragen.
Die Files werden unter C - Programme - openvpn - config gespeichert.

Als letztes fehlt uns nur noch die Config für unseren Client:
Diese config muss ebenfalls in den config Ordner unseres OpenVPN Ordners und muss den Namen „client.ovpn“ tragen.

client
float
dev tap

#MTU
#tun-mtu 1492
#fragment 1300
#mssfix

#device name, unter linux nicht mehr auskommentieren (# löschen)
#dev-node vsn-device

#tcp oder udp
proto udp

#Server IP
remote $UNSERE-SERVER-IP 1194

#force authentication
#WICHTIG: hier den COMMON Name vom Server Zertifikat nehmen!
tls-remote server

ca ca.crt
cert client1.crt
key client1.key


auth SHA1
#cipher aes-256-cbc
nobind
comp-lzo
persist-key
persist-tun
verb 0

Wenn die Config und unsere Files richtig und sicher übertragen worden sind haben wir nach einem Neustart des Clientpcs eine neue Netzwerkschnittstelle mit einer IP 172.16.17.XXX .

Ob die Verbindung erfolgreich ist können wir anhand eines Pings feststellen:

ping 172.16.17.1
PING 172.16.17.1 (172.16.17.1): 56 data bytes
64 bytes from 172.16.17.1: icmp_seq=0 ttl=128 time=23.2 ms
64 bytes from 172.16.17.1: icmp_seq=1 ttl=128 time=22.4 ms

--- 172.16.17.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 2.4/2.8/3.2 ms 

Wenn der Ping funktioniert steht unsere VPN Verbindung.

FIX für User mit 64Bit Vista:

Boote den Rechner im Abgesicherten Modus ( Neustart und beim Starten == F8 == drücken ).
Führe die ProgramFiles/OpenVPN/bin/addtap.bat aus. Anschließend neu starten. Nun sollte es auch mit 64 bit Vista laufen.


Viel Spaß mit eurem VPN Server


Zurück zum Index