[TUTO Synology] VPN Server

02.png

Préambule

Le but de ce tutoriel est de vous aider à mettre en place un réseau privé virtuel (VPN) entre vous et votre NAS depuis Internet.

Si vous ne savez pas ce qu’est un VPN, vous devriez vraiment vous renseigner avant de lire la suite.

Mais comme peu de personnes feront cette démarche, en voici une description très approximative :

  • c’est un ensemble de techniques permettant de relier 2 équipements réseau, par exemple votre PC et votre NAS
  • généralement, il fonctionne au dessus du protocole IP et peut donc passer par Internet
  • le tout saupoudré de diverses techniques de chiffrement (plus ou moins efficace)

=>on peut donc voir ça comme un très grand câble réseau avec des barbelés autour

À quoi cela peut-il servir ?

Quelques exemples :

  • Accéder de manière sécurisée à votre NAS et/ou à d’autres équipements de votre réseau local depuis Internet
    • par exemple aux services d’administration du nas (DSM, ssh, …)
    • aux caméras IP
    • à l’alarme de la maison
    • connecter 2 nas distants entre eux
  • Accéder à Internet en passant par votre connexion Internet lorsque que vous êtes en déplacement
    • pour profiter de l’antipub que vous avez installé à la maison (par exemple avec le proxy du nas)
    • pour surfer de manière plus « privée », ce qui est très utile dans certains pays où la notion de vie privée est pire qu’en France (ça existe, croyez moi) ou en cas d’utilisation d’un réseau « inconnu » (les HotSpot WIFI sont souvent plein d’indiscrets)
    • à passer outre certaines restrictions en entreprise (il ne s’agit pas de faire n’importe quoi non plus, respectez les règlements intérieurs)

À lire avant d’aller plus loin

  • Le fait de passer par un VPN n’est pas un gage de sécurité en soit.
  • L’utilisation d’une connexion VPN en entreprise peut mener lieu à des sanctions disciplinaires
  • L’utilisation d’une connexion VPN peut être passible de prison (voir pire) dans certains pays
  • Si la sécurité générale de votre NAS est mauvaise, ne faites pas de VPN, ça ne fera qu’augmenter les risques (vous trouverez un tuto ici)

Le VPN par Synology

Ce guide est valable pour les versions DSM5.0 à DSM 6.0, mais en fonction des mise à jour de Synology, certaines options peuvent évoluer.

Synology fourni un paquet qui installe tout le nécessaire pour créer son serveur VPN à la maison : VPN Server

Il existe de nombreux types de tunnel, plus ou moins simples à mettre en place et plus ou moins sécurisés. Le paquet VPN Server en propose 3 (en pratique il y en a 4, on le verra plus tard) :

  • PPTP : créé par Microsoft, ce protocole souffre de nombreux problèmes de sécurité et ne devrait plus être utilisé
    • authentification client : login + mot de passe
    • avantages : simple à configurer et disponible sur la plupart des clients mais il tend à disparaitre (il n’est plus disponible sur iOS 10 par exemple)
    • inconvénients : chiffrement très faible et facile à attaquer
  • OpenVPN : c’est un tunnel SSL, libre, très souple et sécurisé
    • authentification client : certificat + login + mot de passe
    • avantages : chiffrement fort et possibilité de choisir le port et le protocole
    • inconvénient : rarement supporté par défaut, mais il existe des clients pour tous les systèmes
  • L2TP/IPSec : il s’agit de 2 protocoles normalisés, imbriqués l’un dans l’autre, c’est le standard
    • authentification : secret partagé + login + mot de passe
    • avantages : c’est un standard bien sécurisé supporté par tous les clients ou presque
    • inconvénients : plus complexe à comprendre donc souvent mal configuré

Il est généralement plus simple de se limiter au L2TP/IPSec car il est en standard sur tous les clients (Android, iOS, Linux, MacOS, Windows, …) et souvent autorisé dans les pare-feu.

nb : les descriptions précédentes correspondent à la manière dont Synology a implémenté les protocoles, pas à ce qu’ils savent faire (on peut allez beaucoup plus loin avec OpenVPN et L2TP/IPSec, comme utiliser des certificats clients, de l’OTP, …)


