Beim Einrichten von VPN möchte man meist nicht nur auf das Hostsystem, also den OpenVPN-Gateway zugreifen, sondern auch auf das Netzwerk dahinter. Damit dies gelingt, sollten neben den passenden OpenVPN-Einstellungen zusätzlich passende iptables-Einträge erstellt werden. Damit diese nicht beim Neustart des Servers verloren gehen, liefern wir hier ein kleines Initskript, was dies erledigt.
#!/bin/sh # OpenVPN iptables skript # -- # (C) 2014 Rene Knipschild - Custom Software Development # www.rkcsd.com - P.O. Box 1468 - 34484 Korbach - GERMANY # Phone: +49 5631 9189488 # Email: email@rkcsd.com # Use my PGP pubkey for email requests: (download here) # http://go.reneknipschild.net/pubkey ### BEGIN INIT INFO # Provides: openvpn-iptables # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Sets up OpenVPN iptables ### END INIT INFO case "$1" in start) echo "Setting up OpenVPN iptables..." iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ;; stop) ;; *) echo "Usage: /etc/init.d/openvpn-iptables {start|stop}" exit 1 ;; esac exit 0
Dieses muss nur nach /etc/init.d/openvpn-iptables
kopiert werden, Rechte richtig setzen per chmod 755 /etc/init.d/openvpn-iptables
, und per update-rc.d openvpn-iptables defaults 20
aktiviert werden.1)
Es bietet sich an, auf den Clients den OpenVPN-Service direkt als Client beim Systemstart mitlaufen zu lassen. Für das Problem, dass ein Push bestimmter Routen nicht funktioniert, bietet sich ein Fix-Skript an.
Service anlegen in /lib/systemd/system/openvpnfix.service
[Unit] Description=Fixing OpenVPN routes and mount NFS network shares After=openvpn.service [Service] ExecStart=/etc/openvpn/OpenVPNFix.sh [Install] WantedBy=multi-user.target
Das von uns benötigte Skript:
#!/bin/sh # OpenVPN fixing skript # -- # (C) 2015, 2016 Rene Knipschild - Custom Software Development # www.rkcsd.com - P.O. Box 1468 - 34484 Korbach - GERMANY # Phone: +49 5631 9189488 # Email: email@rkcsd.com # Use my PGP pubkey for email requests: (download here) # http://go.reneknipschild.net/pubkey echo "Waiting for OpenVPN connection to be possibly ready (30s)..." sleep 30 echo "Setting up OpenVPN routes..." route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.8.0.5 echo "Mounting NFS network shares..." mount /mnt/server/pool
Die NFS-Shares sind hierbei auf noauto
geschaltet, denn sonst werden diese vor dem OpenVPN-Service-Start versucht, zu mounten, was natürlich in einem fremden Netzwerk nicht gehen wird.
Dann noch neuen „Dienst“ per systemctl enable openvpnfix
aktivieren2). Es sollte die Meldung Created symlink from /etc/systemd/system/multi-user.target.wants/openvpnfix.service to /lib/systemd/system/openvpnfix.service
erscheinen