https://wiki.ubuntuusers.de/OpenVPN/
https://sarwiki.informatik.hu-berlin.de/OpenVPN_(deutsch)
Installation
apt install openvpn easy-rsa cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gunzip /etc/openvpn/server.conf.gz cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa2
Konfiguration
Schlüssel und Zertifikate
Die Datei /etc/openvpn/easy-rsa2/vars anpassen
export KEY_COUNTRY="DE" export KEY_PROVINCE="RLP" export KEY_CITY="Bellheim" export KEY_ORG="Woody" export KEY_EMAIL="admin@creutz.net" export KEY_OU="Webservice" export PKCS11_MODULE_PATH=changeme export PKCS11_PIN=75889345 export KEY_ALTNAMES="woodykey"
Aufgrund eines Fehlers wird manchmal das Unterverzeichnis für die Keys nicht erstellt. Man sollte dies darum von Hand nachholen
mkdir /etc/openvpn/easy-rsa2/keys
Als nächstes muss unbedingt die neueste openssl-x.x.x.cnf umbenannt werden in openssl.cnf oder ein symbolischer Link erstellt werden.
cp openssl-1.0.0.cnf openssl.cnf
Danach muss die oben angepasste Datei vars in die Umgebungsvariablen aufgenommen werden
source /etc/openvpn/easy-rsa2/vars
Es erscheint eine Warnmeldung, worauf mit den folgenden Skript-Aufrufen das Master-Zertifikat und der Master-Schlüssel erstellt werden (mit sudo):
sudo -E ./clean-all sudo -E ./build-ca sudo -E ./build-key-server server (PW woody)
Anschließend müssen nun die Schlüssel für alle Benutzer angelegt werden:
sudo -E ./build-key honor # Erstellt Client-Daten für den Benutzer "honor" sudo -E ./build-key jd # Erstellt Client-Daten für den Benutzer "jd"
Jetzt müssen noch die Diffie-Hellman-Parameter generiert werden. Diese sind nötig, um kryptografische Schlüssel sicher über unsichere Kanäle auszuhandeln. Das geschieht mit
sudo -E ./build-dh
Wirs später ein neuer Client hinzu gefügt, muss diese Eingabe wiederholt werden. Es werden alle neuen Client-Daten generiert.
Client Daten zusammen stellen
cd /etc/openvpn/easy-rsa2/keys/ tar -cf client1.tar client1.key client1.crt ca.crt mkdir /etc/openvpn/clients mv client1.tar /etc/openvpn/clients/
Für jeden weiteren Client (Benutzer) wiederholen. Die dadurch erzeugte client1.tar Datei dem Benutzer übergeben.
mail -a /etc/openvpn/clients/client1.tar client1@mailadresse.de
Server konfigurieren
vim /etc/openvpn/server.conf
# Which local IP address should OpenVPN listen on? (optional) ;local a.b.c.d # Which TCP/UDP port should OpenVPN listen on? port 5001 # TCP or UDP server? proto tcp-server ;proto udp # "dev tun" will create a routed IP tunnel, # "dev tap" will create an ethernet tunnel. ;dev tap dev tun tun-mtu 1500 # SSL/TLS root certificate (ca), certificate ca ./easy-rsa2/keys/ca.crt cert ./easy-rsa2/keys/server.crt key ./easy-rsa2/keys/server.key dh ./easy-rsa2/keys/dh2048.pem # Network topology ;topology subnet # Configure server mode and supply a VPN subnet server 10.10.0.0 255.255.255.0 # Maintain a record of client <-> virtual IP address ifconfig-pool-persist ipp.txt # Configure server mode for ethernet bridging. ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 # Push routes to the client to allow it push "route 192.168.178.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" # allow different clients to be able to "see" each other. client-to-client # Uncomment this directive if multiple clients # might connect with the same certificate/key duplicate-cn # The keepalive directive causes ping-like # messages to be sent back and forth over # the link so that each side knows when # the other side has gone down. # Ping every 10 seconds, assume that remote # peer is down if no ping received during # a 120 second time period. keepalive 10 120 # Select a cryptographic cipher. cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES # Enable compression on the VPN link. comp-lzo # The maximum number of concurrently connected max-clients 10 client-config-dir /etc/openvpn/clients # OpenVPN daemon's privileges user openvpn group openvpn # The persist options will try to avoid # accessing certain resources on restart # that may no longer be accessible because # of the privilege downgrade. persist-key persist-tun # Output a short status file status /var/log/openvpn-status.log log-append /var/log/openvpn.log mute 10 verb 0
Routing
Routing am Server aktivieren
sysctl -w net/ipv4/ip_forward=1 vim /etc/sysctl.conf
net.ipv4.ip_forward=1
Default Route auf dem Default Gateway im Netz hinzu fügen
route add -net 10.10.0.0 netmask 255.255.255.0 gw 192.168.178.3
Autostart
update-rc.d openvpn defaults
Client Konfiguration
- Die gepackte Client-Datei nach /etc/openvpn/ auspacken, in den neuen Ordner springen und die Client-Config Datei anlegen.
cd /etc/openvpn tar -xvf client1.tar vim /etc/openvpn/client1/client1.ovpn
Inhalt der Datei client1.ovpn:
client proto tcp dev tun ca ca.crt cert jd.crt key jd.key remote creutz.spdns.de 5001 cipher BF-CBC verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind auth-nocache link-mtu 1544 mute-replay-warnings redirect-gateway def1 bypass-dhcp ## Proxy http-proxy 192.43.65.235 80 stdin basic
Jetzt kann die VPN-Verbindung genutzt werden
cd /etc/openvpn/client1 sudo openvpn client1.ovpn