Accéder à son serveur à partir d’internet

Written by Sebastien Lambot on . Posted in Réseaux

Vous avez installé une application Web sur votre serveur local et vous souhaiteriez y accéder à partir de n’importe quel navigateur internet? Cet article est fait pour vous!

Suite à la demande d’un ancien collègue qui se reconnaîtra, nous allons voir comment accéder à une ressource locale à partir d’internet.

Dans ce cas-ci, notre utilisateur a installé un Synology avec l’application PhotoStation, lui permettant d’uploader ses photos et de les consulter sous forme d’albums.

Etant sur un réseau local domestique, les PCs et serveurs se trouvent derrière un modem de style BBox/Sagem (le standard fourni par Belgacom/Scarlet).

Plusieurs étapes sont nécessaires afin de créer un accès web vers notre application:

  1. Assigner une IP fixe à notre Serveur/Nas hébergeant notre application
  2. Créer une règle de « port forwarding » sur notre modem
  3. Créer un enregistrement DNS dynamique et configurer le client (no-ip.org)
  4. (Optionnel) Créer un alias DNS

L’opération n’est pas bien compliquée, suivez le guide:

1. Assigner une IP fixe à notre serveur

Notre serveur a besoin d’une adresse IP local fixe, vous pouvez la configurer dans les paramètres réseaux.
Pour un réseau local, elle sera généralement du type 192.168.x.x . N’oubliez pas de configurer le subnet, le gateway/passerelle (l’IP de votre modem), et les serveurs DNS.

2. Créer une règle de « port forwarding » sur notre modem

Pour accéder à la configuration de votre modem, ouvrez un browser web et tapez son adresse IP:

portfwd1si c’est un modem récent, il vous demandra d’abord d’entrer le serial number se trouvant sous le modem (pour plus de facilité, je n’ai pas hésité à prendre une photo du mien avec mon GSM).
si un mot de passe est demandé, essayez « admin/admin » (ou votre numéro de GSM pour les modems plus récents).

Une fois dans le menu de configuration, vous pouvez voir les différentes infos, telles que votre adresse IP publique, les VC (Virtual Circuits) créés pour la téléphonie VoIP et votre décodeur TV.

Ce qui nous intéresse ici se trouve dans « Advanced settings > LAN servers »:

portfwd2

Il se peut que certaines entrées soient déjà configurées automatiquement. En effet, certaines applications exploitent l’uPNP qui permet d’ouvrir certains ports de l’intérieur et de les laisser ouverts pour autoriser une communication venant de l’extérieur.

Ajoutez une nouvelle entrée avec les paramètres correspondant à votre serveur et cliquez sur « appliquer »:

portfwd3

La règle que nous venons de configurer est un « port forwarding ». Les requêtes qui arriveront sur l’adresse IP publique (WAN) de notre modem et qui sont destinées au port 80 en TCP (les requêtes web donc) seront redirigées vers le port 80 de la machine dont l’adresse IP locale est spécifiée à la dernière ligne.

Pour plus de sécurité, vous auriez très bien pu aussi utiliser un port d’entrée différent, comme par exemple 12345 (attention, certains ports sont réservés à certaines fonctions, particulièrement ceux inférieurs à 1024. Plus d’infos ici). Pour accéder à votre interface web de l’extérieur, vous devrez donc naviguer vers l’adresse « http://ip_de_mon_modem:12345 ».

Pour identifier votre IP externe, vous pouvez aller sur myipaddress.com.

Vérifiez bien que vous arrivez à accéder à votre page à partir de l’adresse IP publique avant de passer à la suite.

3. Créer un enregistrement DNS dynamique

Pour expliquer DNS de manière ultra-simplifiée: il existe sur internet des serveurs DNS chargés de traduire des url (google.be par exemple) en adresse IP. Cette correspondance s’appelle un enregistrement DNS.

