INFOTHEMA

Auteur Sujet: [Auto-Hébergement] Utiliser un nom de domaine avec le Raspberry Pi  (Lu 1701 fois)

Animateur

  • Administrator
  • Hero Member
  • *****
  • Messages: 3689
    • Voir le profil
Utiliser un nom de domaine avec le Raspberry Pi pour le rendre accessible depuis internet.

Le Raspberry Pi est souvent conseillé pour l’auto-hébergement de services, blog, mails, serveurs divers et variés. Mais qui dit hébergement web dit également nom de domaine !

Dans ce tutoriel nous allons donc voir comment acheter un nom de domaine et comment le faire pointer vers notre Raspberry Pi pour le rendre accessible facilement depuis internet !

De quoi avons-nous besoin ?

Pour ce tutoriel nous allons avoir besoin d’assez peu de chose :

    - Un Raspberry Pi fonctionnel et relié à internet avec Raspbian installé.
    - Un budget de quelques euros par an pour acheter un nom de domaine (nous verrons comment un peu plus loin).

Citer
Attention, avant d’aller plus loin soyez bien conscient que ce tutoriel va rendre votre Raspberry Pi accessible depuis TOUT internet.
Si vous avez laissé des mots de passe par défaut, des applications non sécurisées, etc., vous risquez d’être piraté. Assurez-vous d’avoir pris toutes les précautions nécessaires.

Un nom de domaine qu’est-ce que c’est et pourquoi en avons-nous besoin ?

Vous le savez, chez Raspberry Pi FR nous ne sommes pas là pour vous donner une simple recette à suivre, mais plutôt pour vous expliquer comment fonctionnent les choses. Avant de rentrer dans la technique pure et dure, revenons donc un peu sur ce qu’est un nom de domaine et pourquoi ça nous est utile. Si vous connaissez déjà tout ça, passez directement à la partie suivante.

Si vous connaissez un peu internet, vous savez que chaque machine dispose de ce que l’on appelle une adresse IP. Cette adresse IP est unique et permet de distinguer chaque machine des autres et donc de communiquer avec cette seule machine.



On distingue d’ailleurs deux types d’IP, publique et locale. La première vous identifie sur le réseau internet, c’est celle de votre box. La seconde identifie votre ordinateur à l’intérieur de votre réseau local.

Le problème des adresses IP c’est que ce sont des suites de chiffes. C’est simple à traiter pour les ordinateurs mais c’est compliqué à retenir pour les humains !

La solution qui a été trouvée se nomme DNS, pour Domain Name System. Le but, proposer une notation lisible pour les humains : le nom de domaine.

Au final un nom de domaine c’est donc ça, une façon lisible pour les humains d’identifier une adresse IP et donc une machine !

Vous l’aurez compris, si il est techniquement possible de se passer de nom de domaine et d’utiliser uniquement une adresse IP, ce n’est vraiment pas pratique. Nous verrons même un peu plus loin que cela peut se révéler carrément impossible dans certains cas.

Maintenant que nous sommes au point sur ce qu’est un nom de domaine et à quoi ça sert, voyons donc comment nous pouvons en obtenir un !

Comment obtenir un nom de domaine pour votre Raspberry Pi ?

La première étape pour pouvoir utiliser un nom de domaine avec votre Raspberry Pi, ça va logiquement être d’acheter un nom de domaine. Parce que oui, un nom de domaine, ça n’est pas gratuit, ça se vend et ça s’achète.

Rassurez-vous, ce n’est vraiment pas très cher. Le prix des noms de domaine varie surtout selon ce que l’on appelle l’extension, c’est à dire ce qui suit le dernier . dans le nom.

Il existe des extensions plus ou moins connues, plus ou moins connotées et qui inspirent plus ou moins confiance. Et contrairement à ce que l’on pourrait penser, les meilleures extensions ne sont pas forcément les plus chères !

Globalement, pour un nom de domaine classique, comptez 10€ par an maximum.



Si vous hésitez et que vous ne savez pas quelle extension choisir, restez simple : .fr, .com, .info ou .org.

