Lastverteilung und Hochverfügbarkeit von OpenVPN Diensten

Nachdem der OpenVPN Dienst erfolgreich in der Netzwerk Infrastruktur integriert ist. Kommt man nicht an der Fragestellung der Lastverteilung und Hochverfügbarkeit vorbei. Es existieren Lösungsansätze in OpenVPN und DNS.
OpenVPN
Über die OpenVPN Optionen in der Client Konfiguration

remote server1 remote server2 remote-random

können mehrere OpenVPN Server angegeben werden, von denen der Client beim Verbindungsaufbau zufällig einen auswählt. Alternativ kann auch die Reihenfolge der Server für jede Client Konfiguration verändert werden und ohne die Option remote-random zu verwenden. Anmerkung: Aus meiner Erfahrung heraus sind unterschiedliche Client Konfigurationen wegen des erhöhten Verwaltungsaufwandes zu vermeiden.   Bei fehlerhafter DNS-Auflösung des Servernamen hilft die Option resolv-retry.

resolv-retry 60

Diese Option definiert das Zeitinterval wie lange der Verbindungsaufbau versucht wird und dann der nächste Server ausgewählt wird.
DNS Round Robin
Als Alternative kann man auch den Round Robin Mechanismus des DNS Servers nutzen. Dazu trägt man die Server mit dem gleichen DNS A-Record ein. Der DNS-Server gibt dann im Round Robin Verfahren für jede Anfrage eine andere IP-Adresse zurück.

Display Konfiguration lassen sich nicht ändern – Remote Desktop Session (RDP)

Unter Windows 7 und Windows 2008 R2 kann man über eine RDP Verbindung die Display Konfiguration nicht ändern.
 
Abhilfe verschafft die Installation folgendes Hotfixes von Microsoft:
http://support.microsoft.com/kb/2726399

iKVM über SSH tunneln

Um auf die iKVM-Schnittstelle zugreifen zu können und das Java Applet zu starten müssen folgende Ports weitergeleitet werden mit SSH:
 
Port 80
Port 443
Port 623
Port 5900
SSH Tunnel Einträge:
putty-ssh-tunnels
Source Port: 80   Destination <IP-iKVM>:80
443   <IP-iKVM>:443
623   <IP-iKVM>:623
5900   <IP-iKVM>:5900
Option Local und Auto aktiviert
 
Damit können wir jetzt über das Localhost Interface den iKVM Service ansprechen.
https://127.0.0.1
 
Quellen:
http://www.thomas-krenn.com/de/wiki/Netzwerk_Ports_Supermicro_Remote_Management_(IPMI,_KVM_over_IP)_f%C3%BCr_Firewall_Konfiguration

Public Key Infrastructure (PKI) zur Generierung von Zertifikaten mit easy-rsa 2.0

Notwendige Software

apt-get install openvpn

Verzeichnis für die easys-rsa 2.0 Umgebung (/usr/share/doc/openvpn/examples/easy-rsa/2.0)

cp -r /usr/share/doc/openvpn/examples/easy-rsa /etc rm -rf  /etc/easy-rsa/1.0

Anpassen der Umgebungsvariablen bzw. Festlegung der allgemein gültigen Variablen: Setzen sie folgende Variablen: Anpassen des Pfades für die Zertifikate und Keys: KEY_DIR=“$EASY_RSA/<Domain VPN-Server>/keys“ DH wird auf 2048 festgelegt KEY_SIZE=2048 CA läuft nach 10 Jahren ab CA_EXPIRE=3650 Keys laufen nach 1 Jahr ab KEY_EXPIRE=365

  • KEY_COUNTRY
  • KEY_PROVINCE
  • KEY_CITY
  • KEY_ORG
  • KEY_EMAIL

Achten Sie darauf, daß keine der Variablen leer ist.

