OpenVPN Server unter MikroTik RouterOS

Ja ja – lange nichts mehr geschrieben. Aber ich lebe noch und habe gerade eine OpenVPN Odyssee mit MikroTik Routern hinter mich gebracht. Warum? Ihr kennt es: Man googelt hoch motiviert nach einem knackigen Howto und entdeckt lauter Blogs, die mit viel Halbwissen gefüllt sind. Man merkt das die meisten noch nie ein OpenVPN unter Linux konfiguriert haben, geschweige denn den Unterschied zwischen TUN und TAP kennen. Sei es drum. Du hast diese Doku gefunden und sollst nicht enttäuscht werden, denn sie funktioniert 🙂
Erst mal die Zertifikate und Schlüssel mit OpenSSL bauen. Zu kompliziert? Stimmt. Dafür gibt es ja auch Easy-RSA. Zuerst die Datei „vars“ editieren und die gewünschten Parameter anpassen:

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="DE"
export KEY_PROVINCE="Saarland"
export KEY_CITY="Saarbruecken"
export KEY_ORG="MikroTik Router"
export KEY_EMAIL="noreply@mikrotik.local"
export KEY_OU="IT"

Dann bosseln wir schnell die benötigten Certs und Keys mit den folgenden Befehlen zusammen:

cd /usr/share/easy-rsa/

source vars    
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/easy-rsa/keys

./build-ca                         # CA erstellen
./build-key-server mikrotik    # Server Zertifikat
./build-key client1              # Client Zertifikat (am besten mehrere erstellen)

Inhalt von "Keys":

/snip/
538098 -rw-r--r-- 1 root root 1809 Jul 11 11:33 ca.crt
538097 -rw------- 1 root root 1704 Jul 11 11:33 ca.key
538108 -rw-r--r-- 1 root root 5591 Jul 11 11:34 client1.crt
538107 -rw-r--r-- 1 root root 1094 Jul 11 11:34 client1.csr
538106 -rw------- 1 root root 1704 Jul 11 11:34 client1.key
538113 -rw-r--r-- 1 root root 5591 Jul 11 11:34 client2.crt
538096 -rw-r--r-- 1 root root 1094 Jul 11 11:34 client2.csr
538094 -rw------- 1 root root 1708 Jul 11 11:34 client2.key
538101 -rw-r--r-- 1 root root 5715 Jul 11 11:33 mikrotik.crt
538100 -rw-r--r-- 1 root root 1094 Jul 11 11:33 mikrotik.csr
538099 -rw------- 1 root root 1704 Jul 11 11:33 mikrotik.key

Zuerst importieren wir die Zertifikate. Die Certs am besten mit WinSCP auf den MikroTik Router kopieren:

OpenVPN-Server-Files-WinSCP

In der Winbox ins System importieren (System > Files > Import):

OpenVPN-Server-Files

Der Buchstabe „K“ erscheint sobald der Key zum passenden Zertifikat gefunden wurde:

OpenVPN-Server-Cert-Import

Jetzt legen wir ein Profil für OpenVPN Server an. Damit bestimmen wir die lokale Server-IP für den OpenVPN Adapter (TUN/TAP) und den IP-Pool der Remote Clients (PPP > Profiles):

OpenVPN-Server-Profiles

IP Pool. Gute Sache. Bevor man diesen auswählen kann, muss er erzeugt werden (IP > Pool):

OpenVPN-Server-IP-Pool

Jetzt kann der eigentliche OpenVPN Server aktiviert werden (PPP > OVPN Server):

OpenVPN-Server-Setup

Zum Einwählen fehlt noch ein Benutzer mit Passwort (PPP > Secrets):

OpenVPN-Server-Secrets

Das war’s jetzt auf dem MikroTik Router. Nun geht’s auf dem WIndows Client weiter. Folgende Dateien und Config in den Programmordner von OpenVPN kopieren:

OpenVPN-Server-Client-1

Hier meine Beispielkonfiguration:

remote 10.1.1.65 1194

proto tcp-client
dev tun

resolv-retry infinite
nobind
persist-key
persist-tun

tls-client
ca ca.crt
cert client1.crt
key  client1.key
auth-user-pass

ping 10
verb 3

cipher AES-256-CBC
auth SHA1
pull

# Hier die lokalen Routen eintragen die in den Tunnel gehen sollen
route 10.8.111.0 255.255.255.0 10.8.10.1

Verbinden uns loslegen:

OpenVPN-Server-Client-1-Einwahl

Kleiner Ping aufs Gateway und das war’s:

Einwahl-mit-zwei-Testclients-Client2

5 Gedanken zu „OpenVPN Server unter MikroTik RouterOS

  1. Krause

    Mein Kollege sagt, das funktioniert so. Und wenn es auch bei mir morgen klappt, dann muss ich dir aus tiefstem Herzen für diese Doku danken! Musste mir bisher immer mit nem Raspi helfen.

    1. Michael Klehr Beitragsautor

      Schön wenn die Dokus was bringen und genutzt werden. Ich arbeite schon lange mit OpenVPN und die Firma Mikrotik hat mit seiner „nur TCP bei OpenVPN“ Strategie echt keine Glanzleistung vollbracht, aber auch hier muss man es halt irgendwie zum Laufen bringen 🙂

      1. Krause

        Habs gestern eingerichtet. Works like a charm.

        Bei der Stelle mit dem IP Pool („IP Pool. Gute Sache. Bevor man diesen auswählen kann, muss er erzeugt werden“) musste ich ja an die Schulzeit bei meinem Chemielehrer denken:
        „Wir mischen Mehl, Milch und Zucker, schütten das ganze in eine Form, streichen glatt und ab in den Ofen damit. Ach ja: Vorher kamen noch Eier rein.“

        Die Sache mit TCP hat mich ebenfalls gewundert, weil ich lieber UDP nutze. Aber wenn man sich einen kompletten Raspi am Standort spart, ist das für mich, für den Kunden und für die Infrastruktur sehr sinnvoll. Die meisten IT-Techniker sind ohnehin sowohl mit dem Raspi, als auch mit dem Mikrotik überfordert. Die können nur Profi-VPN-Appliance-Boxen für 500 Euro / Standort aufstellen 😉

  2. Gustel

    Sehr interessant, ich spiele auch mit dem Gedanken OVPN einzuführen.

    Zwei Dinge würde ich noch gerne wissen:
    – wie kann man einen VPN-User wieder sperren (ich denke hier z. B. an Mitarbeiter, die nicht im guten gingen)
    – auf welche Netze haben VPN-User Zugriff? Wir haben mehrere Dutzend VLANs veranlagt, um ein all-in-Zugriff wäre ein Sicherheits-Super-GAU!

    1. Michael Klehr Beitragsautor

      Das User Zertifikat kannst du löschen und die CRL veröffentlichen. Viel einfacher: du kannst den entsprechenden User einfach deaktivieren, löschen oder das PW ändern. Fertig.
      Zu den Netzen:
      1: nur die Netze pushen die genötigt werden
      2: den Rest über die Firewall regeln – dafür ist sie da 🙂
      Echt merkwürdig diese Fragen. Ganz ehrlich. Bei solchen Anforderungen sind das für mich absolute Basics was das Design angeht. Du solltest dir helfen lassen 😉

Schreibe einen Kommentar