Dés qu’on commence à avoir plusieurs appareils connectés chez soi et que l’on désire pouvoir y accéder de l’extérieur, cela peut vite devenir un casse tête. Notamment dans le cadre de la domotique où les objets connectés peuvent vite envahir la maison et bien évidemment pour les objets non clouds l’accès depuis l’extérieur peut vite devenir un casse tête pour certains. Je lis souvent des personnes se poser la question tout en constatant qu’elles possèdent un Nas Synology. C’est la raison pour laquelle j’ai décidé aujourd’hui de vous parler de reverse proxy sur Nas Synology et SSL. Alors il y a un tas de manière pour mettre en place un Reverse Proxy notamment avec un simple Raspberry Pi mais ce sera l’objet d’un autre article.
Définition du reverse Proxy sur Nas Synology
Alors ma définition à mon habitude sera simple. L’idée est de comprendre facilement pas de détailler techniquement le fonctionnement (il y a Wikipedia pour cela). Donc un reverse proxy permet de manière simple de diriger les communications extérieures vers un équipement de votre maison. Rien ne vaut un exemple, admettons que mon adresse externe est : demoblog.maison.com le reverse proxy permettra :
- de diriger jeedom.demoblog.maison.com vers ma box jeedom
- camera.demoblog.maison.com vers ma camera
- nas.demoblog.maison.com vers mon nas
- kodi.demoblog.maison.com vers mon kodi
- etc…..
Donc vous l’avez compris le reverse proxy permet d’agir comme un policier qui ferait la circulation.
Un autre gros avantage du reverse proxy est de ne pas à avoir à ouvrir un nombre incalculable de port sur votre routeur ou votre box internet. Ce qui évite que votre accès externe ne ressemble à ceci
Super mais comment on met en place un reverse proxy sur Nas Synology ?
Alors vous pouvez être rassuré, tout est natif sur Synology. (très probablement à partir de DSM6 à confirmer)
Il suffit de se rendre dans le panneau de configuration.
Ensuite il suffit de cliquer sur « Portail des applications » même si je vous avoue être perturbé par le fait que la fonction de reverse proxy soit cachée dans ce menu.
Et voilà on retrouve enfin notre menu « Proxy inversé » pour « Reverse Proxy »
Bref continuons !!
Ensuite en toute logique il suffit de cliquer sur « Créer »
On retrouve ensuite une page de configuration pour notre règle de reverse proxy :
- Description : ici on donnera un nom à notre règle
- Protocole Source : ici on choisira si notre connexion externe (entrante) sera en HTTP ou en HTTPS
- Nom d’hôte : ici ce sera l’adresse complète externe de la route que l’on va créer : Exemple : jeedom.demoblog.maison.com
- Port : c’est le port du Nas vers lequel vous avez configuré votre routeur ou votre box internet pour rediriger les connections entrantes (oui il faudra bien configurer votre routeur ou box pour orienter tout ce qui sera port 80 (HTTP) et port 443 (HTTPS) vers un des ports du NAS.
Mais au final vous redirigerez uniquement le port 80 et le port 443. Derrière c’est le reverse proxy du Nas qui fera le reste
- Activer HSTS et HTTP/2 sont des options uniquement utiles dans le cas de HTTPS que je vous conseille de cocher
- Protocole Destination : là on parle du protocole de redirection interne à votre réseau local (donc en l’occurrence ici il n’est pas risqué de faire toutes les routes locales en HTTP
- Nom d’hôte destination : ici ce sera l’adresse IP du device sur votre réseau local
- Port destination : tout comme précédemment ici ce sera le port sur votre réseau local (généralement 80 si HTTP et 443 si HTTPS)
Compliqué !!
Exemple
Alors rien ne vaut un exemple car là je dois l’avouer il est très difficile par écrit de rendre le tout clair. On va prendre un de mes « Reverse Proxy », celui me permettant d’accéder à mon Jeedom :
Voilà à quoi ressemble la configuration. Donc pour schématiser à partir de là ce qu’il va se passer voici le cheminement :
- Je suis à l’extérieur de chez moi et je me connecte sur : https://jeedom.demoblog.maison.com (donc le port 443)
- Ma box ou mon routeur redirige tout cela sans s’en occuper vers le Nas sur le port 5001 (configuration à faire de votre côté)
- Le nas reçoit sur son port 5001 une demande d’accès pour https://jeedom.demoblog.maison.com
- Le nas est content il connait une règle pour https://jeedom.demoblog.maison.com sur le port 5001
- La règle lui dit de rediriger ça sur l’équipement local en HTTP avec l’IP 192.168.1.148 (qui est l’adresse locale de mon jeedom)
- Moi en tant qu’utilisateur je vois mon Jeedom à l’écran de manière limpide alors que « la vache » il s’en est passé des choses.
Epaté !!
J’insiste sur un point il faut bien évidemment que demoblog.maison.com soit configuré en DynDnS. Mais comme tout possesseur de Synology vous avez obligatoirement un DNS externe. Après cela peut-être un no-ip ou quoique ce soit d’autres.
Alors maintenant que vous avez une règle. Sachez que vous pouvez en créer autant que vous voulez sur la même base en changeant juste le premier mot avant demoblog.maison.com.
- kodi
- camera
- nas
- un service spécial du nas comme videostation
- etc….
SSL mise en place
Alors pour peaufiner votre accès externe vous avez tous entendu parler de HTTPS
AHHH Si Si j’en parle au dessus dans l’article 😉
Le HTTPS c’est bien c’est sécurisé, mais l’inconvénient c’est qu’il faut un certificat valide sous peine d’avoir un joli message sur votre navigateur vous avertissant : « BLABLABLA Certificat non valide voulez vous balbalbalba continuer ». Vous avez tous déjà croisé ce message qui ressemble à ça :
C’est là qu’intervient Let’s Encrypt. Je ne vais pas vous détailler ce que c’est, notre ami Lunarok l’a déjà fait ICI. Par contre il est bon de noter que Synology intègre directement la configuration d’un certificat Let’s Encrypt en natif.
Ah bon où ?
On se rend de nouveau sur le panneau de configuration.
On clique sur l’onglet « Sécurité » puisqu’en effet la création d’un certificat est relative à la sécurité.
Ensuite il nous suffit de se rendre sur l’onglet certificat.
Et de cliquer sur « AJOUTER »
Deux options se proposent à nous :
- Créer un nouveau certificat
- Remplacer un certificat existant
C’est bien entendu la première qui nous intéresse ici.
De nombreuses options, comme l’import d’un certificat ou la création d’un certificat directement depuis un site spécialisé sont disponibles. On notera l’apparition depuis quelques versions déjà de l’option « Let’s Encrypt » qui est celle qui va nous intéresser ici.
Finalement on retrouve la dernière fenêtre qui est celle de configuration :
- Nom de domaine : dans notre exemple jeedom.demoblog.maison.com
- Une adresse mail : obligatoire et très importante puisque c’est sur celle-ci que vous recevrez l’éventuel statut d’expiration de votre certificat.
- Le dernier champ quant à lui je n’ai jamais eu à m’en servir
Voilà une fois fait vous aurez un certificat valide pour le nom de domaine
IMPORTANT :
- la validation du certificat à la création nécessite une vérification au travers du port 80 et du port 443, il est donc nécessaire de router (depuis votre routeur ou votre box internet) ces deux ports pour la création et la génération de votre certificat. Si il y a un soucis une fenêtre vous détaillera ce qui ne va pas
- il faut créer AUTANT de certificat que vous avez besoin. Si vous voulez accéder à kodi, à votre caméra, à Jeedom en https et avoir un certificat valide il faudra réitérer les étapes précédentes pour chacun des domaines.
PETITE ASTUCE D’UN COMMENTAIRE
Petite astuce complémentaire que j’utilise : plutôt que de faire autant de certificats SSL que de services à joindre, un seul certificat unique pour les certifier tous, en créant un certificat SAN (Subjetc Alterenate Name), ce que supporte letsencryppt:
Au moment de créer le certificat, mettre tous les noms séparés par des point-virgules dans le champ “Autre nom de l’objet”… C’est ultra pratique et fait gagner un temps fou pour tout ce qui est renouvellement de certificat 😉
Conclusion
On arrive à la fin de cet article. Alors je suis conscient que c’est un article un peu linéaire. Mais je voulais vous donner au moins les pistes de mise en place pour un premier article. Je pense que je reviendrai plusieurs fois sur le sujet HTTPS et reverse proxy, que ce soit sur mon article SqueezeBox, ou l’article final de la baie de brassage. En attendant vous avez avec cet article les pistes d’investigations pour essayer de votre côté et voir le potentiel énorme et le côté confortable de cette mise en place.
96 commentaires
Bonjour et merci pour le tuto.
Je m’aperçois que cela fonctionne avec le dsn fournit par synology ( *.synology.me ) mais pas avec mon nom de domaine habituel. A creuser.
Bon, c’est ok; il a juste fallut ajouter un sous domaine chez mon fournisseur de nom de domaine. Et pour ça fonctionne!!
Ca donne envie,….mais «pas de bras, pas de chocolat» pour moi qui n’ai pas de Synology 😉 une solution alternative?
Si tu a un vieux Pc qui traine, tu peux tester Xpenology 😉
Bonjour Ludovic
Dans la partie des certificats, tu indiques qu’il faut router les ports 80 et 443. Mais vers où faut-il les router?
Je l’ai fait sur le même port que le port d’écoute du NAS pour le reverse proxy, mais j’ai une erreur à la création de certificat.
Merci d’avance
dans ton routeur, tu fais des regles de transmission de port pour 80 et 443 vers l’ip de ton nas. il faut verifier le parefeu du routeur pour qu’il laisse passer ces ports vers ton nas et le parefeu de ton nas egalement pour pas qu’il les bloque
Bonjour,
j’ai naté les ports 80 et 443 de ma box vers les 5000 et 5001.
un nom de domaine public est déclaré
l’accès à DSM fonctionne très bien de cette manière
j’ai créé des alias DNS nas, drive, ….
et déclaré ces alias dans le reverse proxy du portail d’application
puis déclaré les destinations
et il ne se passe rien quand j’accède aux URL à part qu’il me renvoie sur DSM et sur rien d’autre
help
J’ai eu ce pb aussi, et je l’ai résolu de manière exotique, mais bon ça marche ! L’astuce essentielle se trouve là: https://forum.synology.com/enu/viewtopic.php?t=119672
Bonjour à tous !
article très instructif avec une approche simple pour moi qui trouve que mon SYNO est une usine à gaz !
Est ce que cette solution « reverse proxy » me permettrais de me connecter à DSM en ne tapant que mon nom de domaine sans y mettre de port derrière ? idem pour tous les services du SYNO ?
J’ai tenté une redirection chez mon registrar (OVH) en ciblant le domaine avec le port, mais le Syno devient injoignable lorsque ma connexion VPN client est activé sur le NAS.
Merci
Bonjour,
merci beaucoup pour ce tutoriel.
Je rencontre des difficultés pour générer mon certificat letsencrypt.
Voici ma configuration :
Divers sous domaines chez ovh qui pointent vers ma livebox,
La livebox route les ports 80 et 443 vers un Nas Synology,
Le nas joue le rôle de reverse proxy et renvoie les requêtes de mon sous domaine Jeedom (port 443) sur un raspberry pi sur le port 80.
Letsencrypt ne parvient pas à générer un certificat pour le sous domaine consacré à jeedom.
Je précise que j’ai des certificats valides pour tous mes sous domaines liés à des services fournis par le nas (DSM, disk station, etc…). Le seul sous domaine posant problème est celui là.
Avez-vous des idées ?
Loïc
Bonjour,
Merci du tuto.
Afin de limiter les problèmes de certificats sur l’URL et de création de CNAME chez le registrar, plutôt qu’attaquer le reverse proxy en identifiant la destination par la racine de l’URL (ex: Jeedom.mondomaine.fr et cameraXX.mondomaine.fr…), pourrait’on le faire sur l’extension de l’URL (ex: maison.mondomaine.fr/Jeedomm et maison.mondomaine.fr/cameraXX) ?
Cdlt
Merci pour cet article qui m’a bien aidé à comprendre pour la mise en place de mon reverse proxy sur mon HP Gen 8
J’ai besoin d’un petit conseil, tout fonctionne bien pour jeedom avec le reverse proxy, y compris telegram mais je viens de remarquer qu’en extérieur, je n’ai pas besoin de mettre le code à double facteur pour entrer dans jeedom. j’en déduis qu’il pense que je suis sur le réseau local du coup. Avez-vous le même souci ou bien comment avez-vous fait pour régler ce problème. Je ne suis pas sous Synology mais HPGen 8 avec OpenMediaVault 3. Mais pour les réglages, ça se rejoint.
Bonsoir,
Super tuto. Bravo !!
En revanche as tu une astuce pour que chaque nas utilise son propre certificat ssl dans le cas où tu à 2 nas nas1.exemple.fr et nas2.exemple.com derrière un box orange . Nginx sur nas1 qui redirige nas2.exemple.com vers nas2. Actuellement ma redirection fonctionne bien mais le certificats utilisé est celui de nas1.
Merci d’avance
merci c’est très clair. Un point reste obscur : j’ai un url ovh http://www.mamaison.fr, je voudrais avoir domotique.mamaison.fr , monsite.mamaison.fr, nas.mamaison.fr mais je ne comprends pas comment paramétrer mes sous domaines. Une idée ?
Merci, ca fa longtemps que je cherchais un moyen de reporter le port 80 sur plusieurs machines dans mon réseau interne sans vraiment trouver de solution simple.
bonjour ,
Il existe des Scripts « SSL Wildcard autorenew » qui fonctionne parfaitement ,)
ex:
https://github.com/Neilpang/acme.sh/wiki/Synology-RT1900ac-and-RT2600ac-install-guide ( fonctionne sur Routeur et NAs )
bonjour,
comment as tu déclarer tes ports dans ton routeur et sur le reverse ?
j’essaie en vain de faire fonctionner telegram..
merci
Pingback: Alexa et Jeedom - Les Carnets de Byfeel
Est-ce que tu as réussi à faire fonctionner Telegram ? J’ai le même problème 🙁
Bizarre. Tout marche bien sur les les redirections faites sur le NAS(192.168.1.111). Mais sur une autre ip autre (par exemple sur une box en 192.168.1.11) sur mon reseau local j’ai connection refusé. En exterieur pas de probleme. Si je change mon dans mes DNS local l’ip 192.168.1.1 par 192.168.1.111 ben ça marche. Un conseil ?
Bonjour! Est il possible d’utiliser ce concept (passer par le syno) pour acceder à un broker mosquitto sur son lan en ssl ?
J’ai dans l’idée que non…tout a l’air de tourner autour de http/https uniquement sur le syno,mais je suis preneur d’idée 🙂
Créez un dynhost sur OVH, et mappez le dans la partie réseau du synology .
Ensuite,créez des CNAME domotique, monsite, nas qui pointeront sur le dynhost ( pour récupérer l’ip de manière auto)
J’espère que vous avez déjà trouvé entre temps !
Bonjour je désespère. Je n’y arrive pas.
J’ai un syno et une raspberry avec jeedom
j’ai suivis toute la procédure mais
1: impossible de modifier mon certificat
2: impossible d’accéder à jeedom.
il me bascule sur la page du syno :
Web Station has been enabled. To finish setting up your website, please see the « Web Service » section of DSM Help.
j’ai sur ma box mis les regles suvnates:
5001 tcp ip du nas 5001
80 tcp ip du nas 80
443 tcp ip du nas 443
reverse proxy
port 5001
…
destination:
j’ai essayé 80, 443, 5001
rien ne fonctionne
est ce que quelqu’un peux m’aider.