Maintenant que la question du prix est réglée, il reste à savoir où acheter notre nom de domaine. Et bien, un nom de domaine s’achète auprès de ce que l’on appelle un « registrar », ou « Registraire de nom de domaine » en bon français.

Il existe de nombreux registrar en France ou dans le monde et les prix sont très similaires. Ce qui fera vraiment la différence c’est la qualité de service et la simplicité de gestion.

Pour moi il n’y a pas de comparaison, choisissez OVH. L’entreprise est française et vous offrira donc une interface et un support dans un français impeccable, OVH est un des plus gros acteurs européens voir mondiaux et leur interface de gestion est simple.

Par ailleurs, pour la suite de ce tutoriel toutes les étapes à réaliser chez le registrar le seront chez OVH, tout simplement parce que c’est celui que j’utilise au quotidien, y compris pour ce site. Choisir votre nom de domaine chez OVH vous simplifiera donc la vie.

Acheter le nom de domaine

Pour acheter votre nom de domaine, rendez-vous sur le site https://www.ovh.com/fr/domaines/ et rentrez dans le formulaire de recherche le nom de domaine qui vous intéresse.

Vous allez arriver sur une page vous permettant de vérifier la disponibilité du nom de domaine choisi. S’il est disponible, ajoutez le à votre panier, sinon vous allez devoir trouver un autre nom !



La page suivante va vous proposer différentes options pour des offres supplémentaires et autres. Décochez la case « DNS Anycast », qui ne vous servirait à rien, mais cochez en revanche la case « DNSSEC ». Choisissez le niveau de service déjà inclus dans l’offre et passez à la suite.



La page suivante va vous proposer un hébergement web pour compléter votre offre nom de domaine. Comme nous allons faire l’hébergement directement sur notre Raspberry Pi cela ne nous intéresse pas, indiquez donc que vous n’avez pas besoin d’hébergement web et passez à la suite.



Vous arrivez sur la page de récapitulation de votre commande, vérifiez que tout est en ordre et passez à la suite. Vous allez maintenant devoir vous connecter si vous avez déjà un compte OVH, ou en créer un.

Après votre inscription vous allez arriver sur la page de configuration vous permettant de définir les contacts pour les différentes opérations relatives au nom de domaine (je vous laisse mettre les vôtres), mais surtout de paramétrer le serveur DNS à utiliser. Choisissez d’utiliser le « Serveur DNS par défaut », ce qui aura pour effet d’utiliser les serveurs DNS d’OVH.

Passez à la suite, validez les contrats et procédez au paiement.

Il faut maintenant attendre que le nom de domaine soit créé, ce qui prend normalement quelques minutes. Vous pouvez facilement voir si le nom de domaine a été créé en le tapant dans votre navigateur et en rafraîchissant régulièrement la page. Une fois le nom validé vous devriez tomber sur la page « Félicitations ! » de OVH.

Configurer une IP fixe sur le Raspberry Pi et le rendre accessible depuis internet

En attendant que notre nom de domaine soit prêt, nous allons configurer un peu notre Raspberry Pi et notre box.

Nous l’avons vu dans la partie explicative au début du tutoriel, on distingue deux types de réseaux et d’adresses IP, les publiques et les privé(e)s.

Les adresses publiques sont accessibles depuis internet, c’est-à-dire que toute personne connectée à internet peut envoyer une requête à cette adresse, et cette adresse pourra la recevoir.

D’un autre côté, les adresses privées, elles, ne sont accessible qu’à l’intérieur du réseau privé (c’est à dire le réseau interne à votre box et aux appareils qui y sont connectés). Seules les personnes à l’intérieur du réseau privé peuvent envoyer une requête aux autres adresses du réseau privé.

Si nous faisons un schéma, nous obtenons donc quelque chose comme ceci :



On voit que notre Raspberry Pi fait partie de notre réseau privé, cela signifie qu’il n’est pas accessible depuis internet.

