Open VPN

Grundlagen VPN und dessen Nutzung

Quelle:
http://www.online-tutorials.net/security/openvpn-tutorial/tutorials-t-69-209.html
http://www.vpnforum.de/wiki/index.php/OVPN-Linux
http://www.imped.net/oss/misc/openvpn-2.0-howto-edit.html#examples
http://www.64-bit.de/dokumentationen/netzwerk/a/012/DE-VPN-HOWTO-3.html
http://www.vpnforum.de/wiki/index.php/Config_ServerNET_Routing

Infos:

OpenVPN dient zum Aufbau eines Tunnels und ist für alle *BSD, Linux Mac OS X und Windows PCs verfügbar.
OpenSSL ist eine Open-Source-Version des SSL/TLS-Protokolls, und hat
die Aufgabe sichere, verschlüsselte Verbindungen aufzubauen.
SSL wird vor allem bei HTTP, aber auch bei Applikationen wie z.B. SSH,
und OpenVPN eingesetzt.
DSA (Digital Signature Standard) Standard der 
US-Regierung für Digitale Signaturen von der NSA entwickelt: kann nur für Entschlüsselung verwendet werden

RSA (nach Erfindern benannt): für Ver- und Entschlüsselung sowie für digitale Signaturen verwendbar 
                              Schlüsselpaar: privat (decode,sign,secret) öffentlich (encode, check)

Schlüsselverteilung:

Empfänger: erzeugt Private Key & Public Key
      Public Key->
             Sender: verschlüsselt mit Public Key von Empfänger den zu sendenden Inhalt
   <- verschlüsselter Inhalt
Empfänger: entschlüsselt mit seinem Private Key den Inhalt vom Sender

Es wird benötigt:

Windows:
Cisco VPN Client

Debian:

 
apt-get install openvpn // zum Aufbau einer VPN Verbindung
apt-get install openssl // zum erstellen der Zertifikate für eine verschlüsselte Verbindung

Openvpn mit PSK

Openvpn mit einem verteiltem Schlüssel betreiben
Preshared Key erzeugen

openvpn --genkey --secret static.key

1. server.conf erstellen

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key

2. client.conf erstellen

remote myremote.mydomain
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key

1. Schlüssel für Certificate Authority erstellen

 
openssl genrsa -aes256 -out private/vpn-cakey.pem 2048 

%genrsa – RSA Parameter erzeugen
%-aes256 – Verschlüsselungsalgorithmus
%-out – als Datei ausgeben
%2048 – 2048 Bit Schlüssel
\\
2. Zertifikat erstellen

 
openssl req -new -x509 -days 365 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1

%reg – X.509 Anfrage erstellen
%-new – neue Anfrage schicken
%-x509 – X.509 Zertifikattyp
%-days 365 – Gültigkeit des Zertifikates
%-key – verwendeter Masterschlüssel vpn-cakey.pem
%-out – als Datei ausgeben
%-set_serial 1 – Seriennummer die hochgezählt wird

3. Zugriffsrechte auf “private” Verzeichnis entziehen

 
chmod 0700 private 

4. Zertifikate für den Server erstellen

Inhaltsverzeichnis für die Zertifikate erstellen:

touch /usr/local/ssl/index.txt && echo "01" > /usr/local/ssl/serial

5. Zertifikatsanfrage für den Schlüssel vom Server erstellen

Hinweis:
Option "Common Name (eg. YOUR name) []:<server> wird später von OpenVPN
in der Option "tls-remote <server>" verwendet.
openssl req -new -newkey rsa:2048 -out certs/servercsr.pem -nodes -keyout private/serverkey.pem -days 365

%reg – X.509 Anfrage erstellen
%-new – neue Anfrage schicken
%-newkey – neuen Schlüsselbund erstellen
%rsa:2048 – RSA Schlüssellänge

%-out – als Datei ausgeben
%-nodes – kein Passwort auf Certifikate (sollte bei Clientzertifikaten nicht verwendet werden)
%-keyout – Ausgabe in Datei
%servercsr.pem – Zertifikatsanfrage
%-days 365 – Gültigkeit des Zertifikates

openssl x509 -req -in certs/servercsr.pem -out certs/servercert.pem 
        -CA vpn-ca.pem -CAkey private/vpn-cakey.pem 
        -CAserial /usr/local/ssl/serial -days 365

