Project

General

Profile

OpenVPN Server auf Ubuntu

Einrichten eines openVPN Server unter Ubuntu mit UFW auf Basis der Nutzung des internen Netzes in der Hetzner Cloud.

Der OpenVPN Server (Hezner VM in HetznerCloud) soll alle Anfragen des VPN Client an das internen Netz der Hetzner Cloud weiter leiten.

Information für dieses Beispiel
  • VPN Netz: 10.8.0.0/24 (default aus Script)
  • internal Hetzner Netz: 10.0.0.0/14 (default Hetzner Cloud)
  • intere IP VPN Server: 10.0.0.4 (Interface Name: ens10)

Installation openVPN Server

Ich habe das "paranoid" Script gewählt, da man hier ein Password für das ClientCertifkat setzen kann.

Download Install Script:

git clone https://github.com/cryptopunks/openvpn_paranoid_installer.git

Installation:

./openvpn_paranoid_installer/openvpn_paranoid_installer.sh
## Dann der Console folgen

Nach der Installation liegt ein fertiges ovpn file im Verzeichnis. Diese kann jetzt auf dem Client importiert werden.

disable des mitgebrachten openvpn-iptables.service (setzt IPTables Regeln die hier nicht erwüscht sind)

systemctl stop openvpn-iptables.service
systemctl disable openvpn-iptables.service

NAT in UFW eintragen

edit: /etc/ufw/before.rules
NAT Konfig vor *filter Sektion eintragen

# START OPENVPN RULES by vg
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -d 10.0.0.0/24 -o ens10 -j MASQUERADE
COMMIT
# END OPENVPN RULES by vg

forward Regeln nach "ok icmp code for FORWARD" eintragen

#OpenVPN Forward by vg
-A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
-A ufw-before-forward -m state --state RELATED,ESTABLISHED -j ACCEPT
#OpenVPN END by vg

restart ufw:

ufw disable && ufw enable

Testen der Nat Regeln:

ganz unten sollte jetzt die NatRegel auftauchen

~# iptables  -L -v -t nat

Chain PREROUTING (policy ACCEPT 2254 packets, 116K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 307 packets, 18200 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 312 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 4 packets, 312 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  any    ens10   10.8.0.0/24          10.0.0.0/24   

Route für dieses VPN Netz pushen

edit: /etc/openvpn/server.conf

push "route 10.0.0.0 255.255.255.0" 

restart openVPN Service

systemctl restart openvpn@server.service

Test auf dem Client:

OpenVPN Client neu verbinden, jetzt sollte die routing Tabelle eine Route von
10.0.0.0/24 nach 10.8.0.1 (tun1) zeigen

~$ route -n
10.0.0.0        10.8.0.1        255.255.255.0   UG    50     0        0 tun1
10.8.0.0        0.0.0.0         255.255.255.0   U     50     0        0 tun1