OpenVPN: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 145: | Zeile 145: | ||
nano -w /etc/openvpn/server.conf | nano -w /etc/openvpn/server.conf | ||
server-bridge 192.168.1.2 255.255.255.0 192.168.2.10 192.168.2.20 | server-bridge 192.168.1.2 255.255.255.0 192.168.2.10 192.168.2.20 | ||
port 1194 | port 1194 | ||
proto udp | proto udp | ||
dev tap0 | dev tap0 | ||
ca /etc/openvpn/keys/ca.crt | ca /etc/openvpn/keys/ca.crt | ||
dh /etc/openvpn/keys/dh2048.pem | dh /etc/openvpn/keys/dh2048.pem | ||
Zeile 157: | Zeile 157: | ||
key /etc/openvpn/keys/EUER_SERVER.key | key /etc/openvpn/keys/EUER_SERVER.key | ||
tls-auth /etc/openvpn/keys/ta.key 0 | tls-auth /etc/openvpn/keys/ta.key 0 | ||
user openvpn | user openvpn | ||
group openvpn | group openvpn | ||
cipher AES-256-CBC | cipher AES-256-CBC | ||
resolv-retry infinite | resolv-retry infinite | ||
persist-key | persist-key | ||
persist-tun | persist-tun | ||
keepalive 10 120 | keepalive 10 120 | ||
comp-lzo | comp-lzo | ||
verb 3 | verb 3 | ||
client-to-client | client-to-client | ||
Version vom 21. Februar 2008, 02:23 Uhr
OpenVPN
Ich wollte einfach mal 2 Rechner via Internet verbinden. Über Windows geht das ja relativ easy mit Hamachi. Aber auch unter Linux ist das mit OpenVPN sehr leicht zu realisieren. Als Server läuft ein Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit und ein Gentoo-Linux 32bit. Der Lappy steht im ebenfalls im Lan, dient also nur zur Kontrolle, ob es "theoretisch" geht. Der Gentoo-Root wiederrum steht in Frankfreich und ist Optimal zum testen.
Ich gehe hier auf die "relativ" einfache Einrichtung und Installation einer OpenVPN-Bridge mit Client-to-Client funktion ein.
Installation
Als erstes müssen wir OpenVPN ganz normal installieren.
# pacman -S openvpn
Konfiguration
--- Module ---
Als erstes laden wir die nötigen Module
# modprobe tun bridge
zur Kontrolle
# lsmod | grep tun; lsmod | grep bridge
tun 10368 1 bridge 56488 0
--- Bridge ---
So die Bridge ist eigentlich relativ einfach einzurichten.
Bei mir siehts folgendermaßen aus:
# cat /etc/conf/bridges
bridge_br0="eth0 tap0" BRIDGE_INTERFACES=(br0)
Dann kommt die /etc/rc.conf dran:
Erstmal fügen wir bei MODULES= tun und bridge hinzu.
Dann kommen die eigentlichen Einstellungen:
eth0="eth0 up" tap0="tap0 up" br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255" INTERFACES=(lo eth0 br0) gateway="default gw 192.168.1.1" ROUTES=(gateway)
Wir klauen der eth0 (je nach System auch eth1) die IP und geben der br0 die dafür.
Somit ist die Brücke fast fertig.
Wir müssen nur noch dafür sorgen das tap0 noch angelegt wird. Dafür habe ich ein kleines rc.d-Script gefunden, welches einfach vor network in der rc.conf kommt.
#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions case "$1" in start) stat_busy "Creating tap0 interface" /usr/sbin/openvpn --mktun --dev tap0 >/dev/null if [ $? -eq 0 ]; then stat_done else stat_fail fi ;; stop) stat_busy "Destroying tap0 interface" /usr/sbin/openvpn --rmtun --dev tap0 >/dev/null stat_done ;; *) echo "usage: $0 {start|stop}" esac exit 0
Dieses einfach unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktioniert. Dieses dann einfach vor network in der rc.conf unter DAEMONS= einfügen.
-- Keys erstellen --
Als nächstes müssen wir die SSL und TLS - Keys erstellen. Dafür gibt es das tolle Tool Easy-RSA was unter /usr/share/openvpn/easy-rsa zufinden ist.
Als erstes bearbeiten wir die Datei vars.
nano -w vars
Ich denke die Sachen da drin sind selbstklärend. Das Verzeichnis am Anfang so lassen.
Dann werden nun die Certificate erstellt:
source vars // Nach jeder Änderung in dieser datei muss sie neu "gesourced" werden
dann
./clean-all // löscht vorab alle evtl. vorhandenen Keys / Certs.
und dann
./build-ca --pass // Passwort -> kein triviales Kennwort verwenden! "Organizational Unit Name" -> leer lassen
Somit haben wir schon mal die CA-Certificates.
Nun kommen die Server-Certificate.
./build-key-server IRGEND_EIN_NAME // "challenge password" -> leer lassen / "An optional company name" -> leer lassen / "Sign the certificate? [y/n]" -> y / "1 out of 1 certificate requests certified, commit?" -> y
und nun noch die Gegenstücke des Clients
./build-key client
Nun kommt noch das Diffie Hellmann
./build-dh
So und als letztes kommt der TLS-Key
openvpn --genkey --secret /usr/shar/openvpn/easy-rsa/keys/ta.key
So nun liegen die ganzen Sachen ja im /usr/shar/openvpn/easy-rsa/keys/, ich habe sie nach /etc/openvpn/keys verschoben.
Nun haben wir alle wichtigen Keys und vorbereitungen zusammen.
-- SERVER-Config --
Als erstes kopieren wir alles aus /etc/openvpn/examples/ nach /etc/openvpn/
dann
nano -w /etc/openvpn/server.conf server-bridge 192.168.1.2 255.255.255.0 192.168.2.10 192.168.2.20 port 1194 proto udp dev tap0 ca /etc/openvpn/keys/ca.crt dh /etc/openvpn/keys/dh2048.pem cert /etc/openvpn/keys/EUER_SERVER.crt key /etc/openvpn/keys/EUER_SERVER.key tls-auth /etc/openvpn/keys/ta.key 0 user openvpn group openvpn cipher AES-256-CBC resolv-retry infinite persist-key persist-tun keepalive 10 120 comp-lzo verb 3 client-to-client
So ist meine Configuration. Sie sagt im Endeffekt eigentlich nur, wer der Server ist, und welche Ips die Clienten bekommen, dann noch welche Verschlüsselung und Komprimierung genommen werden soll. Ausführlichere Informationen findet ihr auf der OpenVPN Seite.
Da im Arch-OpenVPN-Paket noch kein rc.d-Script dabei ist. Müssen wir das ganze über die /etc/rc.local starten.
nano -w /etc/rc.local
openvpn --config server.conf --tls-server --daemon
---CLIENT