Mettre en ligne votre serveur web Raspbian, DynDNS et port forwarding
Si vous êtes ici, c’est probablement que vous avez lu le tutoriel sur l’installation d’un serveur web pour la raspberry Pi. Le tutoriel ici présent lui fait suite de façon directe. Par conséquent, vous devriez maintenant avoir un serveur web sous Raspbian opérationnel.
Néanmoins, comme nous l’avions alors précisé, ou comme vous avez pu le remarquer par vous-même, ce serveur ne sera disponible qu’en local. C’est-à-dire que vous ne pourrez pas y accéder depuis un autre réseau que celui ou se trouve votre chère Raspberry Pi.
Le réseau où se trouve votre Raspberry Pi, c’est celui du modem (la box), sur lequel elle est branchée. En effet, quand vous branchez plusieurs ordinateurs sur une box, vous créez alors un intranet, qui permet aux ordinateurs branchés sur cet intranet (et seulement à eux) de communiquer ensemble.
Hors, si vous avez mis en place un serveur web, c’est, à priori, que vous souhaitez partager des ressources, créer un site perso, rendre vos fichiers accessibles depuis n’importe où, etc. Bref, que vous voulez diffuser des données à travers les réseaux du monde entier, et en premier lieu internet, ce qui implique que votre serveur soit accessible depuis n’importe quel réseau, depuis n’importe quelle machine, et non pas uniquement depuis les ordinateurs branchés sur le même réseau que votre Raspberry.
Pourquoi le serveur n’est pas accessible depuis l’extérieur ?
Pour qu’il vous soit possible de bien comprendre la suite du tutoriel, il semble opportun d’expliquer un peu plus précisément le fonctionnement et le comportement de votre réseau, et surtout de votre box sur le réseau internet (livebox, freebox, alicebox, … jukebox, c’est toujours le même système).
Rien de bien compliqué, rassurez-vous. Il n’y a pas au sein de Raspbian-France d’experts en réseau, et, pour être parfaitement honnêtes, nous n’affectionnons par spécialement cet aspect de l’informatique. Cependant, bien comprendre le fonctionnement d’une box et des ordinateurs liés est un point qui peut vite s’avérer essentiel (ou au moins particulièrement utile) en tant que développeur web.
En premier lieu, il faut savoir que la plupart des équipements connectés à internet utilisent une adresse de type IP Version 4. C’est cette adresse qui vous permet d’accéder à un site, ou à une machine sur le réseau en général. Hors, le nombre de ces adresses est limité (en théorie 4 294 967 296, dans les faits certaines plages d’adresses sont « brulées », c’est-à-dire réservées à des usages particuliers). Par conséquent, les fournisseurs d’accès possèdent un nombre d’adresses à assigner relativement limité compte tenu du nombre d’équipements nécessitant un accès internet.
Les fournisseurs d’accès, vous fournissent donc une box, qui va vous permettre d’accéder à internet en branchant vos équipements sur cette dernière, soit par câble, soit par wifi. Et seule cette box possède une adresse IP sur le réseau internet (les autres équipements en possédant une sur le réseau interne). Cela signifie donc que si vous tentez d’accéder à votre ordinateur via votre adresse IP visible, et ce depuis un réseau externe, vous allez en fait tenter d’accéder à votre box. Hors, comme cette dernière ne possède pas de serveur web en écoute (en fait, elle en possède un, mais qui n’écoute que sur le réseau interne), vous aurez alors une erreur du type serveur inaccessible.
Voici un petit graphique du comportement d’une box lors d’une requête sur votre adresse IP depuis un réseau extérieur.
Rediriger les requêtes vers le serveur Apache sur Raspbian
Dans un premier temps, il va donc falloir faire en sorte que lors d’une requête sur votre box, qui est la seule à être accessible depuis l’extérieur, celle-ci soit redirigée vers votre Raspberry Pi, pour qu’elle soit traitée par le service adapté (en l’occurrence le serveur Apache2).
Pour cela, il va falloir accéder à l’interface de configuration de votre box. L’accès se fait différemment selon votre Fournisseur d’Accès Internet. Il faut donc que vous cherchiez (par exemple sur le site de votre fournisseur d’accès, ou plus simplement via votre moteur de recherche préféré) comment accéder à l’interface d’administration de votre box.
Une fois sur l’interface d’administration, et après vous être authentifié, vous allez pouvoir ouvrir les ports de votre box et rediriger les requêtes vers le serveur Apache.
Cette configuration se fait dans une partie qui peut avoir plusieurs noms, « configuration NAT », « Gestion des redirections de ports », « port forwading », etc.
Une fois que vous êtes dans la catégorie de configuration adaptée, le reste de la procédure est sensiblement équivalente pour l’ensemble des FAI. Vous allez mettre en place deux redirections différentes :
Type de requête | Port externe de la requête | Port interne de la redirection | Protocole employé | Équipement cible |
---|---|---|---|---|
HTTP | 80 | 80 | TCP | raspberry* |
HTTPS | 443 | 443 | TCP | raspberry* |
*raspberry peut correspondre soit au nom de votre Raspberry Pi, soit à son adresse IP sur le réseau interne.
Vous pouvez trouver cette dernière via l’utilisation de la commande
sudo ifconfig
l’adresse devrait à priori être de la forme 192.168.*.*
Si vous êtes connecté par câble Ethernet, il s’agira probablement de celle suivant le « inet addr : », dans la partie eth0.
Voici une petite capture d’écran de l’interface de configuration du NAT sur une livebox, après avoir ajouté les deux redirections (surlignées en rouge).
En mettant en place ces redirections, vous allez en fait rediriger les requêtes web, c’est-à-dire celles utilisant les protocoles HTTP (port 80) et HTTPS (port 443), vers votre système Raspbian, qui fait tourner le serveur Apache2.
Lors de la réception d’une requête par votre box, elle la redirigera donc sur votre Raspberry, ou elle sera analysée par Apache, qui retournera au client qui a effectué la requête les ressources adaptées.
Voici un autre un petit schéma du comportement de votre box lors d’une requête sur votre IP depuis un réseau externe, une fois les redirections de ports ajoutées.
Voilà, votre serveur web est désormais accessible depuis l’extérieur. Vous pouvez donc vous arrêter là.
Cependant, vous ne pouvez y accéder que par votre adresse IP, ce qui n’est pas vraiment pratique (tout particulièrement si cette dernière est dynamique, comme c’est le cas par exemple chez Orange, et si elle ne peut pas être fixée gratuitement par votre FAI, comme chez Orange, encore…).
Il serait tout de même beaucoup plus agréable d’accéder à votre serveur via une adresse URL. Et ça tombe bien, il existe une technique pour ça, c’est le DynDNS.
Le DynDNS, qu’est-ce que c’est ?
Avant que nous vous expliquions ce qu’est le DynDNS, il faut que vous sachiez que vous utiliserez ce dernier uniquement si votre fournisseur d’accès ne vous permet pas de mettre en place une adresse URL gratuite. Nous pensons là tout particulièrement à Free, qui propose gratuitement ce service. Nous vous encourageons donc à vérifier ce point avant de chercher à mettre en place un service de DynDNS.
DynDNS est un service qui permet à un utilisateur qui possède une IP dynamique de pouvoir malgré cela utiliser une adresse URL. Il permet donc de donner un DNS (qui associe une IP à une adresse URL), à une adresse dynamique (DynamiqueDNS).
DynDNS est en quelque sorte l’acteur historique.
Cependant, depuis quelque temps DynDNS ne semble plus gratuit. C’est pourquoi nous vous conseillons plutôt l’utilisation de http://noip.com. Ce site fourni de nombreux services, parmi lesquelles un service de mail anonyme, et surtout un service de DynDNS.
Comment DynDNS peut-il connaître notre adresse ?
À chaque redémarrage de votre box, ou à chaque fois qu’elle changera d’adresse, elle enverra une requête à No-IP. Grâce à cette requête, No-IP va mettre à jour l’adresse IP correspondant à votre box dans sa base de données.
Voici encore un petit schéma pour que vous vous fixiez bien l’image (je suis très schéma aujourd’hui) !
Comment se fait la redirection DynDNS ?
Quand un utilisateur tentera d’accéder à votre adresse URL, c’est en fait à un serveur de No-IP qu’il viendra accéder (d’ailleurs, vous pouvez voir que votre adresse est du type *.no-ip.*, cela signifie que votre domaine est en fait un sous-domaine de no-ip.*).
En réaction, No-IP redirigera la requête du client sur l’IP liée à votre URL dans sa base.
Et comme c’est le jour des schémas, voici une petite illustration de ce comportement, combiné au comportement de port forwarding de la box.
Schéma du traitement d’une requête vers une adresse DynDNS, avec le port forwading activé vers la raspberry.
C’est bon, vous savez maintenant ce qu’est le DynDNS, il ne nous reste plus qu’à le mettre en place.
Mise en place du DynDNS
Dans un premier temps, nous allons récupérer une adresse URL auprés de noip.com, puis mettre en place le service de DynDNS sur votre box.
Dans un premier temps, rendez-vous sur le site http://noip.com.
Puis, cliquez sur la partie DNS (surlignée en rouge sur l’image si dessus).
Vous arrivez alors sur une page proposant plusieurs offres. Choisissez la colonne Free DNS, et cliquez sur « Sign Up ».
Colonne de l’offre gratuite de noip.com, le bouton signup est des plus discrets (il est ici surligné en rouge).
Une fois que vous avez cliqué sur Signu Up (surligné en rouge là encore), vous êtes renvoyé sur un formulaire d’inscription.
Remplissez-le, puis cliquez en bas sur « Free Sign Up » (n’oubliez pas de décocher la case à droite si vous ne voulez pas recevoir les mails de la newsletter).
Le formulaire d’inscription est relativement cours, mais il faut faire très attention lors de son remplissage. Notamment pour le champs « Hostname » (ce dernier semble avoir un bug sur Google Chrome, et le select qui contient l’extension sort du formulaire).
Le champ « Hostname » correspond à l’url qui sera utilisée pour accéder à votre Raspberry Pi.
Vous allez recevoir un mail d’activation. Une fois ce dernier validé, connectez vous sur votre compte.
Vous allez avoir un autre formulaire vous demandant des infos complémentaires. Remplissez-le. Vous avez maintenant un compte noip.com parfaitement opérationnel.
Il ne vous reste plus qu’à configurer votre box pour qu’elle soit reliée à ce compte.
Pour cela, il va de nouveau falloir accéder à l’interface de votre box, puis à une section qui sera probablement définie comme « DynDNS ».
Une fois ceci fait, choisissez l’utilisation de No-IP, puis renseignez comme nom d’hôte l’adresse « Hostname » que vous aviez définie sur noip.com, ainsi que les identifiants du compte noip.com.
Votre box est maintenant liée au service DynDNS de noip.com. Le déploiement de l’adresse peut prendre un peu de temps.
Voilà, vous avez désormais un serveur web accessible depuis l’extérieur. Il ne vous reste plus qu’à transférer les fichiers de votre site web dans le dossier « /var/www », et votre système Raspbian inondera le monde de ses petits octets !
Vous n’avez plus qu’à faire du référencement, mais là on ne peux rien pour vous, il va vous falloir faire un peu de lecture, et allez faire un tour sur les forums SEO et les annuaires.
The post Mettre en ligne votre serveur web Raspbian, DynDNS et port forwarding appeared first on Raspbian-France.