Configurare un Mikrotik come un server OpenVPN

Da qualche tempo ho convertito tutte le VPN che usavo per la gestione dei clienti in OpenVPN, diventato oramai uno standard, al posto delle vecchie PPTP oramai non più sufficientemente sicure e così avendo quasi sempre un Mikrotik presso i clienti ho deciso di riassumere i passaggi per la configurazione in questo post.

Tutta la configurazione viene fatta direttamente nel Mikrotik, compresa la generazione dei certificati, quindi dopo esserci collegati con il Winbox possiamo iniziare.

Mi raccomando di sostituire gli indirizzi IP, gli utenti e le password con i vostri dati.

Per prima cosa creiamo una CA, firmiamo il relativo certificato ed esportiamolo:

/certificate
add name=CA common-name=CA key-usage=key-cert-sign,crl-sign days-valid=3600
sign CA ca-crl-host=192.168.0.1 name=CA
export-certificate CA

In questo modo all’interno della sezione File ci ritroveremo con il file cert_export_CA.crt.

Ora che abbiamo generato la CA possiamo generare il certificato per il nostro Mikrotik, quindi scriviamo:

/certificate
add name=Mikrotik common-name=mikrotik days-valid=3600
sign Mikrotik ca=CA name=mikrotik

A questo punto se tutto è andato a buon fine dovremmo ritrovarci con i due certificati appena generati:

Certificates

Ora dobbiamo creare un pool per l’assegnazione degli indirizzi IP ai client:

/ip pool add name=ovpn-pool range=192.168.131.10-192.168.131.200

Qui la scelta della classe è arbitraria, l’importante è che non sia una classe esistente in LAN.

Creaiamo poi il profilo per la connessione, definendo il nome, l’ip da usare per il mikrotik e il relativo pool di indirizzi:

/ppp profile add name=ovpn local-address=192.168.131.1 remote-address=ovpn-pool

Ora creiamo un utente abilitato a connettersi in OpenVPN:

/ppp secret add name=vpn_user password=qystQMf9TxhlVrq9vE00 profile=ovpn service=ovpn

E infine attiviamo il server OpenVPN:

/interface ovpn-server server set enabled=yes certificate=mikrotik auth=sha1 cipher=aes256 port=1194 netmask=24 require-client-certificate=no mode=ip default-profile=ovpn

A questo punto la configurazione lato Mikrotik è terminata, non ci rimane altro da fare che creare i due file di configurazione da usare sul client.

Lato client abbiamo bisogno di due file:

  • Nome_connessione.ovpn
  • auth.cfg

Nel file auth.cfg dobbiamo inserire due due righe diverse l’utente e la password che abbiamo impostato nel Mikrotik, quindi nel nostro caso conterrà queste due linee:

vpn_user
qystQMf9TxhlVrq9vE00

Il file Nome_connessione.ovpn invece conterrà questo:

proto tcp-client
remote <nome_o_indirizzo_pubblico_del_Mikrotik> 1194
dev tun
script-security 2

nobind
persist-key

tls-client
verb 1

cipher AES-256-CBC
auth SHA1
pull

auth-user-pass auth.cfg
route 192.168.0.0 255.255.255.0
dhcp-option DOMAIN dominio.local
dhcp-option DNS 192.168.0.20

<ca>
..
</ca>

Nel file dovrete mettere i vostri dati:

  • Nome o indirizzo pubblico del Mikrotik
  • La classe di IP che usate internamente per creare automaticamente una rotta
  • Il nome del dominio locale e l’IP del server DNS interno se volete risolvere i nomi
  • Nella sezione <ca></ca> dovrete incollare il contenuto del file cert_export_CA.crt che abbiamo esportato nelle fasi iniziali

Una volta effettuati queste modifiche potrete stabilire una connessione OpenVPN verso il vostro Mikrotik senza nessun problema.

Se il Mikrotik non ha un IP pubblico ma si trova dietro un NAT non dovrete far altro che nattare sul router a monte la porta TCP 1194.

 

Potrebbero interessarti anche...