Prérequis

La première chose à faire avant de rendre tout ou partie de votre NAS accessible depuis Internet (indépendamment du VPN), c’est la sécurisation de votre NAS. Il existe de nombreux posts sur ce sujet et même un tuto, mais le minimum devrait être :

  • Protection DOS, blocage auto et pare-feu correctement configurés et activés (un exemple est présent plus bas pour le pare-feu)
  • Aucun compte avec un mot de passe faible sur le NAS : minimum 10 caractères avec MAJUSCULES, minuscules, chiffres et si possible des caractères spéciaux
  • « Configuration du routeur » désactivée, il ne faut surtout pas utiliser cette fonctionnalité des Synology, c’est une faille de sécurité
  • Configuration de la box correcte (pas de DMZ ni d’UPnP autorisé)

Ensuite vous devez savoir comment transférer des ports de votre routeur vers votre NAS (on dit couramment : forwarder des ports).

Enfin il vous faut quelques notions réseau de base (adresse IP, adresse réseau, port, route, NAT et DNS), elles ne sont pas toutes nécessaires pour configurer le serveur VPN, mais indispensable pour bien comprendre ce qu’on fait et comment ça fonctionne (je suis certain que beaucoup vont sauter ce point, pensant bien connaitre ces notions, 9/10 se trompent).


Installation du paquet VPN Server

Dans le Centre des paquets, on cherche le paquet VPN Server et on l’installe.

01.png=>02.png

À la fin de l’installation, vous aurez probablement une « Notification du pare-feu ».

De manière générale, il vaut mieux ne pas utiliser ce système de notification et créer les règles manuellement, mais si vous préférez utiliser ce système, décochez le port 1723 (PPTP) comme ci-dessous :

06.png

Que vous utilisiez ou non cet assistant, allez dans la configuration du pare-feu et affinez les règles.

Un point important qui risque d’empêcher le VPN de fonctionner correctement chez certains utilisateurs : il faut autoriser la connexion VPN et le trafic VPN.

  • Si vous n’autorisez que les ports du VPN mais pas le trafic réseau qui va passer dans le tunnel, ça ne fonctionnera pas. Votre client et le nas diront – « Connecté » – mais vous n’aurez accès à rien.
  • Gardez en tête que se connecter à un VPN c’est comme brancher un câble réseau (le VPN c’est le câble), si vous n’autorisez pas le trafic dans le câble, ça ne sert pas à grand chose.

Voici un exemple de configuration du pare-feu Synology, il devrait fonctionner chez presque tout le monde (au moins en France) :

07.png

  • tous les réseaux privés (donc qui ne peuvent pas venir d’Internet) sont autorisés :
    • même si vous changez d’opérateur, les règles resteront valables
    • ça permet aussi d’autoriser le trafic du tunnel VPN (par défaut il s’agit de réseaux en 10.x.0.x)
  • les ports des protocoles VPN dont on a besoin sont autorisés :
    • si vous n’utiliser pas OpenVPN, inutile d’ouvrir le port udp 1194 (idem pour L2TP/IPsec)
    • on limite l’accès aux pays dont on a besoin (pas la peine de laisser toute la planète tenter de se connecter à votre nas)

Notez bien qu’ici il s’agit des règles de la section « Toutes les interfaces », si vous utilisez des règles par interface il faudra adapter.


Configuration globale

Au lancement de VPN Server, cet écran apparait :

03.png

Comme pour la plupart des applications Synology, l’écran est divisé en 2 avec la liste des rubriques à gauche.

On commence par aller dans « Paramètres généraux » :

  • Interface réseau : si votre NAS a plusieurs connexions réseau, il faut choisir celle qui convient, la plupart des utilisateurs pourront laisser le choix par défaut
  • Type de compte : Utilisateurs locaux – sauf si vous avez intégré votre NAS à un annuaire (AD/LDAP)
  • Accorder le privilège VPN aux utilisateurs locaux nouvellement ajoutés : il ne faut pas cocher cette case
  • Blocage auto : il doit être activé, sinon il faut le faire avant de continuer

=>04.png