Comme notre box est le seul équipement doté d’une IP publique dans notre réseau, elle est la seule qui pourra recevoir des requêtes depuis internet. Nous allons donc devoir la configurer pour qu’elle retransmette les requêtes reçues vers le Raspberry Pi.

Pour ça, nous allons devoir faire deux choses, donner une IP fixe sur le réseau local à notre Raspberry Pi (ça permettra à la box de savoir où le trouver dans le réseau local), et utiliser ce que l’on appelle le port forwarding pour transmettre la requête.

Donner une IP fixe au Raspberry Pi

Comme vous le savez peut-être, chaque équipement connecté à votre box dispose d’une adresse IP locale qui permet de l’identifier à l’intérieur de votre réseau.

Seulement, ces IP peuvent changer à chaque ré-démarrage de la machine, et c’est très gênant quand on souhaite accéder à la raspberry depuis un ordinateur, par exemple en SSH.

Dans ce tutoriel nous allons voir comment faire pour donner une IP locale fixe à notre Raspberry Pi et ainsi éviter de la chercher à chaque fois.

Assigner une IP statique à la Raspberry Pi

Dans un premier temps connectez vous à votre pi, soit physiquement soit par SSH, et ouvrez-y un terminal.

Nous allons commencer par trouver l’adresse IP locale actuelle de votre Raspberry Pi. Pour cela, tapez une des deux commandes suivantes (adaptez selon votre cas) :

#Si la raspberry pi est connectée à votre box en ethernet
ip route | grep eth0

#Sinon si la pi est connectée en wifi
ip route | grep wlan0

Vous devriez obtenir un retour ressemblant un peu à ça :

default via 192.168.0.1 dev wlan0 src 192.168.0.101 metric 303
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.101 metric 303

Notez vous ce retour de côté afin de pouvoir y revenir facilement.

Ceci fait, ouvrez le fichier /etc/dhcpcd.conf avec nano (ou un autre éditeur texte, peu importe), rendez-vous à la fin et ajoutez les lignes ci-dessous, en remplaçant :

    wlan0 par eth0 si vous êtes connecté en Ethernet.
    192.168.0.101/24 par l’adresse suivant src dans la commande précédente, suivie du /XX après la première IP.
    192.168.0.1 par l’adresse suivant via.

interface wlan0
static ip_address=192.168.0.101/24
static routers=192.168.0.1

Qu’est-ce que ça fait tout ça ? Et bien tout simplement, dans notre exemple, ça indique à la Raspberry Pi que nous voulons :

    - Que son adresse IP pour la connexion Wi-Fi dans le réseau local soit statique, c’est à dire toujours la même, et que ce soit 192.168.0.101, avec le masque de sous-réseau /24
    - Qu’elle doit utiliser comme routeur la machine à l’adresse 192.168.0.1, c’est-à-dire votre box.

Pour info, vous pouvez tout à fait choisir une autre adresse que celle suivant src, les seules contraintes sont de rester dans le bon masque de sous réseau (/24 veut dire modifier uniquement le dernier groupe) et de choisir une adresse qui ne soit pas déjà utilisée par une autre machine.
Nous avons choisi d’utiliser l’adresse actuelle de la Raspberry Pi puisque nous sommes sûr qu’aucune autre machine ne l’utilise.

Il ne vous reste qu’à redémarrer votre Raspberry Pi pour appliquer la modification et vérifier qu’elle a toujours accès à internet.

Après chaque redémarrage l’IP de votre Raspberry Pi restera toujours celle que vous avez définie


Activer la redirection de port vers le Raspberry Pi

Maintenant que nous avons fixé l’IP de notre Pi, nous allons devoir configurer la redirection de port (ou port forwarding pour les anglophones) pour transmettre les requêtes reçues par notre box à notre raspberry.

De cette façon, toute requête envoyée sur notre IP publique sera directement envoyée à notre Raspberry Pi.

Rendez-vous dans l’interface d’administration de votre box. Pour ça vous devez vous rendre sur une page particulière avec votre navigateur, la page dépend de votre FAI.

