OpenVPN: Unterschied zwischen den Versionen
K Orthografische und stilistische Änderung |
|||
(28 dazwischenliegende Versionen von 13 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{veraltet}} | |||
{{Artikelstil}} | |||
Das verbinden von Comoputern ist unter Windows mit Hamachi gut möglich. Aber auch unter Linux ist das mit OpenVPN ebenfalls sehr leicht zu realisieren. | |||
In diesem Artikel wird das Verbinden mit der OpenVPN-Variante Bridge und ihren Certifikaten beschrieben. Diese ist sehr leicht zu realisieren und zu warten und für einen kleinen Benutzerkreis (Bekanntenkreis) sehr geeignet. Für dieses Beispiel läuft als Server Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit, ein Gentoo (32bit/~x86) und ein MacOS 10.4.11 (Tiger). | |||
==Installation== | ==Installation== | ||
Als Erstes installiert man OpenVPN wie gewohnt mit pacman: | |||
# pacman -S openvpn bridge-utils easy-rsa | |||
# pacman -S openvpn | |||
==Konfiguration== | ==Konfiguration== | ||
To-do | |||
===Module=== | ===Module=== | ||
Bevor es losgehen kann, müssen die benötigten Module geladen werden | Bevor es losgehen kann, müssen die benötigten Module geladen werden: | ||
# modprobe tun bridge | # modprobe tun | ||
# modprobe bridge | |||
um dies zu kontrollieren: | |||
# lsmod | grep tun | # lsmod | grep -e tun -e bridge | ||
tun 10368 1 | tun 10368 1 | ||
Zeile 28: | Zeile 30: | ||
Die Bridge ist eigentlich relativ einfach einzurichten. | Die Bridge ist eigentlich relativ einfach einzurichten. | ||
Der Author verwendet folgende Konfiguration: | |||
# cat /etc/conf.d/bridges | |||
# cat /etc/conf/bridges | |||
bridge_br0="eth0 tap0" | bridge_br0="eth0 tap0" | ||
BRIDGE_INTERFACES=(br0) | BRIDGE_INTERFACES=(br0) | ||
Nun wird die /etc/rc.conf-Datei bearbeitet: | |||
Zuerste bei der Linie MODULES= tun und bridge hinzufügen. | |||
Dann kommen die eigentlichen Einstellungen: | Dann kommen die eigentlichen Einstellungen: | ||
Zeile 45: | Zeile 46: | ||
tap0="tap0 up" | tap0="tap0 up" | ||
br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255" | br0="br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255" | ||
INTERFACES=(lo eth0 br0) | INTERFACES=(lo eth0 br0 tap0) | ||
gateway="default gw 192.168.1.1" | gateway="default gw 192.168.1.1" | ||
ROUTES=(gateway) | ROUTES=(gateway) | ||
Die IP von eth0 (je nach System auch eth1) in br0 einfügen. Diese danach bei eth0 (eth1) entfernen. | |||
Somit ist die Brücke schon fast fertig. | Somit ist die Brücke schon fast fertig. | ||
Nun muss dafür gesorgt werden, dass tap0 angelegt wird. Dafür dieses rc.d-Script in der Datei rc.conf vor network einfügen: | |||
#!/bin/bash | #!/bin/bash | ||
Zeile 81: | Zeile 81: | ||
exit 0 | exit 0 | ||
Dieses Script | Dieses Script anschliessend noch unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktioniert's. Das Interface wird anschließend über /etc/rc.d/tap0 gestartet. Wie gesagt sollte es vor network in rc.conf in den DAEMONS eingetragen werden. | ||
===Keys=== | ===Keys=== | ||
Als nächstes müssen wir die SSL und TLS - 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 | Dafür gibt es das tolle Tool Easy-RSA was unter /usr/share/easy-rsa zu finden ist. | ||
Als erstes bearbeiten wir die Datei vars: | Als erstes bearbeiten wir die Datei vars: | ||
Zeile 117: | Zeile 117: | ||
./build-key-pass $client | ./build-key-pass $client | ||
Nun kommt noch das Diffie | Nun kommt noch das Diffie Hellman | ||
./build-dh | ./build-dh | ||
Zeile 123: | Zeile 123: | ||
Und als letztes kommt der TLS-Key | Und als letztes kommt der TLS-Key | ||
openvpn --genkey --secret | openvpn --genkey --secret ./keys/ta.key | ||
Jetzt liegen die ganzen Sachen unter /usr/ | Jetzt liegen die ganzen Sachen unter /usr/share/easy-rsa/keys/, ich habe sie aber nach /etc/openvpn/keys verschoben. | ||
Nun haben wir alle wichtigen Keys und Vorbereitungen zusammen. | Nun haben wir alle wichtigen Keys und Vorbereitungen zusammen. | ||
Zeile 131: | Zeile 131: | ||
===Server=== | ===Server=== | ||
Als erstes kopieren wir alles aus / | Als erstes kopieren wir alles aus /usr/share/openvpn/examples/ nach /etc/openvpn/ | ||
dann | dann | ||
Zeile 137: | Zeile 137: | ||
nano -w /etc/openvpn/server.conf | nano -w /etc/openvpn/server.conf | ||
server-bridge 192.168.1.2 255.255.255.0 192.168. | server-bridge 192.168.1.2 255.255.255.0 192.168.1.10 192.168.1.20 | ||
port 1194 | port 1194 | ||
proto udp | proto udp | ||
Zeile 183: | Zeile 183: | ||
Einfach für jeden benutzer ein eigenes Certificate erstellen: | Einfach für jeden benutzer ein eigenes Certificate erstellen: | ||
./build-key client | ./build-key-pass client | ||
./build-key client2 | ./build-key-pass client2 | ||
usw. | usw. | ||
Auf die jeweiligen Clienten müssen dann die clientX.* | Auf die jeweiligen Clienten müssen dann die clientX.*, die ta.key und das ca.crt liegen und in der client.config angegeben werden. | ||
Man kann auch Clienten "rauswerfen" und sperren: | Man kann auch Clienten "rauswerfen" und sperren: | ||
Zeile 197: | Zeile 197: | ||
Wir haben 3 Clienten zur Auswahl. Linux, Windows und MacOS | Wir haben 3 Clienten zur Auswahl. Linux, Windows und MacOS | ||
====Linux==== | ====Linux==== | ||
Als erstes nehmen wir uns den Linux-Client vor. Ich gehe stark davon aus, dass es keinen Unterschied macht, ob es nun eine Gentoo- oder eine Arch-Installation ist, oder | Als erstes nehmen wir uns den Linux-Client vor. Ich gehe stark davon aus, dass es keinen Unterschied macht, ob es nun eine Gentoo- oder eine Arch-Installation ist, oder eine andere Linux Distribution. | ||
Wir nehmen uns nun erstmal die Client-Config vor: | Wir nehmen uns nun erstmal die Client-Config vor: | ||
remote 192.168.1.2 | remote 192.168.1.2 | ||
local 192.111.111.2 | local 192.111.111.2 # nicht benötigt? | ||
client | client | ||
proto udp | proto udp | ||
Zeile 213: | Zeile 213: | ||
cipher AES-256-CBC | cipher AES-256-CBC | ||
comp-lzo | comp-lzo | ||
tun-mtu 1500 | #tun-mtu 1500 | ||
fragment 1300 | #fragment 1300 | ||
user openvpn | user openvpn | ||
group openvpn | group openvpn | ||
Zeile 245: | Zeile 245: | ||
Sollte alles geklappt haben, können wir den Server pingen: | Sollte alles geklappt haben, können wir den Server pingen: | ||
ping 192.168.2 | ping 192.168.1.2 | ||
Hat alles geklappt und der ping wird erfolgreich ausgeführt, steht das VPN und ihr könnt damit arbeiten | Hat alles geklappt und der ping wird erfolgreich ausgeführt, steht das VPN und ihr könnt damit arbeiten | ||
Zeile 273: | Zeile 273: | ||
key C:\\Programme\\OpenVPN\\keys\\client.key | key C:\\Programme\\OpenVPN\\keys\\client.key | ||
tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0 | tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0 | ||
comp-lzo | |||
tun-mtu 1500 | tun-mtu 1500 | ||
fragment 1300 | fragment 1300 | ||
Zeile 282: | Zeile 282: | ||
Diese einfach speichern. In der Windows Config fehlen die User und Grup angaben, da Windows das nicht unterstüzt. Anschließend das OpenVPN-GUI starten. Jetzt erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen. | Diese einfach speichern. In der Windows Config fehlen die User und Grup angaben, da Windows das nicht unterstüzt. Anschließend das OpenVPN-GUI starten. Jetzt erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen. | ||
Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrere Profile im Config- | Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrere Profile im Config-Verzeichnis ablegen, welche man dann auswählen kann. | ||
====MacOS X==== | ====MacOS X==== | ||
Zeile 300: | Zeile 300: | ||
cert /Users/$USER/Library/openvpn/client.crt | cert /Users/$USER/Library/openvpn/client.crt | ||
key /Users/$USER/Library/openvpn/client.key | key /Users/$USER/Library/openvpn/client.key | ||
tls-auth /$USER | tls-auth /Users/$USER/Library/openvpn/ta.key 1 | ||
comp-lzo | |||
tun-mtu 1500 | tun-mtu 1500 | ||
fragment 1300 | fragment 1300 | ||
Zeile 320: | Zeile 320: | ||
erweitern. | erweitern. | ||
Diese | Diese Verzeichnisse anlegen und dort folgendes machen: | ||
touch client1 (die Datei muss wie das Cert heisen, was ihr für den Clienten erstellt habt, zb heist das Cert client1.crt dann muss die Datei einfach client1 heißen) | touch client1 (die Datei muss wie das Cert heisen, was ihr für den Clienten erstellt habt, zb heist das Cert client1.crt dann | ||
muss die Datei einfach client1 heißen) | |||
Das könnt ihr für jeden Clienten so machen. | Das könnt ihr für jeden Clienten so machen. | ||
Zeile 344: | Zeile 345: | ||
[[Kategorie: | [[Kategorie:Netzwerk]] | ||
[[en:OpenVPN]] |
Aktuelle Version vom 4. August 2021, 07:38 Uhr
Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.
Dieser Artikel oder Artikelabschnitt bedarf einer stilistischen Überarbeitung laut Empfehlungen in Artikelstil.
Das verbinden von Comoputern ist unter Windows mit Hamachi gut möglich. Aber auch unter Linux ist das mit OpenVPN ebenfalls sehr leicht zu realisieren.
In diesem Artikel wird das Verbinden mit der OpenVPN-Variante Bridge und ihren Certifikaten beschrieben. Diese ist sehr leicht zu realisieren und zu warten und für einen kleinen Benutzerkreis (Bekanntenkreis) sehr geeignet. Für dieses Beispiel läuft als Server Archlinux (64bit / Testing). Als Gegenstelle dient ein Windows XP Professional 32bit, ein Gentoo (32bit/~x86) und ein MacOS 10.4.11 (Tiger).
Installation
Als Erstes installiert man OpenVPN wie gewohnt mit pacman:
# pacman -S openvpn bridge-utils easy-rsa
Konfiguration
To-do
Module
Bevor es losgehen kann, müssen die benötigten Module geladen werden:
# modprobe tun # modprobe bridge
um dies zu kontrollieren:
# lsmod | grep -e tun -e bridge
tun 10368 1 bridge 56488 0
Bridge
Die Bridge ist eigentlich relativ einfach einzurichten. Der Author verwendet folgende Konfiguration:
# cat /etc/conf.d/bridges
bridge_br0="eth0 tap0" BRIDGE_INTERFACES=(br0)
Nun wird die /etc/rc.conf-Datei bearbeitet:
Zuerste bei der Linie MODULES= tun und bridge hinzufügen.
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 tap0) gateway="default gw 192.168.1.1" ROUTES=(gateway)
Die IP von eth0 (je nach System auch eth1) in br0 einfügen. Diese danach bei eth0 (eth1) entfernen.
Somit ist die Brücke schon fast fertig.
Nun muss dafür gesorgt werden, dass tap0 angelegt wird. Dafür dieses rc.d-Script in der Datei rc.conf vor network einfügen:
#!/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 Script anschliessend noch unter /etc/rc.d/tap0 speichern, dann chmod 755 auf /etc/rc.d/tap0 und schon funktioniert's. Das Interface wird anschließend über /etc/rc.d/tap0 gestartet. Wie gesagt sollte es vor network in rc.conf in den DAEMONS eingetragen werden.
Keys
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/easy-rsa zu finden ist.
Als erstes bearbeiten wir die Datei vars:
nano -w vars
Ich denke die Einstellungen in vars sind selbstklärend. Das Verzeichnis am Anfang so lassen.
Dann werden nun die Certificates 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. Je nachdem wie ihr $Client benennt, heisen auch die Certs so. Dient der Übersichtlichkeit.
./build-key-pass $client
Nun kommt noch das Diffie Hellman
./build-dh
Und als letztes kommt der TLS-Key
openvpn --genkey --secret ./keys/ta.key
Jetzt liegen die ganzen Sachen unter /usr/share/easy-rsa/keys/, ich habe sie aber nach /etc/openvpn/keys verschoben.
Nun haben wir alle wichtigen Keys und Vorbereitungen zusammen.
Server
Als erstes kopieren wir alles aus /usr/share/openvpn/examples/ nach /etc/openvpn/
dann
nano -w /etc/openvpn/server.conf server-bridge 192.168.1.2 255.255.255.0 192.168.1.10 192.168.1.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 tun-mtu 1500 fragmente 1300 resolv-retry infinite persist-key persist-tun keepalive 10 120 comp-lzo verb 3 client-to-client
So sieht meine Konfiguration aus. 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 Website.
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 /etc/openvpn/server.conf --tls-server --daemon
Benutzer
Die Benutzer-Wahl ist bei diesem Verfahren recht einfach.
Einfach für jeden benutzer ein eigenes Certificate erstellen:
./build-key-pass client ./build-key-pass client2
usw.
Auf die jeweiligen Clienten müssen dann die clientX.*, die ta.key und das ca.crt liegen und in der client.config angegeben werden.
Man kann auch Clienten "rauswerfen" und sperren:
http://www.vpnforum.de/wiki/index.php/Zertifikate_sperren
Client
Wir haben 3 Clienten zur Auswahl. Linux, Windows und MacOS
Linux
Als erstes nehmen wir uns den Linux-Client vor. Ich gehe stark davon aus, dass es keinen Unterschied macht, ob es nun eine Gentoo- oder eine Arch-Installation ist, oder eine andere Linux Distribution.
Wir nehmen uns nun erstmal die Client-Config vor:
remote 192.168.1.2 local 192.111.111.2 # nicht benötigt? client proto udp dev tap0 ca /etc/openvpn/ca.crt cert /etc/openvpn/client.crt key /etc/openvpn/client.key tls-auth /etc/openvpn/ta.key 1 keepalive 10 120 cipher AES-256-CBC comp-lzo #tun-mtu 1500 #fragment 1300 user openvpn group openvpn persist-key persist-tun resolv-retry infinite verb 3
Der User OpenVPN und die Gruppe OpenVPN müssen natürlich aufm Clienten vorhanden sein.
Was umbedingt zu beachten ist, das /dev/tap0 was oben via rc.script erstellt worden ist, _MUSS_ unter Linux-Clienten _EBENFALLS_ erstellt werden, und dann mit einem beherztem
ifconfig tap0 up
zum leben erweckt werden.
Nachdem die Config bearbeitet wurde, müssen wir uns noch vom Server die Keys holen, die wir gerade erst erstellt haben und danach in die Configs eingetragen haben.
Ich habe es via SCP gemacht.
scp ca.crt ta.key client.* 192.111.111.2:/etc/openvpn/
nun sollten wir auch hier noch das TUN-Modul laden.
modprobe tun
Jetzt sollte man per ifconfig sehen, dass da das tap0-Interface hinzugekommen ist. Mit einer IP zwischen 192.168.1.10 u. 20. Genau so haben wir das ja in der Server-Config eingestellt.
Sollte alles geklappt haben, können wir den Server pingen:
ping 192.168.1.2
Hat alles geklappt und der ping wird erfolgreich ausgeführt, steht das VPN und ihr könnt damit arbeiten
Ich habe NFS u. Cups erfolgreich getestet.
Windows
Unter Windows habe ich mich für die aktuellen OpenVPN-Clients von http://openvpn.se entschieden.
Einfach die aktuelle Version herunterladen und installieren.
Vor dem ersten Start müssen auch hier wieder die Certificates und Keys vom Server geholt werden. Da hier kein SCP im traditionellen Sinn funktioniert, habe ich WinSCP genommen. Wieder die ca.crt ta.key client.*. Die habe ich nach C.\Programm\OpenVPN\keys kopiert.
Dann habe ich unter C:\Programm\OpenVPN\Config die client.opvn erstellt.
client dev tap0 proto udp remote 192.168.1.2 1194 resolv-retry infinite nobind persist-key persist-tun ca C:\\Programme\\OpenVPN\\keys\\ca.crt cert C:\\Programme\\OpenVPN\\keys\\client.crt key C:\\Programme\\OpenVPN\\keys\\client.key tls-auth C:\\Programme\\OpenVPN\\keys\\ta.key 0 comp-lzo tun-mtu 1500 fragment 1300 verb 3 reneg-sec 0 cipher AES-256-CBC
Diese einfach speichern. In der Windows Config fehlen die User und Grup angaben, da Windows das nicht unterstüzt. Anschließend das OpenVPN-GUI starten. Jetzt erscheint ein Symbol in der Taskleiste, dies via Doppelklick öffnen.
Dann verbindet er direkt auf den "Standard-VPN"-Server. Man kann auch mehrere Profile im Config-Verzeichnis ablegen, welche man dann auswählen kann.
MacOS X
Die Installation vom OpenVPN-Clienten Tunnelblick (http://www.tunnelblick.net/) funktioniert recht einfach. Da gehe ich hier nun selber nicht drauf ein, da sie sehr gut auf der Homepage erklaert ist.
Aber auch wie bei Windows und bei Linux müssen die Certificate erstellt werden und zum MacOS kopiert werden. Und die Config ist identisch mit der Windows / Linux Version.
client dev tap0 proto udp remote 192.168.1.2 1194 resolv-retry infinite nobind persist-key persist-tunca /Users/$USER/Library/openvpn/ca.crt cert /Users/$USER/Library/openvpn/client.crt key /Users/$USER/Library/openvpn/client.key tls-auth /Users/$USER/Library/openvpn/ta.key 1 comp-lzo tun-mtu 1500 fragment 1300 verb 3 reneg-sec 0 cipher AES-256-CBC
Die tun-mtu und fragment werte _müssen_ so bleiben. Sonst kann man zwar ggf. im NFS browsen, aber nix downloaden.
Feste IPs
Man kann jedem Clienten auch eine feste IP geben:
Einfach die server.conf mit:
client-config-dir /etc/openvpn/ip/
erweitern.
Diese Verzeichnisse anlegen und dort folgendes machen:
touch client1 (die Datei muss wie das Cert heisen, was ihr für den Clienten erstellt habt, zb heist das Cert client1.crt dann muss die Datei einfach client1 heißen)
Das könnt ihr für jeden Clienten so machen.
diese Datein dann mit einem Editor öffnen und folgendes eintragen:
ifconfig-push IP_DIE_DER_CLIENT_BEKOMMT_IM_LAN NETMASK
Dann den OpenVPN-Server neustarten, und schon bekommen die Clients die IP die ihr wollt.
Abschluss
Diese Art der Auth und Handhabung der VPN ist super dazu geeignet um ein VPN aufzubauen, mit Leuten die man kennt. Da keine große Userverwaltung genutz wird und im Endeffekt jeder alles darf ;) Man kann das ganze ab er auch erweitern mit Auth via MYSQL oder so.
Ich hoffe ich konnte euch mit diesem HowTo weiterhelfen. Es ist nicht ganz Fehlerfrei, aber wer ist das schon.
Sollten Fragen auftauchen, ich bin im freenode in #archlinux.de zu erreichen (PampersBomba)
So Long