26 risposte

  1. riccardo ha detto:

    Potresti specificare i modelli che hai utilizzato? I miei dubbi sono anche relativi alle 1000 e più mille vulnerabilità che sono state rilevate su questi oggettini. Tu che mi dici?

    Grazie
    Riccardo

  2. Andrea Sistarelli ha detto:

    Considerando che il RouterOS è lo stesso in tutti i modelli non cambia molto, comunque ho utilizzando la configurazione sopra su RB950, hEX lite, RBG2011iL, VM, etc., sempre senza grossi problemi.

    E’ verò che i Mikrotik sono stati oggetto di attacchi vari, l’ultimo era dell’anno scorso se non ricordo male, ma se li tieni sempre aggiornati, disabiliti tutti i servizi che non ti servono e lasci abilitato l’accesso di management da dentro la VPN o solo a specifici IP non dovresti avere grossi problemi.

    Ciao
    Andrea

  3. Fabio Betti ha detto:

    Una guida utile. Grazie. Ammetto che ho modificato alcuni passaggi, quali la definizione del POOL utilizzando quello che ho già reservando pacchetti alla rete interna e parte alla VPN.

  4. Manuele ha detto:

    Ciao Andre,
    in primis complimenti e grazie.

    Inizio ora a prendere possesso di un MikroTik HeX PoE e vorrei capire qualcosa in merito a l’argomento da te postato.
    Posso chiederti qualche delucidazione e dettaglio in merito?
    Pensi sia più opportuno ti scriva una mail con alcune informazioni e quindi lo scopo che vorrei raggiungere?

    Grazie in anticipo e ancora complimenti per questo blog.

    Saluti.
    M.

  5. Andrea Sistarelli ha detto:

    Ciao Manuele,
    prova a scrivermi, compatibilmente con il tempo proverò a risponderti.

    Ciao
    Andrea

  6. Manuele ha detto:

    Eccomi Andrea,
    sono stato fuori per lavoro e, tra una festa comandata e l’altra, eccomi qui.

    Non so come rintracciare un tuo indirizzo e-mail per scriverti.
    Fammi sapere e ancora grazie.
    M.

  7. Alfio ha detto:

    Grazie per la guida, molto utile. Segnalo solo che ho dovuto aggiungere l’opzione “client-cert-not-required” al file .ovpn (OpenVPN Connect 3.1.0 sotto Windows).

  8. pierpaolo ha detto:

    Grazie per la guida, molto utile

    da client raggiungo la rete del server etc

    ma se volessi “uscire” con l’ip pubblico del server cosa dovrei modificare nella configurazione? grazie

  9. Luca ha detto:

    Ciao e grazie del tutorial.
    Io che non ho un IP pubblico statico (anzi sono addirittura sotto doppio NAT) dovrei inserire l’indirizzo assegnatomi dal mio DDNS (NO-IP) in questa riga sotto:

    remote

    Potrei usare anche il servizio di dns dinamico offerto gratuitamente da Mikrotik, abilitando e copiando l’indirizzo sopra?
    Grazie

  10. Andrea Sistarelli ha detto:

    Ciao Pierpaolo,

    per usare la VPN come gateway predefinito devi agigungere al file di configurazione questa riga:

    redirect-gateway def1

    Ciao
    Andrea

  11. Andrea Sistarelli ha detto:

    Ciao Luca,

    il server VPN può essere indicato sia con l’IP che con un nome DNS, quindi nella direttiva remote puoi indicare anche il nome del dns dinamico del Mikrotik.

    Ciao
    Andrea

  12. Luca ha detto:

    Grazie Andrea per la risposta.
    Ancora una cosa (spero). Cosa bisogna inserire qui in route, DOMAIN e DNS?
    In DNS l’ip del mio stesso router, visto che lo uso per indirizzare tutte le richieste DNS allo stesso Mikrotik? Grazie

    auth-user-pass auth.cfg
    route 192.168.0.0 255.255.255.0
    dhcp-option DOMAIN dominio.local
    dhcp-option DNS 192.168.0.20

  13. Andrea Sistarelli ha detto:

    Ciao Luca,

    il significato delle direttive è questo:
    route indica tutte le network che possono essere raggiunte tramite la VPN
    DOMAIN indica il nome del dominio Active Directory se presente in azienda
    DNS indica l’ip del/dei server DNS se presenti in azienda
    Le ultime due direttive in realtà sono facoltative.

    Ciao
    Andrea

  14. Alex ha detto:

    Ciao grazie per la guida ma se vorrei far uscire il client su internet tramite il server openvpn mikrotik e non tramite la sua connessione come potrei fare?

  15. Andrea Sistarelli ha detto:

    Ciao Alex,
    nel file di configurazione del client aggiungi la seguente riga:
    redirect-gateway def1

  16. gennaro ha detto:

    Ciao andrea intanto grazie mille per la guida , ti volevo chiedere se voglio limitare l’accesso a un client su un singolo ip/servizio come posso fare ho provato di tutto creando regole sul firewall ma senza riuscirci faccio un esempio
    client 1 una volta collegata il server dhcp ovpn gli assegna 10.10.10.2 e si dovrebbe collegare solo su ip 192.168.10.24 con porta 24000
    grazie mille

  17. Andrea Sistarelli ha detto:

    Ciao Gennaro,
    dovrebbe bastarti una regola del genere:

    /ip firewall filter
    add action=accept chain=forward dst-address=192.168.10.24 dst-port=24000 protocol=tcp src-address=10.10.10.2
    add action=drop chain=forward src-address=10.10.10.2

    Fai qualche prova.

    Ciao
    Andrea

  18. Roberto ha detto:

    Non creerei i certificati dal mikrotik, in quanto la ca non è esportabile e, in caso di guasto o di cambio del mikrotik che fa da server, è necessario ricreare tutti i certificati e ridistribuirli ai client.

  19. Andrea Sistarelli ha detto:

    Ciao Roberto,
    se esporti la CA in formato PKCS12 con password poi la puoi importare in un altro Mikrotik e usarla per generare altri certificati.

    Ciao
    Andrea

  20. Marco ha detto:

    Ciao e grazie per il tuo articolo.

    Sono arrivato alla fine della config ed al momento di connettermi ottengo questo errore:

    2020-11-28 18:47:10 us=176 VERIFY OK: depth=0,
    2020-11-28 18:47:10 us=104603 Connection reset, restarting [0]
    2020-11-28 18:47:10 us=104603 TCP/UDP: Closing socket
    2020-11-28 18:47:10 us=104603 SIGUSR1[soft,connection-reset] received, process restarting

    Hai qualche dritta da darmi?

    Ciao e grazie

  21. Andrea Sistarelli ha detto:

    Ciao,
    alza il livello di debug lato client aumentando il valore del parametro verb e lato Mikrotik creando il log specifico per la VPN.

    Ciao
    Andrea

  22. Stefano ha detto:

    Ottimo Articolo
    Usato per connettermi in VON con il mio iphone usando Mikroptik come ovpn server.
    Funziona perfettamente, compreso il redirect di tutto il traffico al gateway.

  23. alessio ha detto:

    Ciao non mi è chiaro. E’ possibile realizzare la VPN anche se la connessione non dipone di un ip pubblico ?? Semplicemente utilizzando l’indirizzo il “DDNS ” di Miktorik ?? Grazie

  24. Andrea Sistarelli ha detto:

    Ciao Alessio,
    si la connessione è possibile anche se non hai un IP pubblico configurato nel Mikrotik, ad esempio utilizzi un provider che ti rilascia un IP privato, in questo caso devi farti nattare la porta TCP 1194 verso l’IP del Mikrotik

    Ciao

  25. Giovanni ha detto:

    Ciao Andrea ho la necessità di far collegare in vpn alcuni router 4G (teltonika) e permettere il raggiungimento degli host collegati al router (lato client) dalla rete del server VPN (lato MikroTik). La gestione dei pool di indirizzamento è quindi più complessa. Ti scrivo il mio approccio e se possibile mi dai qualche dritta. Es:
    Teltonika1 installo certifcato client e configurazione per accedere al MikroTik. Configuro indirizzo IP lato lan 192.168.10.1 dentro una sottorete predeterminata (192.168.10.0/28) assegno agli altri host indirizzi della stessa sottorete. Poi ripeto l’operazione per tutti gli altri router 4G, impostando gli altri indirizzi con le altre subnet 192.168.10.16/28 , 192.168.10.32/28 etc etc.
    Adesso devo capire come configurare il MikroTik lato server e come dichiarare le varie sottoreti remote da raggiungere in vpn.
    Premetto di aver già fatto questo lavoro su OpenVPN server in Ubuntu qualche anno fa, ma sesso devo sostituire la macchina con un router MikroTik.

  26. Maurizio ha detto:

    Ho seguito tutti i passi, ma usando OPENVPN client resta al messaggio “Attempting to establish TCP Connection”
    Con un altro server VPN che usa sempre la porta 1194 dietro un router non ho alcun problema.
    Un’idea dell’errore che ho potuto commettere?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.