%x509 – X.509 Zertifikattyp
%-reg – X.509 Anfrage erstellen
%-in – Serverzertifikat als Grundlage
%-out – als Datei ausgeben
%-CA – Certificate Authority Zertifikat festlegen
%-CAkey – Certificate Authority Key festlegen
%-CAserial – Certificate Authority Serial festlegen
6. Zertifikate für die Clients erstellen

openssl req -new newkey rsa:2048 -out certs/simon_lan_csr.pem -nodes -keyout private/simon_lan_key.pem -days 365

#Hinweis: -nodes weglassen wenn Kennwortabfrage gesetzt werden soll

openssl x509 -req -in certs/simon_lan_csr.pem -out certs/simon_lan_cert.pem -CA vpn-ca.pem 
        -CAkey private/vpn-cakey.pem -CAserial /usr/local/ssl/serial -days 365

rm certs/simon_lan_csr.pem

7. DH Parameter erzeugen

openssl dhparam -out dh2048.pem 2048

8. OpenVPN einrichten
OpenVPN Konfigurationsscripte

server.conf
-----------
port 1194
dev tun
ifconfig 10.8.0.1 10.8.0.2
mode server
tls-server
dh dh2048.dh
ca ca.crt
cert server.crt
key server.key

client.conf
-----------
dev tun
tls-client
tls-remote remotehost.domain
ca ca.crt
cert client.crt
key client.key

testen erfolgt mit

openvpn --config /etc/openvpn/server.conf bzw. client.conf

9. Schlüsselverteilung

Filename 	Needed By 	             Purpose 	                Secret (Zugriff entziehen)
--------        ---------                    -------                    --------------------------
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

20. Details zu Zertifikaten herausfinden

openssl x509 -in <cert> -text 
openssl asn1parse -i -in <cert> -dump 

21. Zertifikate checken

openssl verify -CAfile ca.crt -purpose sslclient angel-client.crt

Tunnel TLS based Security

OpenVPN Server Befehl

openvpn --remote clientname.domain --dev tun1 --ifconfig 10.4.0.2 10.4.0.1
--tls-server --ca tmp-ca.crt --cert server.crt --key server.key
--reneg-sec 60 --verb 5 --dh dh1024.pem

OpenVPN Client Befehl

openvpn --remote servername.domain --dev tun1 --ifconfig 10.4.0.1 10.4.0.2
--tls-client --ca tmp-ca.crt --cert client.crt --key client.key
--reneg-sec 60 --verb 5 

1. ins /etc/ssl Verzeichnis wechseln

cd /etc/ssl/

2. Ordner für die neuen Zertifikate anlegen

mkdir zertifikate

3. Schlüssel für die CA (Certificate Authority ) erstellen

openssl genrsa -aes256 -out private/vpn-cakey.pem 2048

Passwort für CA-Key angeben Bsp.: "cakey"

4. Certificate Authority erstellen

openssl req -new -x509 -days 365 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1

Country Name: DE
Province Name: Sachsen
Locality Name: Chemnitz
Organization Name: TU
Organizational Unit Name: IT
Common Name: CASERVER
Email: -

5. index.txt anlegen um später evtl Zertifikate sperren zu können

touch index.txt && echo "01" > serial

6. Zertifikatanfrage und Schlüssel für den Server erstellen

openssl req -new -newkey rsa:2048 -out zertifikate/server_csr.pem -nodes -keyout private/server_key.pem -days 365

Angaben für das Zertifikat siehe oben 

Common Name: VPNSERVER
challenge Password: vpnserver
Company Name: -

openssl x509 -req -in zertifikate/server_csr.pem -out zertifikate/server_cert.pem -CA vpn-ca.pem -CAkey private/vpn-cakey.pem -CAserial serial -days 365

Enter Password: cakey

7. Zertifikat für einen Client erstellen

openssl req -new -newkey rsa:2048 -out zertifikate/client1_csr.pem -keyout private/client1_key.pem -days 365

Passphrase für Client1: client1vpn
Country: DE
State: Sachsen
Locality Name: Chemnitz
Organization: TU
Org. Unit Name: IT
Common Name: client1
Email Address: -
challenge Password: client1key
Opt. Company Name: -

openssl x509 -req -in zertifikate/client1_csr.pem -out zertifikate/client_cert.pem -CA vpn-ca.pem -CAkey private/vpn-cakey.pem -CAserial serial -days 365

Enter Password: cakey

8. Diffie Hellman Parameter erstellen (2048 Bit Key)

openssl dhparam -out dh2048.pem 2048

