Ciao Ragazzi sono tornato e oggi vi parlo di come creare un server Openvpn su Mikrotik.
Un po’ di nozioni teoriche che non guastano mai, per prima cosa OpenVPN come IPSEC o PPTP o L2TP è uno standard per la creazioni di connessioni VPN (Virtual Private Network) per fare in modo che due reti LAN geograficamente distanti tra loro possano essere viste come una unica rete instaurando un tunnell cifrato.
Ad oggi gli standard PPTP e L2TP per quanto ancora utilizzati sono in dismissione perchè considerati (ed è vero!) poco sicuri. Tutti questi standard possono essere implementati su device Mikrotik
Per prima cosa è necessario munirsi di certificati digitali, che potete o acquistare se vi interessano servizi Trusted di terze parti (es. Geotrust, Symantec etc.) oppure generare da soli (self-signed) nel caso la vostra OpenVPN serva per uso “casalingo”!
Bene, siamo pronti per iniziare.
Creazione Certificati Self-Signed
Per prima cosa creiamo i certificati che ci servono, installando la suite OpenSSL (disponibile per tutti i sistemi operativi) creiamo per prima cosa la certification authority (CA) keyfile:
openssl genrsa -des3 -out ca.key 4096
Creiamo il file .crt:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
In questa parte vi chiederà di inserire diverse informazioni quali Country, State, Province e così via. Queste non sono informazioni importanti per il nostro certificato, quello che è davvero importante è il Common Name (CN) dove dovete inserire o il dominio al quale punta la vostra Mikrotik (es. miamikrotik.miosito.it) oppure l’indirizzo IP pubblico della vostra Mikrotik. Queste informazioni sono fondamentali per il funzionamento del sistema di certificazione.
Una volta che abbiamo il file ca.crt e il file ca.key possiamo procedere con la copia dei files tramite Winbox, FTP etc. sulla Mikrotik.
IMMAGINE
Procediamo con l’import del certificato e della chiave sulla Routerboard:
[mikrotik@testssl] /certificate> import file-name=ca.crt
passphrase:
certificates-imported: 1
private-keys-imported: 0
files-imported: 1
decryption-failures: 0
keys-with-no-certificate: 0
[mikrotik@testssl] /certificate> import file-name=ca.key
passphrase:
certificates-imported: 0
private-keys-imported: 1
files-imported: 1
decryption-failures: 0
keys-with-no-certificate: 0
Adesso andando da Winbox su System -> Certificates se accanto il nostro ca.crt ci sono le lettere KT oppure KR l’importazione è avvenuta con successo e quindi possiamo proseguire, altrimenti controllate i certificati che siano corretti come in figura:
Verificato questo possiamo procedere con la configurazione vera e propria.
Creazione Pool Indirizzi
Per prima cosa creiamo un nuovo pool di indirizzi IP, andando su IP -> Pool clicchiamo su + e impostiamo come in figura:
Applicate le modifiche andiamo a definire il profilo openvpn su PPP->Profiles come segue:
Ovviamentese utiizzate ip diversi ricordatevi di cambiare tutto altrimenti non funziona nulla!
Fatto questo possiamo abilitare il server OVPN, sempre da PPP-> OVPN Server e configuriamo come in figura:
Attenzione, se spuntate Require Client Certificate dovrete generare un certificato anche per ogni client vpn che create, è una procedura più lunga, ma garantisce maggiore sicurezza di una semplice autenticazione basata su username e password.
Ci siamo quasi, manca solo aggiungere gli utenti che volete ed abbiamo finito!
Andiamo su PPP->Secrets e aggiungiamo il nuovo utente:
Abbiamo finito!
Il server Openvpn è pronto, possiamo provarlo con un client!
Di seguito vi allego per completezza un esempio di file di configurazione del client OpenVPN, nel mio caso è per linux ma si trovano tantissimi esempi in giro per la rete anche di file per sistemi operativi diversi.
remote firewall.example.com 1194 tcp-client
persist-key
auth-user-pass
tls-client
pull
ca /home/testvpn/.cert/ca.crt
redirect-gateway def1
dev tun
persist-tun
nobind
Enjoy!
Ciao Paolo, mi chiedevo cosa ne pensi di creare il certificato direttamente dal mikrotik.
Ora lo testo…anche perché la l2tp-ipsec mi funziona a random
Ciao Stefano,
da mikrotik puoi creare direttamente i self signed, ma sinceramente sono affezionato a OpenSSL!
Per la l2tp-ipsec vedi se ti può essere utile la mia guida, in caso ne parliamo!
Ciao, una cosa non mi è chiara: come mai si imposta un pool con range da 10 a 20 e poi al client si da indirizzo local: 5 remote: 6?
Ciao Paolo,
in realtà tu puoi usare sia il pool che gli ip definiti da te. Nell’esempio ho fatto un mix definendo sia il pool che l’ip1 statico! A presto,
P.
Capito, quindi se nella configurazione del secrets non inserisco nessun ip si prende l’ip dal pool.
Altra domanda: con lo smartphone android e la connessione wifi si connette alla vpn se invece uso il 4g va in timeout (ho provato un paio di clients ma succede sempre la stessa cosa)
mmm, come client ti consiglio di usare sempre OpenVPN Connect per android che è perfetto, ma è strano che ti va in timeout. Potrebbe essere la porta utilizzata che non gli piace? Oppure prova a cambiare il protocollo da tcp a udp.(ricordati di cambiare il file di config del client). Ricorda che nel file di config android deve essere incluso il CA e in alcuni casi anche la KEY. Fammi sapere in caso che ti mando una config tipo.
Ho provato con il protocollo UDP ma non cambia niente.
Intanto provo con un pc di casa…
No, non riesco a connettermi da fuori. Se collego il cell alla rete interna la vpn si connette se invece uso i dati del telefono o la rete wifi di casa, non si connette.
PS: che glorioso cognome che porti! 😉
Ti ho mandato una mail. Fammi sapere 😉
Ciao Paolo,
ho seguito la tua guida e riesco a connettermi da windows al router.
Il problema che riscontro è che non riesco a sfogliare la rete, la vpn è instaurata correttamente.
Hai idea di cosa potrebbe essere???
Grazie in anticipo e complimenti per tutte le guide che redigi.
Stefano
P.S.
Di seguito il mio file di configurazione:
client
dev tun
proto tcp
remote xxxxxx.no-ip.info 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-CBC
ca ca.crt
verb 3
pull
auth-user-pass
Ciao Stefano,
ma i vari ip della tua rete li raggiungi? Nel senso se fai un ping risponde?
Perchè in genere le cerchi di accedere ad una share con un nome NetBios via VPN non ci riuscirai, ma se ci accedi con indirizzo IP ti fa accedere?
Perchè potrebbe essere che il router non stia ruotando correttamente la subnet!
Ciao Paolo,
scusa il ritardo della risposta!
no purtroppo non pingo niente nemmeno ip….
probabilmente è un problema di route!
Buona giornata Paolo, ho seguito la guida, tutto ok se mi connetto da client openVPN windows, se utilizzo quello per android ho il seguente errore:
EVENT: CORE_THREAD_ERROR info=’mbed TLS: error parsing config private key : PKCS5 – Requested encryption or digest alg not available’
il file .ovpn
client
dev tun
proto tcp-client
remote XXX.XXX.XXX.XXX
port 1194
nobind
persist-key
persist-tun
tls-client
remote-cert-tls server
ca CA.crt
cert client1.crt
key client1.key
verb 4
mute 10
cipher AES-256-CBC
auth SHA1
auth-user-pass auth.cfg
auth-nocache
redirect-gateway def1
Ringrazio per l’aiuto
Ciao,
ti rispondo come ti ho scritto nella mail che magari è utile a qualcuno. Il file allegato è un template per Linux, basta trovarne altri che vanno bene per Android e vedi che funzionerà tutto.
Salve Paolo , Ho un 951Ui-2nD vorrei usarlo come client OPENVPN.
Hai per caso in programma di farne una ?
Sarebbe molto interessante riuscire ad usarlo come client.
Volevo chiederti se tecnicamente è fattibile riuscire ad utilizzare diversi client vpn da assegnare rispettivamente ad ogni porta lan della routerboard.
e se lo stesso è fattibile con il wifi.
Esempio assegno alla lan2 che tutto il traffico su quella porta vada in PROVIDER OPENVPN1
e avedno un modem lte configurato sulla porta usb il traffico del modem lte vada n PROVIDER OPENVPN2 LTE.
Ache se in un primo momento ho capito che sono configurazioni davvero ostiche e non da newbie.
A presto
Ciao,
non ne ho fatte semplicemente perchè usare la mikrotik come client openvpn non è conveniente.
Ci sono diverse problematiche e un peggioramento delle prestazioni esagerato.
Anche il file di config è particolare, per cui ho sempre preferito usarla come client per altri tipi (IPSec, L2TP etc.)
Usare n client è fattibile purchè tu abbia n sottoreti diverse e la mikrotik sia il default gw di ogni subnet, ma ti stai buttando su una strada che è un groviglio di rovi appuntiti, io non lo farei!
Salve, ho trovato molto interessante la sua guida. Attualmente ha descritto come autenticarsi lato client con user e password, io invece ho creato i certficati per il client. Potrebbe indicare cosa configurare lato client per l’auth con certificati?grazie
Salve Francesco,
sinceramente non ho mai usato mikrotik per autenticare cert VPN. Tieni conto che il client sulla mikrotik è in versione molto basilare, per cui per fare qualcosa di più avanzato ti consiglio un server VPN “vero”.
Ciao, ho una domanda probabilmente banale.
Posso usare il mikrotik come server openvpn, anche se questo non è default gw della rete?
Il tutto nasce dal fatto che la mia vodafone station è una ciofeca nella gestione vpn.. funziona qualche giorno ma poi ad un certo punto si incastra e non instaura più la connessione fino al riavvio.
Allora ho pensato di mettere il mikrotik sulla rete della station con il solo scopo di fare openvpn server. Ho configurato openvpn e la connessione funziona. Raggiungo il mikrotik sull’Ip della rete con vodafone station ma non vado oltre. Poiché i client siano raggiungibili da vpn devono impostare il mikrotik come gw. E qui temo non ci siano alternative, ma è questo che vorrei evitare di fare.
La mia idea sarebbe quella di usare il mikrotik senza stravolgere la rete attualmente presente, spero di essermi spiegato.
Grazie ed in bocca al lupo per il blog
Ciao!
Perdona il ritardo!
Si la puoi usare lo stesso basta che natti la porta che scegli per la OpenVPN dal router Vodafone alla mikrotik!
P.
io riesco a fare un connesone mikrtoik to mikrotik
se pingo dal tool mikrotik sulla interfaccia open vpn funziona
ma da tutto no! cosa sbaglio?
Ciao,
ti manca il routing della vpn o qualche accept lato firewall.
P.