Puis dans « Privilèges » vous pouvez choisir les utilisateurs qui pourront utiliser tel ou tel type de tunnel VPN. Par défaut tout est autorisé pour tout le monde, ce qui n’est probablement pas une bonne idée.

Ici certains utilisateurs peuvent utiliser plusieurs types de tunnel en fonction des besoins et des contraintes (un pare-feu d’entreprise qui ne laisse pas passer l’un ou l’autre des VPN par exemple). D’autres comptes n’ont tout simplement pas le droit pas se connecter en VPN.

05.png

Ensuite on peut configurer les différents types de tunnel VPN en fonction des besoins.


Serveur PPTP

Ça va aller vite => il ne faut pas s’en servir

Il est encore plus fiable et plus sûr de se connecter directement à son NAS en HTTP (même sans le s).


Serveur OpenVPN

Avant de rentrer dans la configuration, un petit mot sur OpenVPN.

Il s’agit d’un projet OpenSource de serveur VPN SSL/TLS, il utilise donc un certificat (et quelques autres mécanismes) pour chiffrer la communication, d’une manière très similaire à ce qui est fait par un site en HTTPS. Ce mode de fonctionnement lui permet une grande souplesse de configuration. À titre d’exemple, on peut le configurer pour écouter sur le le port TCP 443, comme le ferait un serveur HTTPS. Cette possibilité peut être utile si les ports standards sont fermés par un pare-feu. On peut aussi l’utiliser à travers un serveur proxy.

Néanmoins, et cela est valable pour tous les protocoles :

  • un bon équipement réseau sera toujours capable de faire la différence entre une connexion normale et une connexion VPN
  • il est nettement plus efficace (en terme de débit et de stabilité) d’utiliser le protocole UDP

Commencez par activer le serveur OpenVPN, vous pouvez laisser tous les réglages par défaut sauf éventuellement le cadre rouge :

08.png

  • Par défaut le serveur ne vous laisse accéder qu’au NAS. Si vous cochez cette case, vos clients VPN pourront aussi accéder aux autre ressources de votre réseau (une imprimante réseau par exemple, un autre nas, …) mais leur accès à Internet passera aussi par le nas. C’est à activer en connaissance de cause.
  • Vous pouvez aussi ajuster les options de chiffrement et d’authentification, les options de la capture ci-dessus sont un compromis entre sécurité/performances et compatibilité (testé avec le client officiel sous Windows et Android).

En passant, notez l’adresse IP en haut : 10.8.0.1

C’est la première adresse qui sera distribuée à vos clients, votre NAS sera directement accessible à l’adresse 10.8.0.0 (il y a bien un zéro à la fin).

Cliquez sur « Appliquer » pour obtenir une petite notification :

09.png

Comme indiqué ici, il faudra autoriser et transférer le port UDP 1194 sur votre routeur ou votre MachinBOX.

Une fois la configuration terminée, vous devez cliquer sur « Exporter la configuration » pour obtenir les certificats et le fichier de configuration des clients.

Sauvegardez le zip et ouvrez le, il contient 4 fichiers :

  • README.txt : ce fichier contient les instructions de configuration pour Windows et MAC
  • openvpn.ovpn : c’est le fichier de configuration qu’il faudra importer dans votre client OpenVPN
  • ca.crt : c’est l’autorité de certification racine utilisée par OpenVPN (c’est la même que pour votre nas)
  • ca_bundle.crt : en général c’est la même chose, mais si vous utilisez une sous autorité, il contient la chaine complète de certification

nb : dans les versions récentes du paquet, le certificat est inclus dans le fichier .ovpn

