Inhaltsverzeichnis
OpenVPN
Doku: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage <WRAP center round tip 40%>OpenVPN Port: 1194 </WRAP>
Verzeichnisstruktur von OpenVPN
Aufruf Verzeichnis für die Configdatei ------------------------------------------------------------- openvpn@<configfile> /etc/openvpn openvpn-client@<configfile> /etc/openvpn/client openvpn-server@<configfile> /etc/openvpn/server
Als Basis für die unten genannten Beispiele, dienten zwei Server mit folgender Netzkonfiguration:
centos-srv: 172.16.17.1/28 [LAN-1], 172.16.19.1/28 [VPN-Netz] debian-efi: 172.16.17.10/28 [LAN-1]
Peer-to-Peer-VPN
Debian 10.x: OpenVPN installieren
apt-get install openvpn
Debian 10.x: Konfigurationsdiretory von OpenVPN
/etc/openvpn /client /server
Konfigurationsfile für die Peer-To-Peer Verbindung: /etc/openvpn/p2p.conf
mode p2p cipher AES-256-CBC auth-nocache # Wenn gesetzt muss das PW bei Verbindungsabbruch neu eingegeben werden wenn die Verbindung abbricht port 1194 proto udp4 dev tun # Beachten Sie die Umkehrung der Reihenfolge bei den IP-Adressen lokale IP -> remote IP ifconfig 10.111.0.1 10.111.0.2 secret p2p.key ping 5 ping-restart 120
Debian 10.x: Den notwendigen p2p.key erzeugen
cd /etc/openvpn openvpn --genkey --secret p2p.key
Den generierten p2p.key auf den Peer (centos-srv) übertragen:
scp /etc/openvpn/p2p.key root@172.16.17.1:/etc/openvpn/
Debian 10.x: OpenVPN-Dienst starten
systemctl start openvpn@p2p
Centos7: Notwendige Pakete installieren
yum install openvpn -y
Centos7: OpenVPN Konfigurationsdirektory
/etc/openvpn client server
Centos7: OpenVPN Konfigurationsdatei für unsere Peer-To-Peer Verbindung
vi /etc/openvpn/p2p.conf
# Modus der Verbindung festlegen:
mode p2p
cipher AES-256-CBC
auth-nocache # Wenn gesetzt muss das PW bei Verbindungsabbruch neu eingegeben werden wenn die
Verbindung abbricht
# Remote-VPN-Computer und Port angeben!
# Es kann als Ziel entweder eine IP-Adresse oder ein FQDN verwendet werden
remote <Remoter_Server-IP oder FQDN> 1194
# Protokoll der Transportschicht auswählen:
proto udp4
# Tunnelgerät definieren:
dev tun
# Zuerst die lokale und dann die Remote-IP-Adresse angeben:
ifconfig 10.111.0.2 10.111.0.1
# Auf die Schlüsseldatei verweisen:
secret static.key
# Zyklisch die Verbindung prüfen und ggf. neu aufbauen:
ping 5
ping-restart 120
ping-timer-rem
# Protokollierungsgrad festlegen:
verb 3
mute 20
Den vom Debian kopierten Key ins OpenVPN-Verzeichnis kopieren
mv /tmp/p2p.key /etc/openvpn
<WRAP center round info 60%> Pfad zu den Service-Files: /lib/systemd/system </WRAP>
Centos7: OpenVPN Dienst starten
systemctl start openvpn@p2p
VPN-Server für mehrere gleichzeitige Client Zugriffe konfigurieren
<WRAP center round box 100%> Als erstes richten wir eine zusätzliche Ethernet-Verbindung mit der festen IP 172.16.19.1/28 ein. Das Netz richten wir für unser kleines VPN-Netz ein: </WRAP>
nmtui systemctl restart NetworkManager
Centos7: Notwendige OpenVPN Pakete installieren
yum install openvpn easy-rsa -y
Der Pfad zum Tool easyrsa liegt unter: /usr/share/easy-rsa/<VERSION>/easyrsa
z. B. /usr/share/easy-rsa/3.0.8 (Stand: 12.01.2020)
Damit das System während unserer Einrichtung den Pfad, kennt folgendes ausführen:
export PATH=$PATH:/usr/share/easy-rsa/<VERSION> z. B. export PATH=$PATH:/usr/share/easy-rsa/3.0.8
OpenVPN-Server Root-Zertifikat erstellen
mkdir -p /etc/openvpn/keys cd /etc/openvpn/keys easyrsa init-pki /etc/openvpn/keys easyrsa build-ca
Keys für den VPN-Server generieren
easyrsa gen-req <UNIQUE_SERVER_SHORT_NAME> nopass z. B. easyrsa gen-req centos-srv nopass
Keys für den jeden VPN-Client generieren
easyrsa gen-req <UNIQUE_CLIENT_SHORT_NAME> nopass z. B. easyrsa gen-req debian-efi nopass
Erzeuge Request-Dateien importieren
easyrsa import-req /etc/openvpn/keys/pki/<UNIQUE_SERVER_SHORT_NAME>.req <UNIQUE_SERVER_SHORT_FILE_NAME> z. B. easyrsa import-req /etc/openvpn/keys/pki/reqs/centos-srv.req vpn-server easyrsa import-req /etc/openvpn/keys/pki/reqs/<UNIQUE_CLIENT_SHORT_NAME>.req <UNIQUE_CLIENT_SHORT_FILE_NAME> z. B. easyrsa import-req /etc/openvpn/keys/pki/reqs/debian-efi.req vpn-client
Request-Dateien mit dem Root-Zertifikat signieren
easyrsa sign-req server vpn-server easyrsa sign-req client vpn-client
Folgende Dateien wurden jetzt erzeugt
/etc/openvpn/keys/pki/ca.crt /etc/openvpn/keys/pki/reqs/<UNIQUE_SERVER_SHORT_NAME>.req\\ z. B. /etc/openvpn/keys/pki/reqs/centos-srv.req /etc/openvpn/keys/pki/reqs/<UNIQUE_CLIENT_SHORT_NAME>.req\\ z. B. /etc/openvpn/keys/pki/reqs/debian-efi.req /etc/openvpn/keys/pki/issued/<UNIQUE_SERVER_SHORT_FILE_NAME>.crt\\ z. B. /etc/openvpn/keys/pki/issued/vpn-server.crt /etc/openvpn/keys/pki/issued/<UNIQUE_CLIENT_SHORT_FILE_NAME>.crt\\ z. B. /etc/openvpn/keys/pki/issued/vpn-client.crt /etc/openvpn/keys/pki/private/ca.key /etc/openvpn/keys/pki/private/<UNIQUE_SERVER_SHORT_NAME>.key\\ z. B. /etc/openvpn/keys/pki/private/centos-srv.key /etc/openvpn/keys/pki/private/<UNIQUE_CLIENT_SHORT_NAME>.key\\ z. B. /etc/openvpn/keys/pki/private/debian-efi.key
Kryptografischen Schlüssel erzeugen
openssl dhparam -out dh4096.pem 4096
Die erzeugten Keys bereitstellen für den centos-srv Server
cp /etc/openvpn/keys/pki/ca.crt /etc/openvpn/keys/ca.crt cp /etc/openvpn/keys/pki/issued/vpn-server.crt /etc/openvpn/keys/vpn-server.crt cp /etc/openvpn/keys/pki/private/centos-srv.key /etc/openvpn/keys/centos-srv.key -> hier zum cut&paste cp /etc/openvpn/keys/pki/ca.crt /etc/openvpn/keys/ca.crt && cp /etc/openvpn/keys/pki/issued/vpn-server.crt /etc/openvpn/keys/vpn-server.crt && cp /etc/openvpn/keys/pki/private/centos-srv.key /etc/openvpn/keys/centos-srv.key
Die erzeugten Keys bereitstellen für den debian-efi Client
Centos7: Generierte Keys zum Debian-System kopieren
scp pki/ca.crt root@172.16.17.10:/tmp scp pki/issued/vpn-client.crt root@172.16.17.10:/tmp scp pki/private/debian-efi.key root@172.16.17.10:/tmp
Auf debian-efi die Keys in das OpenVPN-Verzeichnis kopieren
mkdir -p /etc/openvpn/keys cp /tmp/ca.crt /etc/openvpn/keys/ cp /tmp/vpn-client.crt /etc/openvpn/keys/ cp /tmp/debian-efi.key /etc/openvpn/keys/
Server-Konfiguration für den centos-srv anlegen: vi /etc/openvpn/server/server.conf
### Serverkonfigurationsdatei ### port 1194 proto udp4 dev tun # Zertifikate und Schlüssel angeben: cd ../keys ca ca.crt cert vpn-server.crt key centos-srv.key dh dh1024.pem # VPN-Netzwerkadressen zur automatischen Verteilung # Die erste Adresse verwendet der Server selbst. server 172.16.20.0 255.255.255.240 # Für wiederkehrende Clients verwendete IP-Adressen # in dieser Datei speichern: ifconfig-pool-persist ipp.txt # Routing-Eintrag dem Client hinzufügen push "route 172.16.19.0 255.255.255.240" # Dem Client einen DNS-Server zuweisen push "dhcp-option DNS 172.16.19.1" # Ermögliche Kontakt zwischen Clients client-to-client # Verbindung alle 10 Sek. testen (ICMP). Wenn nach # 120 Sek. keine Antwort Tunnel ggf. neu aufbauen keepalive 10 120 # Kompression einschalten comp-lzo # Maximale Anzahl von Clients festlegen max-clients 40 # Statusdatei festlegen status openvpn-status.log # Mittleren Protokollierungsgrad festlegen verb 3 # Client-Konfiguration (debian-clt)
=== Konfiguration für den debian-efi Client anlegen: vi /etc/openvpn/client/client.conf
### Client-Konfiguration ### client dev tun proto udp4 # VPN-Server: remote <WAN-IP oder FQDN-Centos-Srv> 1194 # WAN # Zertifikate und Schlüssel: cd ../keys ca ca.crt cert vpn-client.crt key debian-efi.key # Kompression einschalten comp-lzo verb 3
Firewall Regel für OpenVPN einpflegen
firewall-cmd --permanent --zone=public --add-port=1194/udp oder firewall-cmd --permanent --zone=WAN --add-port=1194/udp firewall-cmd --reload
OpenVPN-Server auf centos-srv starten
systemctl start openvpn-server@server
OpenVPN-Client auf debian-efi starten
systemctl start openvpn-client@client
Test der OpenVPN-Verbindung auf dem debian-efi durchführen
ping -c 4 172.16.19.1