9. Konfigurationsdateien für den Server erstellen server.ovpn für IP Tunnel

# TUN simuliert ein Point-to-Point Netzwerkgerät (OSI-Layer 3), während TAP ein Ethernet-Gerät simuliert (OSI-Layer 2)
# Konfigurationsdatei mit TUN Device (IP Tunnel)
# In der Konsole ausführen um Tunneling Kernelmodul zu laden -> modprobe tun
dev tun
ifconfig 10.1.0.1 10.1.0.2
tls-server
dh dh2048.pem
ca vpn-ca.pem
cert server_cert.pem
key server_key.pem
verb 3

9.1 Konfigurationsdateien für den Server erstellen server.ovpn für Ethernettunnel

port 1194 
proto udp 
mode server 
tls-server 
dev tap 

#Server IP 
ifconfig 10.0.0.1 255.255.255.0 

#dynamic clients from 10.0.0.2-10.0.0.254 
ifconfig-pool 10.0.0.2 10.0.0.254 

tun-mtu 1492 
#mssfix 

ca /etc/ssl/vpn-ca.pem 
cert /etc/ssl/zertifikate/server_cert.pem 
key /etc/ssl/private/server_key.pem 

#client-to-client 

dh /etc/ssl/dh1024.pem 
keepalive 10 120 
auth SHA1 
comp-lzo 

user nobody 
group nogroup  
persist-key 
persist-tun 

verb 3

10. Konfigurationsdateien für den Client erstellen client.ovpn für IP Tunnel

dev tun
remote 134.109.1.1 1194
ifconfig 10.1.0.2 10.1.0.1
tls-client
ca vpn-ca.pem
cert client1_cert.pem
key client1_key.pem
verb 3

10.1. Konfigurationsdateien für den Client erstellen client.ovpn für Ethernet Tunnel

tls-client 
#float 
dev tap 

#tun-mtu 1492 
#mssfix 

#tcp oder udp 
proto udp 

#Server IP 
remote 192.168.10.1 1194 

#WICHTIG: hier den COMMON Name vom Server Zertifikat nehmen! 
tls-remote VPNSERVER 

ca vpn-ca.pem 
cert client1_cert.pem 
key client1_key.pem 

auth SHA1 
nobind 
comp-lzo 
persist-key 
persist-tun 
verb 3

Schlüsselverteilung

Filename 	Needed By 	             Purpose 	                Secret (Zugriff entziehen)
--------        ---------                    -------                    --------------------------
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

11. Serverkonfiguration testen

openvpn --config /etc/openvpn/server.ovpn

oder
12. OpenVPN Server Befehl

openvpn --dev tun1 --ifconfig 10.1.0.2 10.1.0.1
--tls-server --ca vpn-ca.pem --cert server.crt --key server.key
--reneg-sec 60 --verb 5 --dh dh1024.pem

13. OpenVPN Client Befehl

openvpn --remote 134.109.184.163 --dev tun1 --ifconfig 10.1.0.1 10.1.0.2
--tls-client --ca vpn-ca.pem --cert client.crt --key client.key
--reneg-sec 60 --verb 5 

Wenn man alles richtig gemacht hat

OpenVPN Server Start

ada:~/openvpn_server/serveruse# openvpn tlsserver.ovpn 
Fri Nov  2 13:54:57 2007 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 19 2007
Fri Nov  2 13:54:57 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Fri Nov  2 13:54:57 2007 Diffie-Hellman initialized with 2048 bit key
Fri Nov  2 13:54:57 2007 Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
Fri Nov  2 13:54:57 2007 TUN/TAP device tun0 opened
Fri Nov  2 13:54:57 2007 /sbin/ifconfig tun0 10.1.0.1 pointopoint 10.1.0.2 mtu 1500
Fri Nov  2 13:54:57 2007 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Fri Nov  2 13:54:57 2007 Local Options hash (VER=V4): '3ff3d966'
Fri Nov  2 13:54:57 2007 Expected Remote Options hash (VER=V4): '588add67'
Fri Nov  2 13:54:57 2007 UDPv4 link local (bound): [undef]:1194
Fri Nov  2 13:54:57 2007 UDPv4 link remote: [undef]
Fri Nov  2 13:55:12 2007 TLS: Initial packet from 134.109.184.60:1194, sid=84f3c060 c3b8cc19
Fri Nov  2 13:55:12 2007 VERIFY OK: depth=1, /C=DE/ST=Sachsen/L=Chemnitz/O=TU/OU=IT/CN=server
Fri Nov  2 13:55:12 2007 VERIFY OK: depth=0, /C=DE/ST=Sachsen/L=Chemnitz/O=TU/OU=IT/CN=client
Fri Nov  2 13:55:12 2007 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Nov  2 13:55:12 2007 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Nov  2 13:55:12 2007 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Nov  2 13:55:12 2007 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Nov  2 13:55:12 2007 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
Fri Nov  2 13:55:12 2007 [client] Peer Connection Initiated with 134.109.184.60:1194
Fri Nov  2 13:55:14 2007 Initialization Sequence Completed
OpenVPN Client Start

