Mikrotik : Configurer un serveur VPN L2TP/IpSec

MAJ du 20/01/2024 > Android ne permettant plus de faire du L2TP, je suis passé en OpenVPN. Cliquez ici pour voir le nouveau tuto.

Dans le cadre de mon utilisation personnelle, j’utilise un routeur Mikrotik. Il y a quelques années, j’ai mis en place un serveur VPN L2TP/Ipsec sur celui ci et cela me permets de me connecter à mon réseau quand je suis en déplacement, que ce soit via mon téléphone, ma tablette, mon PC, etc.
Et puis, récemment, il a fallu que je refasses ce type d’installation pour un voisin. L’occasion de faire ce petit mémo.

Pré-requis :

  • Un Mikrotik déjà configuré au niveau des services réseaux (dhcp, dns, route, firewall, bridge, etc).
  • Une connexion Internet fonctionnel. Dans ce mémo, il s’agira d’une Livebox ayant une IP publique dynamique (WAN). La Livebox a une IP locale (LAN) : 192.168.1.1
  • Sur le Mikrotik, l’interface « ETH1 » est reliée à la Livebox avec pour IP 192.168.1.11
  • Et l’interface « ETH5 » est relié au switch (LAN) avec pour IP 192.168.2.2

Configuration du serveur VPN :

On commence par créer un POOL d’adresses qui seront attribuées lors des connexions en VPN.
Dans IP/Pool, on créé « pool_VPN » avec un range d’IP : 192.168.2.180-192.168.2.199 soit 19 IPs dédiées aux connexions VPN.

On active le serveur L2TP en allant dans PPP/Interfaces et on clique sur la case « L2TP Server ».
Dans la nouvelle fenêtre, on coche « enabled », on coche mschap2 et mschap1 et on met « yes » dans « Use IPsec ».
On saisit ensuite un mot de passe dans « IPsec Secret ». Ce mot de passe sera commun à tous les utilisateurs/clients VPN. Pour cet exemple, j’ai mis « icionmetunmotdepassecommun » :

On va ensuite créer des profils VPN en allant dans PPP/Profils et on clique sur « + » :

On donne un nom à ce profil en remplissant « Name ».
On saisit l’adresse IP du Mikrotik (côté LAN) dans « Local Address » : 192.168.2.2
On sélectionne notre pool d’IP précédemment sélectionne dans « Remote Address » : « pool_VPN »

Une fois réalisé, on passe à la création des comptes VPN en allant dans PPP/Secrets et on clique sur « + »

On donne un nom au compte dans « Name » : il s’agira de l’identifiant.
On saisit un mot de passe associé à ce compte dans « Password »
On filtre le « Service » en mettant que celui qui nous concerne : « l2tp »
On sélectionne le profil précédemment créé dans « Profile »

On refera cette manipulation autant de fois qu’il y a d’utilisateur à connecter en VPN.

Configuration du firewall :

On passe maintenant à la configuration du firewall du Mikrotik, pour qu’il laisse passer les ports nécessaires au VPN L2TP/Ipsec.
Dans IP/Firewall/Filter Rules, on va créer une règle avec le « + »

On créé la règle pour accepter les ports 500, 1701, 4500.
Dans l’onglet General :
– Chain : input
– Protocol : 17 (udp)
– Dest. Port : 500, 1701,4500
Dans l’onglet Action :
– Accept

En suivant la doc Mikrotik, il est indiqué qu’il faut aussi faire une règle pour accepter le trafic sur le protocole « 50 (ipsec-esp) » … mais je n’ai jamais vu d’activités dessus depuis sa mise en place (donc est-ce vraiment nécessaire?)

Voilà, c’est fait ! le serveur VPN L2TP/Ipsec est maintenant opérationnel sur notre Mikrotik.

Quelques trucs et astuces :

Dans votre configuration de Bridge, il faut que l’ARP soit positionnée en « proxy-arp » :

DMZ vers Mikrotik

Il faut évidemment que votre Box Internet soit configurée pour rediriger tout le trafic entrant vers le Mikrotik : il faut mettre en place la DMZ. Dans mon exemple, la Livebox redirige bien vers l’IP « wan » du Mikrotik :

DDNS made in Mikrotik

Notre Livebox ayant une IP publique dynamique, j’active une sorte de DynDNS made in Mikrotik (gratuit!). Dans IP/Cloud, on coche juste « DDNS Enabled », le routeur va ainsi récupérer son IP publique et vous créer une URL personnalisée sous la forme xxxxxxxx.sn.mynetname.net
C’est cette adresse qu’il faudra configurer dans le client VPN.

Par exemple, j’ai constaté qu’il fallait forcer la mise à jour de cette adresse dans le cloud Mikrotik, il faut donc faire un simple petit script en allant dans System/Scripts/Scripts et cliquer sur le « + » :

et créer un script avec simplement « /ip cloud force-update »

Ensuite on créé une planification pour le lancement à intervalle régulier de ce script. Dans System/Scheduler, on clique le « + » et on planifie (ce n’est pas l’objet de ce mémo donc je ne m’étends pas plus… la capture d’écran parle d’elle même).

Connexions de plusieurs clients VPN avec la même IP publique

Le cas est assez rare mais parfois deux utilisateurs veulent se connecter simultanément à leur VPN respectif alors qu’ils ont la même adresse IP publique. Par exemple : deux télé travailleurs qui se connectent au même serveur VPN depuis le même domicile.
Avec le VPN L2TP/ipsec, cela n’est pas possible nativement, car une partie de l’identification des utilisateurs se fait par leur IP publique. Comme ils ont la même, celui qui se connecte en 2ième éjecte le 1ier du VPN. Et ainsi de suite.
J’ai pu expérimenter le cas (même si ce n’était que pour « test »).
Si vous souhaitez quand même contourner ce problème (et vous arrachez un peu les cheveux), vous pouvez consulter cette article (attention, nécessite de bonne connaissance) : https://forum.mikrotik.com/viewtopic.php?f=2&t=132823


Vous pouvez également lire le mémo suivant : comment configurer le client VPN Windows pour L2TP/Ipsec en cliquant ici.

Si vous souhaitez partager cet article...Share on facebook
Facebook
Share on google
Google
Share on twitter
Twitter