OpenVPN (Ubuntu 16.04): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Links) |
|||
(72 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== | == Installation == | ||
<div class="mw-collapsible mw-collapsed"> | |||
Um die Installation anzuzeigen bitte aufklappen | |||
<div class="mw-collapsible-content"> | |||
<pre | <pre> | ||
sudo apt-get install openvpn easy-rsa | |||
</pre> | |||
Ordner zur Schlüsselerzeugung kopieren: | |||
sudo | <pre> | ||
sudo | sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa2 | ||
</pre> | |||
</div> | |||
</div> | |||
== Konfiguration == | |||
<div class="mw-collapsible mw-collapsed"> | |||
Um die allgemeine Konfiguration anzuzeigen bitte aufklappen | |||
<div class="mw-collapsible-content"> | |||
=== Beispiele === | |||
<pre> | |||
/usr/share/doc/openvpn/examples/ | |||
</pre> | |||
=== Schlüssel und Zertifikate generieren === | |||
==== Variablen anpassen ==== | |||
In das RSA-Verzeichnis wechseln: | |||
<pre> | |||
cd /etc/openvpn/easy-rsa2/ | |||
</pre> | |||
Die Datei ''/etc/openvpn/easy-rsa2/vars'' anpassen: | |||
<pre> | |||
sudo nano vars | |||
</pre> | |||
Am Ende folgenden Alias-Eintrag hinzufügen: | |||
<pre> | |||
export KEY_ALTNAMES="Irgendwas" | |||
</pre> | |||
==== Weitere Vorbereitungen ==== | |||
Schlüssel-Verzeuchnis anlegen: | |||
<pre> | |||
sudo mkdir /etc/openvpn/easy-rsa2/keys | |||
</pre> | |||
Neueste ''openssl-X.X.X.cnf kopieren: | |||
<pre> | |||
sudo cp openssl-1.0.0.cnf openssl.cnf | |||
</pre> | |||
Datei ''vars'' in die Umgebungsvariablen aufnehmen: | |||
<pre> | |||
source ./vars | |||
</pre> | |||
==== Schlüssel erzeugen ==== | |||
<pre> | |||
sudo -E ./clean-all | |||
sudo -E ./build-ca | |||
</pre> | |||
Server Zertifikat und Schlüssel erstellen (''Common Name'' sollte DNS-Name sein): | |||
<pre> | |||
sudo -E ./build-key-server server | |||
</pre> | |||
Benutzerschlüssel anlegen: | |||
* ''Common Name'' ist der Name, mit dem ein Client später identifiziert wird (kein DNS-Name). | |||
* Bei Meldung '''TXT_DB error number 2''' einen anderen ''Common Name'' verwenden (wurde schon verwendet). | |||
<pre> | |||
sudo -E ./build-key ersterClient | |||
sudo -E ./build-key zweiterClient | |||
... | |||
</pre> | |||
Diffie-Hellman-Parameter generieren: | |||
<pre> | |||
sudo -E ./build-dh | |||
</pre> | |||
Client-Schlüssel in eine Datei packen: | |||
<pre> | |||
tar -cf ersterClient.tar ersterClient.key ersterClient.crt ca.crt | |||
</pre> | </pre> | ||
</div> | |||
</div> | |||
== Client Konfiguration == | |||
<div class="mw-collapsible mw-collapsed"> | |||
Um die Client-Konfiguration anzuzeigen bitte aufklappen | |||
<div class="mw-collapsible-content"> | |||
== Beispiel einer ''client.conf''-Konfigurationsdatei == | === Beispiel einer ''client.conf''-Konfigurationsdatei === | ||
<pre | <pre> | ||
############################################## | ############################################## | ||
# Sample client-side OpenVPN 2.0 config file # | # Sample client-side OpenVPN 2.0 config file # | ||
Zeile 107: | Zeile 192: | ||
</pre> | </pre> | ||
=== Route hinzufügen === | |||
Wenn der OpenVPN-Server so konfiguriert wurde, dass das dahinterliegende Netzwerk erreicht werden kann, dann müssen die erreichbaren Rechner, in dem dahinterliegenden Netzwerk, die Route zurück zum Server kennen. | |||
Andernfalls schlägt die Verbindung fehl, weil die Pakete den Weg zurück nicht finden. | |||
Falls möglich, sollte man die Route beim Router hinterlegen. Falls dies jedoch nicht möglich ist, muss bei jedem Rechner direkt eine Route hinterlegt werden. | |||
Dazu in der Datei ''/etc/network/interfaces/'' folgende Zeile hinzufügen: | |||
<pre> | |||
# Add persitent route command | |||
post-up route add -net <network> netmask 255.255.255.0 gw <openvpn server> metric 1 | |||
</pre> | |||
Beispiel: | |||
<pre> | |||
post-up route add -net 10.9.0.0 netmask 255.255.255.0 gw 10.0.0.100 metric 1 | |||
</pre> | |||
Gesetzte Routen anzeigen lassen: | |||
<pre> | |||
netstat -r | |||
</pre> | |||
=== Masquerade hinzufügen === | |||
Der Client-Internetverkehr kann mittels folgender Zeile (in der ''server.conf'') vollständig über den VPN-Server geleitet werden: | |||
<pre> | |||
push "redirect-gateway def1 bypass-dhcp" | |||
</pre> | |||
Damit der externe Netzverkehr funktioniert, muss in der Datei ''/etc/network/interfaces/'' (auf dem ''VPN-Server'') folgende Zeile hinzufügt werden: | |||
<pre> | |||
up iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE | |||
</pre> | |||
=== Client GUI === | |||
OpenVPN-GUI installieren (falls nicht vorinstalliert): | |||
<pre> | |||
sudo apt-get install network-manager-openvpn network-manager-openvpn-gnome | |||
</pre> | |||
Danach die Datei ''xxxxxx.ovpn'' mittels ''Gespeicherte VPN-Konfiguration importieren...'' hinzufügen. | |||
Siehe auch [https://torguard.net/knowledgebase.php?action=displayarticle&id=53 https://torguard.net/knowledgebase.php?action=displayarticle&id=53] | |||
=== Probleme === | |||
==== DNS-Umleitung funktioniert nicht unter Ubuntu 16.04 ==== | |||
Dazu im Network Manager die Methode ''Automatisch (DHCP)'' auf ''Automatisch (DHCP), nur Adressen'' umstellen. Danach müssen die DNS-Server, die verwendet werden sollen, wenn keine OpenVPN-Verbindung besteht, angegeben werden. | |||
[[Datei:Networkmanager_IPv4.png|300px|Networkmanager IPv4-Settings]] | |||
</div> | |||
</div> | |||
== Beispeil einer ''server.conf''-Konfigurationsdatei == | == Server Konfiguration == | ||
<div class="mw-collapsible mw-collapsed"> | |||
Um die Server-Konfiguration anzuzeigen bitte aufklappen | |||
<div class="mw-collapsible-content"> | |||
=== IPV4-Weiterleitung aktivieren === | |||
Siehe dazu [[Netzwerk einrichten (Linux)]] | |||
=== Benutzer ''openvpn'' anlegen === | |||
Zur Erhöhung der Sicherheit wird der Server mit dem Benutzer ''openvpn'' ausgeführt. | |||
Zum Anlegen eines systemspezifischen Benutzers siehe [[User Administration]] | |||
=== Beispeil einer ''server.conf''-Konfigurationsdatei === | |||
<pre style="white-space: pre-wrap; | <pre style="white-space: pre-wrap; | ||
Zeile 193: | Zeile 348: | ||
# Substitute 2048 for 1024 if you are using | # Substitute 2048 for 1024 if you are using | ||
# 2048 bit keys. | # 2048 bit keys. | ||
dh ./easy-rsa2/keys/ | dh ./easy-rsa2/keys/dh2048.pem | ||
# Configure server mode and supply a VPN subnet | # Configure server mode and supply a VPN subnet | ||
Zeile 224: | Zeile 379: | ||
# back to the OpenVPN server. | # back to the OpenVPN server. | ||
push "route 10.0.0.0 255.255.255.0" | push "route 10.0.0.0 255.255.255.0" | ||
# If enabled, this directive will configure | |||
# all clients to redirect their default | |||
# network gateway through the VPN, causing | |||
# all IP traffic such as web browsing and | |||
# and DNS lookups to go through the VPN | |||
# (The OpenVPN server machine may need to NAT | |||
# or bridge the TUN/TAP interface to the internet | |||
# in order for this to work properly). | |||
push "redirect-gateway def1 bypass-dhcp" | |||
# Certain Windows-specific network settings | |||
# can be pushed to clients, such as DNS | |||
# or WINS server addresses. CAVEAT: | |||
# http://openvpn.net/faq.html#dhcpcaveats | |||
# The addresses below refer to the public | |||
# DNS servers provided by opendns.com. | |||
push "dhcp-option DNS 10.0.0.101" | |||
;push "dhcp-option DNS 208.67.220.220" | |||
# The keepalive directive causes ping-like | # The keepalive directive causes ping-like | ||
Zeile 298: | Zeile 472: | ||
</pre> | </pre> | ||
=== Script ''checklogin.sh'' === | |||
<pre> | |||
cd /etc/openvpn/ | |||
sudo nano checklogin.sh | |||
</pre> | |||
<pre style="white-space: pre-wrap; | <pre style="white-space: pre-wrap; | ||
Zeile 323: | Zeile 501: | ||
</pre> | </pre> | ||
Besitzer ändern und ausführbar machen: | |||
<pre> | |||
sudo chown openvpn:openvpn checklogin.sh | |||
sudo chmod a+x checklogin.sh | |||
</pre> | |||
=== Inhalt der Datei ''users'' === | |||
<pre> | |||
sudo nano users | |||
</pre> | |||
<pre> | |||
Benutzer:Passwort | |||
<user name>:<password> | |||
</pre> | |||
<pre> | |||
sudo chown openvpn:openvpn users | |||
</pre> | |||
== | === client config dir (ccd) === | ||
Mit einer Datei im ''client config dir''-Verzeichnis kann man einem Client eine statische IP-Adresse zuordnen | |||
<pre | Zuerst ein Verzeichnis anlegen (muss mit der Direktive ''client-config-dir'' übereinstimmen), wo alle Dateien abgelegt werden: | ||
<pre> | |||
cd /etc/openvpn/ | |||
sudo mkdir ccd | |||
</pre> | |||
Danach eine Datei mit der Angabe ''Common Name'' beim ''Benutzerschlüssel'' anlegen: | |||
<pre> | |||
sudo nano ccd/<common name> | |||
</pre> | |||
Und folgenden Inhalt eintragen: | |||
<pre> | |||
ifconfig-push <ip address> <net mask> | |||
</pre> | |||
z.B. | |||
<pre> | |||
ifconfig-push 10.8.0.8 255.255.255.0 | ifconfig-push 10.8.0.8 255.255.255.0 | ||
</pre> | </pre> | ||
</div> | |||
</div> | |||
== Verbindungsaufbau über Terminal == | |||
<div class="mw-collapsible mw-collapsed"> | |||
Um den Verbindungsaufbau über ein Terminal anzuzeigen bitte aufklappen | |||
<div class="mw-collapsible-content"> | |||
Konfigurationen unter <code>/etc/openvpn/clients/</code> hinterlegen. | |||
Verbindung aufbauen: | |||
<pre> | |||
#!/bin/sh | |||
#check if profile has been passed | |||
[ -z $1 ] && echo "Usage: ${0} <client>..." && exit 1; | |||
openvpn --script-security 2 --config /etc/openvpn/clients/${1}.ovpn --auth-user-pass /etc/openvpn/clients/login.conf & | |||
# check if call was successful | |||
[ $? -ne 0 ] && echo "Failed to connect to VPN server using ${1}.ovpn... && exit 1; | |||
</pre> | |||
Verbindung trennen: | |||
<pre> | |||
#!/bin/sh | |||
#check if profile has been passed | |||
if [ -z $1 ] && echo "Usage: ${0} <client>..." && exit 1; | |||
kill `sudo pgrep -fl ${1}.ovpn | grep openvpn | cut -d ' ' -f 1` | |||
# check if kill was successfull | |||
if [ $? -ne 0 ] && echo "Failed to disconnect from VPN Server using ${1}.ovpn..." && exit 1; | |||
</pre> | </pre> | ||
</div> | |||
</div> | |||
== Links == | |||
[http://forums.openvpn.net/topic7410.html http://forums.openvpn.net/topic7410.html] | |||
Zurück zu [[OpenVPN (Ubuntu)#Routed|OpenVPN]] |
Aktuelle Version vom 4. April 2023, 18:47 Uhr
Installation
Ausklappen
Um die Installation anzuzeigen bitte aufklappen
Konfiguration
Ausklappen
Um die allgemeine Konfiguration anzuzeigen bitte aufklappen
Client Konfiguration
Ausklappen
Um die Client-Konfiguration anzuzeigen bitte aufklappen
Server Konfiguration
Ausklappen
Um die Server-Konfiguration anzuzeigen bitte aufklappen
Verbindungsaufbau über Terminal
Ausklappen
Um den Verbindungsaufbau über ein Terminal anzuzeigen bitte aufklappen
Links
http://forums.openvpn.net/topic7410.html
Zurück zu OpenVPN