jean:~/openvpnclient/clientuse# openvpn tlsclient.ovpn 
Fri Nov  2 13:55:08 2007 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on May 19 2007
Fri Nov  2 13:55:08 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Enter Private Key Password:
Fri Nov  2 13:55:12 2007 Control Channel MTU parms [ L:1541 D:138 EF:38 EB:0 ET:0 EL:0 ]
Fri Nov  2 13:55:12 2007 TUN/TAP device tun0 opened
Fri Nov  2 13:55:12 2007 /sbin/ifconfig tun0 10.1.0.2 pointopoint 10.1.0.1 mtu 1500
Fri Nov  2 13:55:12 2007 Data Channel MTU parms [ L:1541 D:1450 EF:41 EB:4 ET:0 EL:0 ]
Fri Nov  2 13:55:12 2007 Local Options hash (VER=V4): '588add67'
Fri Nov  2 13:55:12 2007 Expected Remote Options hash (VER=V4): '3ff3d966'
Fri Nov  2 13:55:12 2007 UDPv4 link local (bound): [undef]:1194
Fri Nov  2 13:55:12 2007 UDPv4 link remote: 134.109.184.163:1194
Fri Nov  2 13:55:12 2007 TLS: Initial packet from 134.109.184.163:1194, sid=81823dff 8d83e16b
Fri Nov  2 13:55:12 2007 VERIFY OK: depth=1, /C=DE/ST=Sachsen/L=Chemnitz/O=TU/OU=IT/CN=server
Fri Nov  2 13:55:12 2007 VERIFY OK: depth=0, /C=DE/ST=Sachsen/L=Chemnitz/O=TU/OU=IT/CN=serverkey
Fri Nov  2 13:55:12 2007 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Nov  2 13:55:12 2007 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Nov  2 13:55:12 2007 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Fri Nov  2 13:55:12 2007 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Fri Nov  2 13:55:12 2007 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
Fri Nov  2 13:55:12 2007 [serverkey] Peer Connection Initiated with 134.109.184.163:1194
Fri Nov  2 13:55:14 2007 Initialization Sequence Completed

Bridging vs. Routing

What is the difference between bridging and routing?

Bridging and routing are two methods of linking systems via a VPN.
Bridging advantages

    * Broadcasts traverse the VPN -- this allows software that depends on LAN broadcasts such as Windows NetBIOS file 
      sharing and network neighborhood browsing to work.
    * No route statements to configure.
    * Works with any protocol that can function over ethernet, including IPv4, IPv6, Netware IPX, AppleTalk, etc.
    * Relatively easy-to-configure solution for road warriors.

Bridging disadvantages

    * Less efficient than routing, and does not scale well.

Routing advantages

    * Efficiency and scalability.
    * Allows better tuning of MTU for efficiency.

Routing disadvantages

    * Clients must use a WINS server (such as samba) to allow cross-VPN network browsing to work.
    * Routes must be set up linking each subnet.
    * Software that depends on broadcasts will not "see" machines on the other side of the VPN.
    * Works only with IPv4 in general, and IPv6 in cases where tun drivers on both ends of the connection support it explicitly.

Wasn nu tun oder tap?

Die Wahl welches Device benutzt wird, hängt davon ab was man über den VPN-Tunnel senden will. 
Mit dem tun-Device können nur IP-Pakete gesendet werden. Es ist also ein IP-Tunnel. 
Das tap-Device kann dagegen auch andere Protokolle senden. D.h. es könnte z.B. über einen VPN-Tunnel auch per 
Netware IPX auf einen Novell-Server zugegriffen werden. 
Daher nennt man die Benutzung dieses Devices Ethernet-Bridging. 
Hier die wichtigsten Vor- und Nachteile (aus der OpenVPN-FAQ):