mv /etc/easy-rsa/2.0/vars /etc/easy-rsa/2.0/<Domain-Server>-vars ln -s /etc/easy-rsa/2.0/<Domain-Server>-vars /etc/easy-rsa/2.0/vars

Laden der Umgebungsvariablen

cd /etc/easy-rsa/2.0 . ./vars

Löschen der Beispiels Keys und Zertifikate

./clean-all

Anschließend sollten die Dateien index.txt und serial initialisiert sein.
Generierung der PKI Umgebung mit CA (certificate authority) und Key per openssl

./build-ca

Ausgabe:

root:easy-rsa # ./build-ca
Generating a 2048 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:

Generierung des Server Zertifikates und Server Keys

./build-key-server server

Generierung eines Client Zertifikates und Client Keys

./build-key client1 ./build-key client2 ./build-key client3

Generierung des Diffie Hellman Parameters: ./build-dh Ausgabe:

root:easy-rsa # ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................

Generierung des Keys für tls-auth (Unterbinden von DOS-Attacken)

openvpn --genkey --secret ta.key

Folgende Dateien mit neu generierten Keys und Zertifikaten sind im Verzeichnis /etc/easy-rsa/2.0/<Domain VPN-Server>/keys zu finden:

Dateiname verwendet von Zweck Secret
ca.crt server + all clients Root CA certificate NO
ca.key key signing machine only Root CA key YES
dh{n}.pem server only Diffie Hellman parameters NO
server.crt server only Server Certificate NO
server.key server only Server Key YES
client1.crt client1 only Client1 Certificate NO
client1.key client1 only Client1 Key YES
client2.crt client2 only Client2 Certificate NO
client2.key client2 only Client2 Key YES
client3.crt client3 only Client3 Certificate NO
client3.key client3 only Client3 Key YES

Quellen: http://openvpn.net/index.php/open-source/documentation/howto.html#pki

Debian Upgrade – rmdir: failed to remove /usr/share/doc/module-init-tools: Directory not empty

Problem:
Setting up module-init-tools (9-1) …
rmdir: failed to remove `/usr/share/doc/module-init-tools‘: Directory not empty
dpkg: error processing module-init-tools (–configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
module-init-tools
Analyse:
:~# ls -ltr /usr/share/doc/module-init-tools/
total 24
-rw-r–r– 1 root root 150 Mar 10 2010 NEWS.gz
-rw-r–r– 1 root root 7614 Mar 10 2010 changelog.gz
-rw-r–r– 1 root root 558 Oct 30 2011 copyright
-rw-r–r– 1 root root 7356 Oct 30 2011 changelog.Debian.gz
 
Alles Dokumentation, die man einfach löschen kann
 
Lösung:
 
rm /usr/share/doc/module-init-tools/*

Problem: Debian Upgrade – A copy of the C library was found in an unexpected directory: '/lib/ld-2.11.3.so'

Upgrade: libc6 2.13-35 amd64
 

apt-get upgrade

 
Output:

Preparing to replace libc6:amd64 2.13-33 (using …/libc6_2.13-35_amd64.deb) …
A copy of the C library was found in an unexpected directory:
‚/lib/ld-2.11.3.so‘
It is not safe to upgrade the C library in this situation;
please remove that copy of the C library or get it out of
‚/lib‘ and try again.

 
Analysis:
Prüfung auf die Abhängigkeiten des Systems anhand von /bin/ls:

ldd /bin/ls | grep ld-linux

Output:

 /lib64/ld-linux-x86-64.so.2 (0x00007fe82018c000)

 

 ls -ltr /lib64/ld-linux-x86-64.so.2

Output:

/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.13.so

 
Solution:

mv /lib/ld-2.11.3.so /root/
mv /lib/libc-2.11.3.so /root/
mv /lib/libdl-2.11.3.so /root/
mv /lib/libm-2.11.3.so /root/
mv /lib/libpthread-2.11.3.so /root/
mv /lib/librt-2.11.3.so /root/
apt-get -f install && apt-get upgrade