Dans notre cas, nous souhaiteriosn avoir une url du type monserveur.be et qu’elle pointe vers l’adresse IP publique de notre modem. Le problème est que pour une installation domestique, notre adresse IP publique est dynamique, elle change toutes les 24/48h (ainsi qu’au redémarrage de votre modem). Et les mises à jour des enregistrements DNS mettent du temps à se propager sur la toile (quelques heures généralement), vous risqueriez donc en tapant votre url de ne pas tomber sur votre adresse IP.

Il existe des lignes internet à IP fixes mais elles sont horriblement chères et demandent d’énormes précautions au niveau sécurité.

Heureusement, il existe des solutions fournissant des DNS dynamiques (Dyndns et No-ip sont les fournisseurs les plus connus). Après inscription, vous pourrez enregistrer une url comportant une extension propre à votre fournisseur de service, du genre monserveur.dyndns.org ou monserveur.no-ip.org . D’un point de vue technique, la résolution DNS (traduction url/IP) se fera chez ce fournisseur au lieu d’être propagée sur la toile.

Dyndns ne fournit plus ce service gratuitement. Je vous conseille d’utiliser no-ip qui met à votre disposition 5 urls sans aucun frais.

Afin de pouvoir faire cette traduction url/IP, le fournisseur a besoin de connaître l’adresse IP publique de votre modem. Pour celà, il existe des petits utilitaires, qui sont généralement intégrés aux équipements réseaux ou qui existent sous forme de programme, et qui vont périodiquement vérifier votre adresse IP publique (sur myipaddress.com) et vont l’envoyer à votre fournisseur afin que celui-ci mette à jour ses enregistrements DNS.

Inscrivez-vous sur no-ip.com et enregistrez un host. Pour bénéficier du service gratuit, son url doit se terminer par *.no-ip.biz, les autres formules étant payantes.

portfwd4a

L’url que vous venez de créer va dès à présent être associée à l’IP publique de l’endroit où vous vous trouvez.

Il ne nous reste maintenant plus qu’à installer et configurer le client de mise-à-jour (aussi appelé DUC chez no-ip). Pour celà, soit vous installez la version client Windows/Linux sur un serveur qui tourne 24h/24, soit vous le configurez sur un équipement réseau, comme par exemple un Nas (un Synology dans notre cas):

portfwd5

portfwd6

portfwd7

Vous pouvez vérifier sur l’interface de management de votre compte no-ip que l’adresse IP a été correctement mise à joure. votre url est immédiatement utilisable et devrait maintenant pointer vers votre modem qui redirigera la requête vers votre serveur, et vous devriez voir apparaître votre application.

4. Créer un alias DNS

De manière simple, un alias DNS (ou CNAME) permet de faire correspondre une url à une autre url, qui sera ensuite résolue sous forme d’adresse IP.
C’est en quelque sorte une forme de redirection (même si ce n’est pas tout-à-fait exact au niveau DNS).

Cette solution (purement esthétique) n’est pas gratuite et nécessite d’être propriétaire d’un domaine internet et d’être chez un fournisseur qui accepte les modifications DNS.

Vous devrez ensuite modifier votre fichier de zone DNS pour lui ajouter l’entrée correspondant à votre url:

myserver 10800 IN CNAME myserver.no-ip.biz.

N’oubliez surtout pas le point final!
Supposons que notre domaine soit mondomaine.be, lorsqu’une résolution du nom myserver.mondomaine.be sera demandée, l’adresse IP de myserver.no-ip.biz sera renvoyée.
Au final, la requête complète ressemble à ceci:

  1. Résolution DNS: myserver.mondomaine.be -> (CNAME) myserver.no-ip.biz -> (A) ip_address
  2. Requête web: ip_address du modem:80 (WAN) -> (port forwarding) ip_address du serveur:80

La mise en place n’est pas compliquée mais le fonctionnement nécessite une bonne compréhension de plusieurs principes réseaux.

Tags: , , , ,

Trackback from your site.

Leave a comment

You must be logged in to post a comment.