OpenVPN (Ubuntu 16.04): Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(72 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Systemspezfifischen User anlegen ==
== Installation ==
<div class="mw-collapsible mw-collapsed">
Um die Installation anzuzeigen bitte aufklappen
<div class="mw-collapsible-content">


<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo apt-get install openvpn easy-rsa
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
Ordner zur Schlüsselerzeugung kopieren:
sudo addgroup --system --no-create-home --disabled-login --group openvpn
<pre>
sudo adduser --system --no-create-home --disabled-login --ingroup openvpn openvpn
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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
##############################################
##############################################
# 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/dh1024.pem
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'' ===


== 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>


== Beispieldatei im client config dir (ccd) ==
=== client config dir (ccd) ===


Vergibt die statische IP-Adresse 10.8.0.8:
Mit einer Datei im ''client config dir''-Verzeichnis kann man einem Client eine statische IP-Adresse zuordnen


<pre style="white-space: pre-wrap;
Zuerst ein Verzeichnis anlegen (muss mit der Direktive ''client-config-dir'' übereinstimmen), wo alle Dateien abgelegt werden:
white-space: -moz-pre-wrap;
<pre>
white-space: -pre-wrap;
cd /etc/openvpn/
white-space: -o-pre-wrap;
sudo mkdir ccd
word-wrap: break-word;">
</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;


== Inhalt der Datei ''users'' ==
kill `sudo pgrep -fl ${1}.ovpn | grep openvpn | cut -d ' ' -f 1`


<pre style="white-space: pre-wrap;
# check if kill was successfull
white-space: -moz-pre-wrap;  
if [ $? -ne 0 ] && echo "Failed to disconnect from VPN Server using ${1}.ovpn..." && exit 1;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
Benutzer:Passwort
<user name>:<password>
</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

Um die Installation anzuzeigen bitte aufklappen

Konfiguration

Um die allgemeine Konfiguration anzuzeigen bitte aufklappen

Client Konfiguration

Um die Client-Konfiguration anzuzeigen bitte aufklappen

Server Konfiguration

Um die Server-Konfiguration anzuzeigen bitte aufklappen

Verbindungsaufbau über Terminal

Um den Verbindungsaufbau über ein Terminal anzuzeigen bitte aufklappen

Links

http://forums.openvpn.net/topic7410.html


Zurück zu OpenVPN