Pour les 4 gros FAI français voici les adresses normalement utilisées, mais si cela ne fonctionne pas consultez directement le manuel de la box qui explique comment accéder à la partie configuration/administration. Parfois l’adresse est notée à côté de la clé réseau de la box.

    Orange : http://192.168.1.1
    SFR : http://192.168.0.1/
    Free : https://subscribe.free.fr/login/, connectez-vous et rendez-vous dans la partie « Ma freebox » puis « Paramétrer mon routeur Freebox ».
    Bouygues : http://192.168.1.254



La suite de la procédure dépend de chaque opérateur car les interfaces varient d’un opérateur à l’autre et d’un modèle de box à un autre. Mais globalement vous allez toujours retrouver les points suivants :

    - Vous devez vous connecter en tant qu’administrateur.
    - Vous devez vous rendre dans la partie configuration de votre routeur.
    - Généralement dans les paramètres avancés.
    - Puis dans la partie transfert de port ou port forwarding.
    - Enfin, ajouter une nouvelle redirection de ports, pour les ports 1 à 65535, c’est-à-dire tous les ports, à la fois en TCP et en UDP, vers l’adresse IP de votre Raspberry Pi que nous avons définie précédemment.

Citer
Ici nous avons ouvert tous les ports pour des raisons de facilité, idéalement vous ne devriez ouvrir que les ports que vous souhaitez exposer au monde extérieur, ceci afin de réduire les risques d’attaques !

Vous pouvez vérifier que cela fonctionne en essayant de vous connecter à votre raspberry en SSH depuis un périphérique non connecté au réseau (un téléphone en 4G par exemple) et en remplaçant l’IP de votre Pi par votre IP publique.

Et maintenant il ne nous reste plus qu’à faire correspondre notre nom de domaine à notre IP !

Faire pointer le nom de domaine vers l’IP publique du Raspberry Pi avec DynDNS

Maintenant que nous avons un nom de domaine et que notre Raspberry Pi dispose d’une IP publique, il ne nous reste plus qu’à faire pointer le premier vers la seconde.

Pour faire pointer un nom de domaine vers une adresse IP, on ajoute un enregistrement dit de « Type A » dans ce que l’on appelle la « zone DNS » du nom de domaine, qui est une sorte de fichier de configuration permettant de définir le comportement de notre nom de domaine. Sur un serveur « normal », c’est ce que nous aurions fait, mais dans notre cas les choses sont un peu plus compliquées.

Contrairement aux serveurs loués chez un professionnel, les connexions domestiques ont généralement des IPs dynamiques. Pour réduire les coûts et pouvoir plus facilement gérer leur stock d’IPs disponibles les fournisseurs d’accès attribuent souvent une nouvelle IP à votre box à chaque fois que celle-ci est redémarrée.

Conséquence, si nous ajoutions simplement à notre DNS un champ A pointant vers notre IP publique actuelle, au prochain redémarrage/changement d’adresse de notre box, notre site deviendrait inaccessible. Il nous faut donc un moyen de mettre à jour très régulièrement le champ A vers l’IP publique actuelle de notre box. Bonne nouvelle, pour ça il existe le DDNS ou DynDNS, pour Dynamic DNS.

Dans notre cas nous avons un nom de domaine chez OVH et nous disposons d’un raspberry. Le plus simple pour nous va donc être d’utiliser le service DynDNS d’OVH avec un script hébergé sur le pi. Vous allez voir, ce n’est pas bien compliqué !

Configurer le DynDNS OVH

Pour commencez, connectez vous à votre profil OVH et rendez-vous dans le la partie Web du manager, dans la colonne de gauche cliquez sur « Domaines », puis sur votre nom de domaine pour arriver sur la page de gestion.



Rendez-vous maintenant dans l’onglet « Zone DNS », cherchez un enregistrement de type A, et supprimez le.

