Openvpn
Inhaltsverzeichnis
Einfaches Setup für zwei Maschinen
Auf beiden Maschinen
apt-get install openvpn
Server side
openvpn --genkey --secret secret.key
scp secret.key root@<remote host>
vim /etc/openvpn/simple.conf
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret secret.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
daemon
Client side
Der <remote.host> muss durch den Clienten aufgelöst werden können.
Entweder per /etc/hosts oder DNS
vim /etc/openvpn/simple.conf
remote <remote.host>
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret secret.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user nobody
group nogroup
daemon
Sternförmiges Setup mit zentralem Server
OpenVPN-Server mit CentOS 7
Installation
OpenVPN befindet sich nicht in den Repos des CentOS-Projektes.
Deshalb müssen Fedora EPEL repos eingebunden werden.
yum install epel-release yum makecache
yum install openvpn easy-rsa -y
Ifconfig wird benötigt, es ist per default nicht installiert.
yum install net-tools -y
Zertifikate erstellen
Wir bauen uns unsere eigene Certification Authority.
Wichtiger Hinweiß: Aus Sicherheitsgründen sollten der ca.key niemals auf dem Server verbleiben!
Easy-rsa findet sich bei CentOS 7 in
/usr/share/easy-rsa/2.0
Das verzeichniss 2.0 kopieren wir an einen Platz unserer Wahl, der Ordner kann jeden Namen haben.
Empfehlenswert ist ein Verzeichnissname, der den Namen des VPN widerspiegelt.
Config
Server Config
# # /etc/openvpn/newvpn.conf # Files liegen in /etc/openvpn/newvpn # und /etc/openvpn/newvpn/ccd-dir # Port, default ist 1124, alles ist besser als 1124. Minimiert Script-Angriffe. port <Port des VPN-Servers> #Protokoll-Typ proto udp # Device Typ, möglich sind tun und tap dev-type tun # Devicename dev newvpn # Speicherort der Zertifikate, Schlüssel usw. Pfade sind relativ zum Configfile ca newvpn/ca.crt cert newvpn/server.crt key newvpn/server.key dh newvpn/dh2048.pem mode server tls-server # Topologie des Netzwerkes topology subnet # mit push wird die Topologie dem Clienten mitgeteilt push "topology subnet" # IP des Servers und Netzmaske, ergibt zugleich das Netzwerk ifconfig 10.8.100.10 255.255.255.0 # Range der frei vergebbaren IPs, vergleichbar mit Range aus DHCP ifconfig-pool 10.8.0.11 10.8.0.199 255.255.255.0 # Hier werden die IPs der Clienten hinterlegt, vergleichbar mit # host win01 { hardware ethernet 00:00:00:00:00:00; fixed-address 192.168.0.5; } # Zuweisung erfolgt über den Dateinamen, der der selbe sein muss wie Common Name im Schlüssel des Clienten #Pfade sind relativ zum Configfile client-config-dir newvpn/ccd-dir ifconfig-pool-persist ipp.txt # Dadurch können sich Clienten untereinander verbinden client-to-client keepalive 10 120 # Kommpression der Verbindung comp-lzo # openvpns user-ID user nobody # openvpns group-ID group nobody # Schlüssel wird bei Erhalt von SIGUSR1 nicht neu geladen persist-key # Tun-Device wird bei Erhalt von SIGUSR1 nicht neu geladen persist-tun # Pfad ist relativ zum Configfile status openvpn-status.log # Verbosity Level verb 3
IP Zuweisung an Client
Im Verzeichniss newvpn/ccd-dir liegen die Dateien, die den Clienten feste IPs zuweisen können.
Die Datei hat den selben Namen wie der Common Name im Key des Clienten
vim <Common Name>
Inhalt der Datei
ifconfig-push 10.8.100.201 255.255.255.0
Files in newvpn
ca.crt dh2048.pem server.crt server.key
Service starten
Startet automatisch bei Systemstart.
String zwischen @ und .service ergibt sich aus dem Confignamen
systemctl enable openvpn@server.service
Händischer Start
systemctl start openvpn@server.service
Client Config
# # /etc/openvpn/newvpn.conf # Files liegen in /etc/openvpn/newvpn tls-client remote <IP oder FQDN des VPN-Servers> <Port des VPN-Servers> proto udp dev-type tun dev newvpn ca newvpn/ca.crt cert newvpn/client1.crt key newvpn/client1.key pull keepalive 10 120 comp-lzo persist-key persist-tun verb 3
Files in newvpn
ca.crt client1.crt client1.key