Configurer un VPN sur UDM-Pro et y accéder depuis un Mac distant
Sur Internet, l'utilisation d'un VPN est vantée pour masqué son identité. Dans les faits, toutes vos connexions internet passeront par le serveur VPN qui fera les requêtes à votre place et vous renverra les réponses.
Dans ce cas, il s'agit d'un VPN public. Il est aussi possible de créer un VPN privé, dont l'utilisation vous sera réservée, ainsi qu'aux personnes à qui vous donnerez un accès.
Cette solution ne permet plus de masquer son identité puisque votre VPN est fixe et souvent basé sur votre propre connexion internet, cependant elle propose bien d'autres avantages.
Elle permet toujours de rediriger l'ensemble du traffic vers le VPN. Ainsi, si vous configurez un VPN sur votre box, et que vous êtes en voyage à l'étranger, cela vous permettra de continuer à voir les contenus Netflix, Prime ou autre, depuis votre pays d'origine. Au demeurant, cela permet aussi de passer outre la détection, tant décriée, des multicomptes de Netflix, mais cela est une autre histoire.
En accédant à votre VPN, vous pourrez aussi accéder aux autres devices de votre réseau comme si vous étiez connecté directement à ce réseau. Vous pourrez donc vous connecter aux disques NAS et autres serveurs de votre réseau tout aussi facilement que s'ils étaient dans la pièce, à côté de vous.
A titre professionel, et notamment depuis 2020, les sociétés misent de plus en plus sur l'utilisation des VPNs pour que leurs employés puissent faire du télétravail en toute sécurité pour les données qui transitent à travers internet.
Cet article a pour but de vous montrer comment faire pour créer un serveur VPN sur une UDM-Pro d'Ubiquiti, puis comment s'y connecter depuis un Mac.
1/ Pré-requis
Afin que l'ensemble fonctionne sans accroc, il y a quelques pré-requis à savoir ou à vérifier avant de commencer la configuration d'un VPN.
Dans notre cas, nous allons configurer le serveur VPN sur un routeur UDM-Pro d'Ubiquiti, dont vous vous aviez déjà parlé. Nous aurions pu l'installer sur la box internet, car la plupart des box vous proposent désormais de configurer un serveur VPN. Mais comme la connexion internet est configurée avec un double routage box puis UDM-Pro, la connexion VPN n'aurait pas permis d'aller plus loin que la box, sans possibilité de rejoindre le réseau local placé sous l'UDM.
Mais de l'autre côté, pour que le VPN soit accessible à travers le routage de la box, il est nécessaire de diriger, sur cette dernière, les connexions des ports UDP 500 et 4500, utilisées par le protocole L2TP/IPsec vers l'UDM.
Enfin, la configuration des sous-réseaux peut poser problème. L'UDM se trouve dans son sous-réseau, en créant un VPN, il va activer un second sous-réseau. Elle va aussi ajouter les routes pour aller de l'un à l'autre. Le Mac, lui, sera dans son propre réseau local, connecté à internet par un routeur. Et bien, il est fortement préférable, voir nécessaire, que ce réseau soit configuré différemment des réseaux présents sur le l'UDM. Par exemple, dans le cas de ce tutorial, le réseau de base de l'UDM est 192.168.1.x, le VPN en 192.168.2.x. Si le réseau local du Mac est aussi en 192.168.1.x ou en 192.168.2.x, vous pouvez avoir des soucis en essayant de joindre les machines d'un côté où l'autre depuis votre Mac. Mais pas de soucis, ayant pris les devants, le réseau local du Mac est en 192.168.11.x.
2/ Configuration du VPN sur UDM-Pro
La configuration du VPN sur l'UDM-Pro n'a rien de compliquer. Il faut commencer par se connecter à l'UDM via l'interface web de configuration, puis d'aller dans l'application Networks. Dans la section Settings, il faut sélectionner Teleport & VPN. Puis dans la sous-section VPN Server, continuer sur Create VPN Server.
Choisissez L2TP, pour une compatibilité maximum avec le Mac, puis définissez un nom qui vous parlera. L'UDM-Pro va générer une clé de sécurité, mais vous avez la possibilité d'en changer. Il sera nécessaire
N'oubliez pas de créer un utilisateur, il va être automatiquement ajouté au serveur RADIUS de l'UDM-Pro.
Dans l'idéal, il est préférable de créer un compte par utilisateur, mais créer un unique compte pour tous les utilisateurs reste possible, sachant qu'ensuite, vous devriez avoir un accès par compte sur chacune des machines du réseau. Cependant, si la clé et le compte venait à être compromis, il faut révoquer le compte pour tous les utilisateurs.
Si vous devez utiliser des noms de domaine définis à l'intérieur du réseau local de l'UDM, et que le serveur DNS n'est pas l'UDM Pro, n'oubliez d'activer le mode Avancé pour indiquer le serveur DNS dans les Serveurs de noms.
Une fois validé, le serveur VPN apparait dans la liste.
3/ Configuration sur Mac
Maintenant que l'UDM est prête, passons au Mac. Direction les Préférences système, et la section Réseau.
Il suffit d'ajouter un nouveau réseau, en sélectionnant VPN, puis L2TP via IPSec, puis le nom de votre choix. Il n'est pas nécessaire de remettre le nom exact du réseau VPN sur l'UDM.
Une fois le réseau VPN créé, il faut le configurer. Nous commençons par le panneau principal. Si c'est votre première connexion cliente VPN par le Mac, la valeur de Configuration reste Par défaut. Pour l'Adresse du serveur, il faut indiquer une adresse URL ou IP qui permet de joindre le serveur VPN. Et pour le Nom du compte, c'est bien celui que vous avez créé sur l'UDM.
Enfin, pensez à cocher Afficher l'état VPN dans la barre des menus, pour pouvoir connecter le VPN sans avoir à revenir dans les Préférences système.
Passons au second panneau de configuration, en cliquant sur le bouton Réglages d'authentification....
Dans Authentification de l'utilisateur, on sélectionne Mot de passe et l'on indique le mot de passe du compte créé sur l'UDM. Ensuite, dans Authentification de la machine, on indique le Secret partagé qui est la clé générée par l'UDM-Pro.
A ce stade, vous pouvez d'ores et déjà vérifier que la connexion au VPN fonctionne. Pour cela, il suffit de cliquer sur Se connecter, et attendre un éventuel message d'erreur. Dans le cas contraire, vous serez connecté, et l'interface vous indiquera le temps de connexion, ainsi que les accès réseaux montants et descendants.
Une fois la connexion validée, nous passons au dernier élément de configuration avec le troisième et dernier panneau, caché derrière le bouton Avancé.... Dans l'onglet Options, les deux premières options sont cochées par défaut. Mais c'est la troisième qui nous intéresse, afin que vos requêtes passent intégralement par le VPN, qu'il s'agisse des visites de vos sites internet préférés, mais aussi, et surtout, les requêtes vers les services présents dans le réseau protégé de l'UDM.
Vous pouvez vous reconnecter, et vérifier que tout fonctionne bien.
4/ Configuration avancée sur Mac
Maintenant que nous sommes fixés sur le bon fonctionnement de l'accès VPN, nous pouvons aller un peu plus loin. Cette coche Envoyer tout le traffic sur la connexion VPN peut être contraignante. En effet, on peut, par exemple, souhaiter se connecter aux services présents dans le réseau VPN, sans pour autant faire passer tout le traffic internet par le VPN.
Pourquoi est on obligé de cocher cette case, y compris lorsque l'on souhaite accéder aux données du réseau local routé par l'UDM ? La raison est assez basique, en particulier lorsque l'on a quelques connaissances de fonctionnement des réseaux informatiques.
Lorsque l'on coche la case magique, le Mac modifie le chemin de sortie afin que toutes les requêtes passent par le VPN. Sans, il est tout simplement perdu. Il sait comment accéder aux services qui sont dans le même réseau VPN (192.168.2.x) via sa route ajoutée à la connexion du VPN, mais pour le Mac, aller vers 192.168.1.x se fait par ses propres routes et donc ne connait pas le chemin qui passe par le VPN avant d'arriver dans le réseau principal. Il manque donc, tout simplement, une route qui permet d'indiquer au Mac le chemin réseau à suivre pour accéder au bon endroit.
Si vous êtes curieux, vous pouvez vérifier les routes et comparer, sans VPN, avec VPN et avec VPN sans la coche. Pour cela ouvrez un terminal et tapez
netstat -rn
S'il ne s'agit qu'une histoire de route, ne peut on rien faire pour corriger cela ? Bien sur oui, mais pour cela, il faut savoir laquelle ajouter. Une fois connecté au VPN, en tapant
ifconfig
on en apprend un peu plus sur les interfaces réseaux du Mac
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
UHC90: flags=0<> mtu 0
UHC61: flags=0<> mtu 0
UHC29: flags=0<> mtu 0
UHC93: flags=0<> mtu 0
UHC26: flags=0<> mtu 0
XHC0: flags=0<> mtu 0
EHC253: flags=0<> mtu 0
UHC58: flags=0<> mtu 0
EHC250: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
ether 00:25:00:ee:2e:98
inet6 fe80::424:5f9d:dee0:4e12%en0 prefixlen 64 secured scopeid 0xd
inet 192.168.11.3 netmask 0xffffff00 broadcast 192.168.11.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (1000baseT <full-duplex,flow-control>)
status: active
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
ether 00:25:00:ed:fc:a9
nd6 options=201<PERFORMNUD,DAD>
media: autoselect ()
status: inactive
fw0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 4078
lladdr 00:23:df:ff:fe:dd:67:2a
media: autoselect
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::90f5:d16d:7ac3:3324%utun0 prefixlen 64 scopeid 0x10
nd6 options=201<PERFORMNUD,DAD>
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
inet6 fe80::225:ff:feee:2e98%ppp0 prefixlen 64 scopeid 0x16
inet 192.168.2.6 --> 10.255.255.0 netmask 0xffffff00
nd6 options=201<PERFORMNUD,DAD>
Que peut on lire ? Si vous n'êtes pas familier avec la commande, voici un peu de détails. Parmi les interfaces présentes et en fonctionnement, nous avons :
- lo0 il s'agit de l'interface localhost, elle est toujours active, et automatiquement défini au démarrage du Mac.
- en0 correspond à l'interface réseau principale du Mac, et nous pouvons voir qu'elle est bien active et elle dispose d'une adresse IP.
- en1 correspond au second port réseau du Mac Pro, elle est inactive.
- utun0 apparait après la création de l'interface VPN, qu'il soit connecté ou pas.
- ppp0 est l'interface du VPN, à proprement parler. Elle disparait une fois le VPN déconnecté.
C'est cette dernière qui nous intéresse, et maintenant que nous la connaissons, nous pouvons ajouter la route qui manque, celle qui indique que le réseau 192.168.1.x est accessible via le VPN, toujours avec un terminal :
sudo /sbin/route add -net 192.168.1.0/24 -interface ppp0
Votre compte doit être administrateur pour ajouter cette route, et le mot de passe de votre compte sera demandé. Si tout est bon, voici le résultat que vous obtenez :
add net 192.168.1.0: gateway ppp0
Vous pouvez vérifier la présence de la nouvelle route, en relançant la commande
netstat -rn
Désormais vous pouvez vous connecter aux serveurs et services présents dans le réseau 192.168.1.x depuis votre Mac, et pour le reste du traffic, il passe désormais par votre connexion internet sans forcément passer par le VPN.
Le gros bémol de cette solution est qu'il est nécessaire de recréer la route à chaque connexion au VPN. Cependant, elle permet de soulager la connexion internet de l'UDM en évitant de lui envoyer tout votre traffic internet.
5/ Bonus : Problème de déconnexion/re-connexion, sur le Mac
Avec le temps, nous avons expérimenté quelques soucis avec le VPN fourni par l'UDM-Pro d'Ubiquity. En particulier, des déconnexions sauvages du serveur sont survenues régulièrement. Lors de la tentative de re-connexion, celle-ci se fait sans retourner d'erreur, mais très rapidement, au bout d'une à 2 minutes, elle saute à nouveau.
Malheureusement, le problème ne vient pas du Mac, et la fiabilité de l'UDM est une nouvelle fois mise à rude épreuve. Seul un redémarrage de l'UDM permet de retrouver l'accès au VPN. Evidemment, si l'on se connecte via un VPN, c'est que l'on est pas sur place.
J'ai donc trouvé une alternative, qui permet, en plus, de ne pas déconnecter d'internet et des serveurs connectés à l'UDM-Pro, les utilisateurs présents dans le réseau local. La solution est de redémarrer les services concernés par le VPN, en se connectant en SSH sur l'UDM :
sudo ipsec restart
sudo service xl2tpd restart
Le retour de la seconde commande n'est pas forcément celui attendu, mais le résultat est là. Le VPN est de nouveau actif, et accessible depuis le Mac.
Pour limiter le phénomène, nous avons pris l'habitude de déconnecter le VPN du Mac dès que possible.