Comme indiqué dans le README.txt, il faut éditer le fichier de configuration avant de l’importer, les lignes importantes sont :

  • remote YOUR_SERVER_IP 1194
    • il faut remplacer YOUR_SERVER_IP par l’adresse IP publique utilisée pour joindre votre nas (c’est probablement votre IP publique)
    • même si c’est déconseillé, vous pouvez spécifier un nom de domaine à la place de l’adresse IP
  • #redirect-gateway def1
    • selon que vous avez ou non coché la case entourée de rouge (cf plus haut), il faut enlever ou laisser le caractère de commentaire (le #) en début de ligne
  • #dhcp-option DNS DNS_IP_ADDRESS
    • si vous n’avez pas dé-commenté l’option précédente, dans certaines conditions particulière, il faut préciser l’adresse d’un serveur DNS accessible depuis le client

Notez la ligne « ca ca_bundle.crt« , elle indique où trouver le certificat par rapport au fichier de configuration (par défaut il s’attend à tout avoir au même endroit, laissez comme ça c’est plus simple).

Enregistrez le fichier et copiez le avec le fichier ca_bundle.crt sur tous vos clients (c’est le même fichier et le même certificat pour tous vos clients).

C’est terminé pour la configuration du serveur OpenVPN, normalement les étapes se résument à :

  1. activer le serveur OpenVPN
  2. exporter un zip
  3. modifier la configuration pour ajouter votre adresse IP
  4. autoriser le port UDP 1194 sur le NAS
  5. ouvrir et transférer le port UDP 1194 sur le routeur

Serveur L2TP/IPSec

En préambule vous avez pu lire que L2TP/IPSec était un standard mais était aussi complexe. Rassurez vous, la configuration est en réalité très simple. Il faut simplement ne pas suivre une des indications de Synology !

Une petite précision avant d’aller plus loin. L2TP/IPSec englobe 2 protocoles de tunnel. On peut le lire autrement, L2TP sur IPSec ou plus clairement L2TP dans IPSec. En pratique, votre client va créer un tunnel sécurisé par IPSec et faire circuler du L2TP à l’intérieur.

  • IPSec : c’est ce protocole qui assure le chiffrement de votre communication
  • L2TP : il se contente de gérer l’authentification et de transporter les données, mais sans rien chiffrer (c’est important pour la suite)

Commencez par activer le serveur L2TP/IPSec, vous pouvez laisser tous réglages par défaut sauf le cadre rouge :

10.png

  • Il faut aussi créer et confirmer la clef pré-partagée. Cette clef va servir de mot de passe secret entre votre client et votre serveur pour authentifier les 2 extrémités. Utilisez une clef assez robuste (pas moins de 16 caractères) et ne la perdez pas (KeePass est parfait pour ça et plein d’autres choses).
  • nb : par défaut c’est le serveur DNS configuré dans votre NAS qui est utilisé, mais vous pouvez le changer si besoin (attention, certains clients n’en tiennent pas compte)

En passant, notez l’adresse IP en haut : 10.2.0.0

Ici ça sera l’adresse du serveur VPN (ils auraient pu faire pareil qu’avec OpenVPN, mais non), votre NAS sera donc directement accessible à cette adresse. Dans le cas présent, votre NAS sera aussi accessible avec son adresse habituelle car, par défaut, tout le trafic de votre client pourra passer dans le tunnel L2TP/IPSec (il n’y a d’ailleurs pas d’option pour ça), ça dépend du client (c’est le cas par défaut sous Android, iOS et Windows mais pas avec MacOS).

Cliquez sur Appliquer pour obtenir une petite notification, mais attention, il y a une erreur :

11.png

Il faut bien ouvrir le port UDP 1701 sur votre nas s’il est derrière un routeur, mais il ne faut pas l’ouvrir ni le transférer sur votre routeur.

Si vous ouvrez ce port sur votre routeur, vous autorisez les connexions L2TP direct. Le soucis est que certains clients testent plusieurs protocoles (iOS et Windows 10 par exemple), selon la priorité de leurs tests, s’ils voient le L2TP d’ouvert, il vont tenter de s’y connecter sans monter le tunnel IPSec. Du point de vue du client ça fonctionne et c’est rapide, mais en pratique, il n’y a aucun chiffrement de la connexion.

Si vous êtes connecté en filaire sur un réseau de confiance, ce n’est pas forcement trop grave, mais si vous voulez accéder à votre NAS depuis un HotSpot, sachez que TOUT ce que vous ferez sera en clair et lisible par n’importe qui.

Un pirate pourra facilement (vraiment très facilement, environ 10sec de travail) espionner votre trafic (donc vos mots de passe), se connecter à votre PC, à votre nas et à tout ce qu’il y a derrière.

Il est donc important de ne pas ouvrir ni transférer le L2TP (UDP 1701) sur votre routeur. Par contre il doit être autorisé sur le NAS.

Pour ceux qui n’ont pas suivi :

  • on interdit le port sur le routeur
  • mais on l’autorise sur le nas
  • =>comment le client peut il atteindre le nas par ce port ?

Rappelez vous, L2TP est dans le tunnel IPSec, donc votre routeur ne verra pas le L2TP passer, mais votre NAS oui.

C’est terminé pour la configuration du serveur L2TP/IPSec, normalement les étapes se résument à :

  1. activer le serveur L2TP/IPSec
  2. créer un secret pré-partagé
  3. autoriser les ports UDP 500, 1701 et 4500 sur le NAS
  4. ouvrir et transférer les ports UDP 500 et 4500 sur le routeur ou la MachinBOX

nb : en L2TP/IPSec, il n’est pas possible d’avoir plusieurs clients connectés en même temps s’ils sont derrière le même routeur NAT


Compatibilité des clients

  • OpenVPN :
    • Android : aucun soucis
    • iOS : non testé
    • Linux : aucun soucis
    • MacOS : aucun soucis avec El Capitan (pas testé avec Sierra)
    • Synology : aucun soucis
    • Windows 7 et 10 : aucun soucis
  • L2TP/IPSec :
    • Android : ça peut ne pas fonctionner certaines versions récentes d’Android, mais c’est simple à corriger
    • iOS : iOS 9 et 10 aucun soucis
    • Linux : aucun soucis
    • MacOS : aucun soucis
    • Synology : aucun soucis
    • Windows >= 7 : ça peut ne pas fonctionner selon le type de réseau (si le NAS n’a pas d’adresse public), mais c’est simple à corriger

Notes communes sur les clients

Si votre client vous demande de renseigner une adresse de serveur, c’est l’adresse Internet de votre box qu’il faut saisir. Dans certains cas on peut utiliser un nom DNS, mais ce n’est pas recommandé, sauf si l’ip n’est pas fixe.

Si vous avez configuré votre client pour ne pas envoyer tout le trafic vers le VPN, votre NAS ne sera pas accessible depuis son adresse habituelle (192.168.x.x en général). Il faudra donc utiliser l’adresse de terminaison (celle en 10.x.x.x).

Si vous avez configuré votre client pour envoyer tout le trafic vers le VPN, votre NAS sera accessible depuis son adresse habituelle (192.168.x.x en général) et votre client sera vu avec l’adresse de votre NAS depuis le reste de votre réseau (le NAS fait routeur+NAT).


Configuration des clients

OpenVPN

Android : 24.pngOpenVPN Connect

Configuration :

  • après l’import du certificat, vous aurez peut être une notification de sécurité

iOS : 23.pngOpenVPN Connect

Configuration :

  • rien de particulier

Linux : utilisez apt/dnf/emerge/yum/zipper ou les sources (si vous utilisez network manager, network-manager-openvpn-gnome est sympa)

Configuration :

  • rien de particulier

MacOS : 25.pngOpenVPN Connect

Configuration :

  • parfois il faut jouer avec les routes pour que ça fonctionne

Synology :

Configuration :

  • ne cochez pas la 2ème case (Use default gateway on remote network) sauf si vous savez ce que vous faites

Windows : 24.pngOpenVPN

Configuration :

  • rien de particulier

L2TP/IPSec

Android :

Configuration :

  • 27.png(cliquez pour zoomer)
  • par défaut tout le trafic passera par le VPN mais vous pouvez ajouter des routes pour changer ce comportement dans les options avancées
  • avec certaines versions d’Android, il faut modifier le fichier /var/packages/VPNCenter/etc/l2tp/ipsec.conf sur le NAS et remplacer sha2_truncbug=no par sha2_truncbug=yes, puis on relance le paquet

iOS :

Configuration :

  • 26.png(cliquez pour zoomer)
  • par défaut tout le trafic passera par le VPN, la case « Tout envoyer » permet de changer ce comportement

Linux : il existe plein de clients mais j’ai une préférence pour strongswan

Configuration :

  • rien de particulier

MacOS :

Configuration (mon mac est en anglais mais ça ne devrait pas vous poser de soucis) :

  • Il faut créer un nouvel adaptateur dans Préférences Système -> Réseau :
  • 31.png32.png33.png34.png
  • Dans Avancé, la case entourée en rouge permet de choisir ce qu’on envoi dans le VPN (dernière capture)

Synology :

Configuration :

  • Il faut créer un nouveau profil réseau dans les paramètres :
  • 35.png36.png37.png
  • Sur le 3ème écran, ne cochez pas la première case sauf si vous savez ce que vous faites
  • Vos 2 nas pourront alors discuter entre eux directement en utilisant les adresses de terminaison en 10.2.0.x (pour faire une sauvegarde distante par exemple)

Windows :

Configuration :

  • Commencez par créer la connexion VPN avec le Wizard
    • Sous Windows 10 il ressemble à ça :
    • 29.png ou à ça (selon par où vous passez) 30.png
  • Que vous soyez sous Windows 7, 8 ou 10, ça va vous créer un nouvel adaptateur réseau sur lequel vous pourrez modifier les paramètres comme suit si besoin :

15.png18.png19.png20.png21.png22.png

  • Si votre NAS est derrière un routeur-NAT (une box par exemple), il faut créer la valeur de registre suivante : https://support.microsoft.com/en-us/kb/926179
    • Clef : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Valeur DWORD32 : AssumeUDPEncapsulationContextOnSendRule
    • Donnée de la valeur : 2
    • et on reboot le PC

Configuration des routeurs

La première chose à faire consiste à s’assurer que l’adresse IP de votre nas ne change pas, vous avez 2 manières de procéder :

  • la bonne : vous configurez votre DHCP (celui de la box par exemple) pour qu’il attribut toujours la même adresse au nas (association MAC ADDRESS <-> adresse IP)
  • la mauvaise : vous entrez une IP fixe dans la configuration réseau de votre nas

Voici à quoi devrait ressembler les redirections de ports dans votre routeur dans le cas d’un VPN L2TP/IPSec, à chaque fois il faut bien renseigner l’adresse IP locale de votre nas :

  • Freebox V5 : accessible depuis l’interface Free
    • Ma Freebox->Configurer mon routeur Freebox->Redirections

Freebox V5

  • Livebox 4 : accessible depuis l’interface de la box
    • configuration avancée->NAT/PAT

Livebox 4

  • EdgeRouter : vous avez plusieurs manières de faire, ici c’est la méthode pour les débutants (non recommandé) :
    • sélectionnez bien votre interface WAN (celle connectée à Internet) :

EdgeRouter

  • autres modèles : consultez la documentation de votre routeur, ça devrait être similaire aux exemples ci-dessus

Que faire si ça ne marche pas ?

La première chose à faire est de relire attentivement le tutoriel, en entier, tous les problèmes rencontrés jusqu’à présent pas les autres utilisateurs ont été traités à un endroit ou à un autre.

Les erreurs classiques sont :

  • mauvaises règles de pare-feu
  • erreur de login/password
  • erreur de secret partagé

N’hésitez pas à repartir de zéro (supprimez la configuration et recommencez).

Vérifiez aussi l’adresse IP public de votre connexion, avec certains FAI elle change régulièrement, même chose si vous avez utilisé un nom DNS, il faut vérifier qu’il est valide.

Si vraiment vous êtes certains que tout est bon de votre coté, regardez les journaux sur le Synology, ils sont dans /var/log/auth.log

Vous pouvez aussi activer le debug dans le fichier /var/packages/VPNCenter/etc/l2tp/ipsec.conf :

  • il faut dé-commenter les instructions :
    • plutodebug=all
    • plutostderrlog=/var/log/pluto.log
  • puis on relance le paquet (synoservice –restart pkgctl-VPNCenter)
  • les détails de la connexion seront visibles dans /var/log/pluto.log
  • pensez à désactiver le debug après avoir trouvé le problème

Si la connexion n’aboutit toujours pas, il faut vérifier que le VPN est bien autorisé entre le client et le serveur. Il est possible qu’un pare-feu ou que votre FAI (voir votre box) bloque ce trafic. Le plus simple pour le vérifier est de faire une capture de trames sur le Synology (à faire en root) : tcpdump -n -q « udp dst port 500 or udp dst port 4500 »

  • si vous ne voyez pas de trafic sur les port 500 et 4500, il y a un filtrage entre le client et votre nas

Vous pouvez aussi tester avec un autre client, une autre connexion Internet, un autre nas (demandez à des amis par exemple, ça sera l’occasion de leur montrer comment ça fonctionne).


Utilisation avancée

En plus des paramètres présentés ci-dessus, vous pouvez faire plusieurs ajustements coté client et serveur afin de mieux correspondre à vos besoins.

Pour la suite, il faut avoir un minimum de notions en réseau (minimum ne veut pas forcement dire la même chose pour tout le monde, cf Prérequis). Les points présentés ici ne sont pas limités au VPN et peuvent être utilisés dans un cadre plus général.

Les tables de routage

En réseau, une route c’est simplement l’itinéraire que doivent emprunter les paquets pour aller du point A au point B. Comme une route pour les voitures.

Pour voir les différentes routes configurées sur votre système, « la table de routage », une commande à retenir : netstat -nr

Vous connaissez tous la « route par défaut/Passerelle par défaut ». Elle est matérialisée dans la table de routage de votre équipement par quelque chose ressemblant à ça :

  • Windows : 0.0.0.0 0.0.0.0 <adresse de votre routeur> <adresse de l’interface> <métrique>
  • le reste du monde : 0.0.0.0 <adresse de votre routeur> 0.0.0.0 UG 0 0 0 <nom de l’interface>

Les 2 séries de 0.0.0.0 servent à définir l’adresse du réseau de destination (respectivement l’adresse de destination et le masque de sous réseau). Ce qui donne donc 0.0.0.0/0.0.0.0 ou encore 0.0.0.0/0. Pour information, l’adresse d’un réseau s’obtient en multipliant (en binaire) une adresse par son masque (ici c’est facile, ça donne 0 partout).

Maintenant à quoi ça sert de savoir ça ?

On a vu plus haut qu’on avait 2 types de configuration pour le trafic : tout doit passer par le VPN ou seulement le trafic entre le client et le serveur VPN (ici le nas).

Si vous souhaitez, par exemple, que tout le trafic à destination d’Internet passe en direct (pas par le VPN) mais que tout le trafic à destination des adresses de votre réseau local passe par le VPN, vous devez le dire à votre client. Donc il faut créer des routes.

Pour la suite, on considérer que votre réseau est configuré comme suit :

  • adresse de votre réseau : 192.168.0.0/24
  • adresse de votre NAS : 192.168.0.2/24
  • adresse de terminaison VPN de votre NAS : 10.2.0.0 (il n’y a pas de masque ici, c’est normal)
  • adresse d’un site Internet accessible uniquement depuis chez vous : 1.1.1.1/32

Si vous souhaitez pouvoir accéder à votre NAS, une imprimante IP, une caméra de surveillance, … via le VPN, vous avez 2 possibilités :

  • vous définissez la connexion VPN comme itinéraire par défaut : c’est simple mais tout le trafic passera par là, avec une connexion fibre à la maison ce n’est pas trop grave, mais en ADSL c’est lent
  • vous spécifiez que tout le trafic à destination de votre réseau local, mais pas le reste, doit passer par le VPN => il faut ajouter une route dans la configuration de votre client
    • Android : c’est à faire dans la configuration de la connexion VPN (tout en bas dans les paramètres de la connexion)
    • iOS : ce n’est pas possible sauf en jailbreak
    • Linux/MacOS : ip route add 192.168.0.0/24 via 10.2.0.0
    • Windows : route add 192.168.0.0 mask 255.255.255.0 10.2.0.0

Et pour le fameux site privé sur Internet ? C’est la même chose.

  • Android : c’est à faire dans la configuration de la connexion VPN (tout en bas dans les paramètres de la connexion)
  • iOS : ce n’est pas possible sauf en jailbreak
  • Linux/MacOS : ip route add 1.1.1.1/32 via 10.2.0.0
  • Windows : route add 1.1.1.1 mask 255.255.255.255 10.2.0.0

Ici on a ajouté des routes en indiquant au système d’envoyer les paquet à 10.2.0.0, à lui de trouver la meilleur interface réseau à utiliser. On peut le faire différemment, au lieu de spécifier une adresse de routeur (10.2.0.0), on peut indiquer au système de passer par une interface bien précise (ici ça serait l’interface de VPN).

Petite précision, avec des routes on défini un itinéraire, il est tout à fait possible de définir plusieurs étapes sur cet itinéraire, on peut par exemple indiquer :

  • pour aller sur 192.168.1.0/24 il faut passer par 192.168.0.1
  • pour aller sur 192.168.0.1/32 il faut passer par 10.2.0.0
  • =>votre paquet empruntera donc le chemin suivant : [client]——-[10.2.0.0-192.168.0.2]——-[192.168.0.1-XXXXX]—????—[192.168.1.0/24]

Ça c’est la théorie, pour la mise en pratique il existe plusieurs manière de gérer tout ça et de l’automatiser.

À titre personnel j’utilise des scripts pour me connecter/déconnecter du VPN, j’ai donc ajouté les commandes de gestion des routes dans ces scripts (et plein d’autre choses mais ce n’est pas le sujet).

Par exemple :

  • Linux :
#!/bin/sh
nmcli con up id <id de connexion dans network-manager>
#avec OpenVPN c'est : openvpn /fichier/de/conf.ovpn

#on ajoute les routes
ip route add 192.168.0.0/24 dev <nom de l'interface vpn>
exit 0
  • Windows :
rem "il faut remplacer VPN1 par le nom de l'interface VPN"
rasdial "VPN1"

rem "il faut remplacer XX par le numéro de l'interface VPN"
route add 192.168.0.0 mask 255.255.255.0 10.2.0.0 IF XX

Il existe d’autres manières de faire, par exemple celle-ci : vpn-route.ps1

En version courte, il demande au système (via les taches planifiées) d’exécuter ses commandes de gestion de routes lorsqu’il détecte que l’interface VPN se connecte/déconnecte.

Les enregistrements DNS

Pour vous connecter à votre nas, la plupart d’entre vous font ceci (pour simplifier on va oublier l’https, le netbios, le changement de ports … car ça n’a aucune importance pour la suite) :

  • à la maison : http://192.168.0.2:5000
  • depuis Internet : http://<nom de domaine>:5000
  • via le VPN : http://10.2.0.0:5000 (ou http://192.168.0.2:5000 en fonction de vos routes)

Personnellement je fais ceci :

  • à la maison : http://<nom de domaine>:5000
  • depuis Internet : http://<nom de domaine>:5000
  • via le VPN : http://<nom de domaine>:5000 (peu importe mes routes)

Je trouve ça légèrement plus simple.

Vous avez plusieurs méthodes pour arriver à ce résultat mais je ne vais en présenter qu’une, par contre comme c’est très long à expliquer en détails (mais simple à faire), je vais fortement abréger.

Le plus propre et de loin le plus efficace c’est de configurer votre serveur DNS pour gérer les « vues » (view) : vous demandez simplement à BIND de donner la bonne IP en fonction de l’adresse IP du client :

  • si le client a une IP qui vient d’Internet on renvoi l’adresse de la box
  • si le client a une IP qui vient du LAN on renvoi l’adresse du NAS
  • si le client a une IP qui vient du VPN on renvoi l’adresse de terminaison du NAS

Tout ce qu’il reste à faire c’est d’indiquer au client d’utiliser votre serveur DNS :

  • à la maison : via votre DHCP
  • depuis Internet : rien à faire normalement
  • via le vpn : en le configurant comme indiqué plus haut

En creusant un peu, vous trouverez d’autres techniques (loopback, cascade DNS, LLA, prerouting iptables, …), mais aucune n’est aussi efficace du point de vue des performances et de la souplesse.

La MTU et le MSS Clamping

Si vous ne savez pas de quoi je parle, passez votre chemin, vous allez faire de la casse. D’ailleurs je ne vais pas en parler pour éviter les accidents, c’est juste un mémo pour rappeler aux utilisateurs les plus avancés que ces paramètres peuvent être configurés et ne doivent pas être négligés du point de vue des performances, surtout en IPv6 (même si la théorie voudrait que ça soit mieux géré en IPv6).

source : www.nas-forum.com