Vorteile
--------

Ethernet Bridging
        - 'Überbrückt' den VPN-Tunnel
        - keine Routen notwendig
	- lässt auch andere Protokolle zu
          (z.B. Appletalk, Netware IPX usw.)
	- Einfache Konfiguration für Roadwarrior

IP-Tunnel
        - Effizient und Skalierbar
	- Erlaubt besseres tuning

Nachteile
---------

Ethernet Bridging
	- weniger Effizient als IP-Tunnel
        - schwer skalierbar

IP-Tunnel
	- Clienten benötigen einen WINS-Server um zwischen Netzwerken zu 'browsen'
        - keine Broadcasts über die Netze möglich (OFFEN)
        - Netzwerke müssen geroutet werden	

Wie wird nun aber bei dem tap-Device eine 'Brücke' hergestellt? 
Auf Details gehe ich hier nicht ein (es geht ja um VPN und nicht um Ethernet-Bridging), 
aber hier ein kurzer Tip: Ethernet-Bridging bedeutet bei VPN das ein Netzwerkcontroller den Tunnel überbrücken kann. 
Es muss also einem Controller gesagt werden, dass er das VPN-Device benutzen soll. 
Unter Linux kann dazu das Tool brtcl benutzt werden. 
Unter Windows müssen in den Netzwerkverbindungen die betreffende Verbindung und das VPN-Device markiert werden, 
dann ein Klick mit der rechten Maustaste und Verbindungen überbrücken wählen.

tap = Ethernet Tunnel -> jeglicher Traffic -> Bridging -> siehe oben ^^
tun = IP Tunnel -> nur IP Pakete -> Routing

VPN ohne Keys nur mit Loginname und Passwort möglich? Point to Point Tunnel .. Multipoint fähig?

VPN Client Cisco mit OpenVPN?

VPN Client unter Win als Dienst vor Anmeldung? o.O

Die Authentifizierung am OpenVPN Server ist ein zusätzlicher Schutzmechanismus.

Achtung: Dieser Schutz ist ohne Verschlüsselung sinnlos, da Username und Passwort unverschlüsselt übertragen werden! 
Es ist in jedem Fall zu empfehlen, die zusätzliche Authentifizierung nur in Verbindung mit der zertifikatbasierten 
Authentifizierung und Verschlüsselung zu nutzen. 

VPN Client To Multichannel

http://www.vpnforum.de/wiki/index.php/Config_ServerNET_Routing

Es scheint als würde der CISCO VPN Client nicht mit dem OpenVPN Server zusammenarbeiten bzw. wurde nichts darüber im Internet gefunden, es wurde nur gesagt den OpenVPN Traffic durch ein Cisco VPN durchzuleiten o.O

Als GUI für OpenVPN unter Windows gibt es folgende Möglichkeit:

http://openvpn.se/todo.html

Files downloaden und installieren

http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe
http://openvpn.se/files/localized/binary/1.0.3/openvpn-gui-1.0.3-de.exe

die Datei openvpn-gui.exe im OpenVPN Verzeichnis (C:\Programme\openvpn\bin\) mit
der Datei openvpn-gui-1.0.3-de.exe ersetzen aber den Namen beibehalten -> openvpn-gui.exe

Konfigurationsdateien anpassen

die Linux Konfigurationsdateien sind zu übernehmen und in das Verzeichnis C:\Programme\openvpn\config 
zu kopieren.

Ethernet Bridging

http://openvpn.net/bridge.html

Bridge Start Skript

#!/bin/bash

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.8.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.8.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

Bridge Stop Skript

#!/bin/bash

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged together
tap="tap0"

ifconfig $br down
brctl delbr $br

for t in $tap; do
    openvpn --rmtun --dev $t
done

OpenVPN Server tap Device tlsserver_tap.ovpn

# Konfigurationsdatei mit TAP Device (Ethernettunnel)
dev tap
port 1194
mode server
server-bridge 10.0.0.0 255.255.255.0 10.0.0.100 10.0.0.130
client-to-client
tls-server
dh dh2048.pem
ca vpn-ca.pem
cert server_cert.pem
key server_key.pem
verb 3
keepalive 10 30
persist-key
persist-tun

OpenVPN Client tap Device tlsclient_tap.ovpn

dev tap
remote 134.109.184.163
port 1194
tls-client
ca vpn-ca.pem
cert client1_cert.pem
key client_key.pem
verb 3
pull