Ensuitez, allez dans l’onglet DynHost, et cliquez sur « Gérer les accès » puis sur « Créer un identifiant ». Vous allez avoir un formulaire avec 4 champs à remplir :



    - Suffixe de l’identifiant : Rentrez ce que vous voulez.
    - Sous-domaine : Rentrez *, ce qui validera tous les sous-domaines possibles, y compris l’absence de sous domaine.
    - Mot de passe & Confirmation : Choisissez un mot de passe solide, il sera utilisé par le script pour autoriser la modification de l’IP.

Une fois l’identifiant créé, cliquez sur le bouton de retour et sur « Ajouter un DynHost ». Cette fois vous devrez remplir deux champs :



    - Sous-domaine : Laissez le vide pour utiliser le nom de domaine global. Si vous souhaitez utilisez un sous-domaine vous pouvez le remplir avec la sous-partie de votre choix.
    - IP actuelle : Rentrez votre IP publique actuelle, vous pouvez la trouver ici.

Maintenant que nous avons configuré le DynHost sur OVH, nous allons pouvoir créer le script qui sera utilisé par la Raspberry Pi pour mettre à jour l’IP.

Configurer le Raspberry Pi pour utiliser le DynHost OVH


Il existe plusieurs façon de mettre à jour un DynDNS. Dans notre cas nous allons créer un script qui sera exécuté toutes les 5 minutes, récupérera notre IP publique et enverra une requête à OVH pour mettre à jour l’IP du nom de domaine.

Pour cela sur notre raspberry nous allons commencer par télécharger le script dyndns.sh dans le dossier /usr/local/sbin et lui donner les droits nécessaires pour qu’il soit lisible et exécutable uniquement par l’administrateur :

sudo wget https://raw.githubusercontent.com/RaspbianFrance/dyndnsovh/master/dyndns.sh -O /usr/local/sbin/dyndns.sh
sudo chmod 700 /usr/local/sbin/dyndns.sh

Nous allons maintenant modifier le script pour y renseigner nos propres réglages. Pour cela, ouvrez le script en tant que root avec nano en lançant la commande suivante :

sudo nano /usr/local/sbin/dyndns.sh
Dans le fichier, cherchez les lignes suivantes :

DYNHOST_ID=''
DYNHOST_PASSWORD=''
DOMAIN_NAME=''

Et pour chacune de ces lignes, entrez entre les ' les informations suivantes :

    DYNHOST_ID : L’identifiant DynHost que vous avez créé chez OVH (c’est la chaine au format votrenomdedomaine.fr-xxxx).
    DYNHOST_PASSWORD : Le mot de passe que vous aviez défini pour l’identifiant DynHost.
    DOMAIN_NAME : Votre nom de domaine (avec son sous-domaine si jamais vous en avez défini un sous domaine plutôt que d’utiliser le domaine global).

Enregistrez les modifications et vérifiez que le script fonctionne bien en lançant la commande ci-dessous :

sudo /usr/local/sbin/dyndns.sh
Vous devriez avoir un retour ressemblant à nochg 91.130.39.102 ou good 91.130.39.102, avec votre IP publique à la place. Ces deux retours indiquent une IP déjà à jour ou une mise à jour réussie.

Il ne nous reste plus désormais qu’à faire en sorte que le script se lance toutes les 5 minutes. Pour cela rien de plus simple, nous allons utiliser la crontab, un logiciel tournant en tâche de fond sur Linux et capable d’exécuter régulièrement d’autres scripts.

Pour ça, lancez la commande :

sudo crontab -e
Si vous la lancez pour la première fois, vous devrez sans-doute choisir un éditeur de texte à utiliser, prenez celui qui vous convient (par défaut nano).

Rendez-vous à la fin du fichier et ajoutez sur une nouvelle ligne :

*/5 * * * * /usr/local/sbin/dyndns.sh > /dev/null 2>&1[code]

Enregistrez les modifications, et voilà, l’adresse IP vers laquelle votre nom de domaine pointe sera mise à jour toutes les 5 minutes.
Membre de l'APRIL (www.april.org) / Membre du bureau Association "Debian Facile"  (https://debian-facile.org)// Membre du FabLab de Lannion (www.fablab-lannion.org)