mercredi 2 novembre 2016

DYNDNS raspberrry accès par internet

Principe de l’adressage IP dynamique

clip_image001Regardons tout d’abord ce qui se passe quand vous souhaitez vous connecter au Raspberry Pi qui est chez vous, depuis un client (PC, smartphone, tablette…) connecté à Internet. Situé dans le réseau local connecté à votre Box ou routeur, votre Raspberry Pi a une adresse appartenant au réseau local de votre domicile (par exemple @IP Raspberry Pi = 192.168.1.23). Cette adresse dite privée n’est pas routable sur Internet. Votre FAI fournit à votre Box une adresse publique (@IP Publique) qui est celle que votre client (PC, smartphone…) pourra contacter.

Certains opérateurs changent régulièrement cette adresse IP attribuée à votre Box. Il faut donc régulièrement vérifier l’adresse de la Box et modifier l’adresse à laquelle se connecte votre client sur Internet.

Le service de DNS dynamique de No-IP

Description du service

No-IP, comme d’autres services du même genre (DynDNS, Xooty…) offre un service de DNS dynamique. Un programme tourne sur le Raspberry Pi et envoie régulièrement au serveur de No-IP l’adresse publique de votre Box. Vous choisissez un nom de domaine du genre monraspberrypi.ddns.net (pas celui-là, il est déjà pris  ) et le serveur met à jour automatiquement l’adresse de votre Box. Quand vous souhaitez vous connecter depuis votre smartphone, vous tapez toujours monraspberrypi.ddns.net et vous arrivez sur le RasPi qui est chez vous.

Il faudra simplement indiquer que les requêtes arrivant sur la Box depuis Internet doivent être redirigées vers le Raspberry Pi (Port forwarding).

No-IP offre gratuitement la gestion de 3 hôtes (par compte, mais qui vous empêche d’en ouvrir plusieurs ?). Au delà, le service devient payant. Pour ces 3 hôtes, le choix des adresses est limité et il faut renouveler le compte tous les mois (en saisissant un captcha) ce qui représente un faible investissement en temps par rapport au service rendu.

Je vous propose de vous inscrire pour la version gratuite de No-IP.

Ouvrir un compte chez No-IP

La première chose à faire pour utiliser les services de No-IP, c’est d’ouvrir un compte chez eux.

Voici les étapes à réaliser pas à pas pour cette inscription :

====== Traduction d’après la page Getting started ======

Vous essayez de mettre en place un site web, un serveur FTP, un serveur de messagerie ou tout autre type de service en ligne que vous voulez mettre à disposition sur Internet ? Votre FAI ne vous attribue qu’une adresse IP dynamique (qui change de temps en temps)  et n’est pas fixe ? Voici les étapes à suivre pour vous inscrire en ligne sur le service DNS dynamique gratuit de No-IP.com. Vous pourrez ainsi publier sur Internet vos serveurs depuis votre domicile ou votre entreprise, sans avoir une adresse IP statique.

Étape 1: Créer un compte

clip_image002Pour créer un compte No-IP.com suffit de cliquer sur le lien « Sign Up » (Inscription) en haut de la page ou de cliquer ici. Remplissez les champs nécessaires dans le formulaire de création de compte. Notez que les Conditions générales d’utilisation de No-IP imposent que vos coordonnées soient valides. Tous les comptes sur lequel No-Ip constate des informations incomplètes ou frauduleuses seront clos.

Une fois que vous avez rempli les informations requises et accepté les conditions d’utilisation, cliquez sur le bouton « Free Sign Up » (Inscription gratuite) en bas de la page.

Étape 2: Confirmez votre compte

Une fois que vous avez soumis vos informations de compte dans le formulaire pour vous inscrire, vous recevrez un e-mail de confirmation à l’adresse que vous avez indiquée. Vous aurez besoin pour confirmer la création de ce compte de retrouver l’e-mail de No-IP.com. Le courriel contient un lien sur lequel vous devrez cliquer pour confirmer la création du compte. Si vous avez un mail chez Yahoo ou Hotmail -et certains autres services de messagerie- il est possible que le mail de confirmation soit dans les SPAM. Vérifiez bien votre boîte à lettres.

Étape 3: Connectez vous à votre compte

clip_image003Maintenant que vous avez validé votre compte, vous pouvez vous connecter à No-IP.com. Sur le haut de la page d’accueil No-IP, cliquez sur « Sign In » (Connexion), à droite en haut de la page. Vous verrez alors une zone de saisie pour entrer votre adresse e-mail ou votre nom d’utilisateur et votre mot de passe. Entrez les informations que vous avez utilisées lors de la création de votre compte puis cliquez sur « Sign In » (Connexion).

Étape 4: Ajouter un hôte ou de domaine à votre compte

Vous devriez maintenant être connecté(e) à la section des membres inscrits à No-IP.com. Lorsque vous vous êtes inscrit à No-IP un nom d’hôte a été créé automatiquement afin que vous l’utilisiez pour vous connecter à votre serveur. Si vous le souhaitez, vous pouvez créer un autre nom d’hôte en suivant les étapes ci-dessous.

Un nom d’hôte est utilisé en remplacement de votre adresse IP à chaque fois que vous voulez vous connecter à un de vos service en ligne. Les noms d’hôtes prennent la forme  nom_d_hote.nom_de_domaine.com. Ils sont donc strictement identiques à ceux utilisés dans les URL pour surfer sur le web…

Par exemple, si vous créez un serveur web, et que vous vouliez vous connecter à votre serveur à l’aide d’un navigateur Web, vous saisissez http://nom_d_hote.nom_de_domaine.com dans la barre d’adresse. Les noms d’hôtes peuvent être utilisés pour bien d’autres choses. Vous pouvez également utiliser le même nom d’hôte, sans http://, pour vous connecter à votre ordinateur de bureau à distance en utilisant un logiciel comme Windows Remote Desktop.

Vous souhaitez lancer un serveur FTP ? Vous pouvez utiliser un nom d’hôte No-IP pour cela également. Soit en mettant le nom d’hôte directement dans votre client FTP ou, si votre navigateur le prend en charge, ftp://nom_d_hote.nom_de_domaine.com dans la barre d’adresse du navigateur. Vous devriez être en mesure d’établir une connexion de cette façon aussi.

clip_image004

Pour ajouter un hôte à votre compte, cliquez sur le lien « Add Host » (Ajouter des hôtes) dans le menu « Hosts/Redirects« . Cela fera apparaître la page Add a Host (Ajouter un hôte).

clip_image005Vous êtes prêt à définir les informations relatives à votre nom d’hôte ? Allez, on s’y jette ! Voici les informations qui vous permettront de répondre aux questions de cet écran :• Saisissez le nom d’hôte dans la zone Hostname. C’est un nom de votre choix, dont vous vous souviendrez facilement. Si vous choisissez un nom qui est déjà utilisé, une erreur sera générée et vous devrez alors essayer un nom d’hôte différent. (hihi vous ne pourrez pas me piquer monraspberrypi…)

• Choisissez le type d’hôte dans Host Type. Le choix par défaut, DNS Host A, est généralement le bon. N’essayez pas de choisir l’un des autres types, sauf si vous essayez de résoudre un problème particulier qu’un enregistrement DNS de type A ne pourrait pas résoudre. Si votre FAI bloque le port 80 par exemple, et que vous essayez de lancer un serveur web ou un autre service sur le port 80, vous pouvez choisir Port 80 Redirect (à ce stade, vous serez invité à spécifier le port à utiliser pour la redirection). Si vous ne faites pas tourner de serveur web, ne choisissez surtout pas cette option, car elle vous empêchera probablement de vous connecter correctement.

• Dans le champ IP Address : vous devriez déjà voir apparaître votre adresse IP actuelle. Si vous souhaitez définir l’adresse IP de l’hôte à une autre adresse que votre emplacement actuel, vous pouvez entrer manuellement cette adresse maintenant.

• Les deux options suivantes (Assign to Group et Enable Wildcards) ne sont pas utilisés pour la configuration de base du compte et nous n’allons pas nous occuper d’elles dans cet article.

• Lorsque vous avez rempli les informations pour votre nouveau nom d’hôte, relisez pour être sûr que tout est correct, cliquez ensuite simplement sur le bouton « Add Host » en bas de la page pour enregistrer ces informations. (Notez ou faites une copie d’écran, au cas où…)

Si vous souhaitez utiliser No-IP pour gérer des hôtes et/ou exécuter des fonctions de DNS dynamiques pour votre propre nom de domaine (votre_nom.com), vous pouvez ajouter un domaine au système en sélectionnant « DNS Host » près de la barre bleu foncée en haut, puis cliquez sur « Add My Domain » (Ajouter mon domaine). Dans ce cas il vous faudra passer à la version payante…

Étape 5: Un adressage dynamique pour votre hôte

Maintenant que vous avez ajouté un hôte ou un domaine sur votre compte, il faut régler le problème d’adresse IP dynamique (Si votre FAI vous attribue une adresse IP statique, vous pouvez passer à l’étape 6).

clip_image006Si vous avez une adresse IP dynamique, vous devrez installer le Dynamic Update Client (client de mise à jour dynamique) de No-IP (DUC). C’est un logiciel gratuit disponible dans la section téléchargements du site. Des instructions détaillées pour l’installation des versions Windows et Linux du logiciel DUC sont disponibles.

Après l’installation du client DUC, assurez-vous de le configurer avec l’adresse e-mail et mot de passe que vous avez utilisés pour vous connecter à ce site. Tant que le logiciel No-IP est correctement configuré et fonctionne, votre nom d’hôte pointera toujours vers l’adresse IP dynamique de votre ordinateur, même lorsque le FAI la modifie.

Etape 6: Configurez votre routeur

Si vous utilisez un routeur (une Box) pour vous connecter à Internet et/ou un pare-feu sur votre ordinateur, vous devrez vous assurer qu’il est configuré pour diriger le flux provenant d’Internet vers la machine de destination sur votre réseau. Ceci se fait en utilisant une fonction du routeur (de la box) appelée Port Forwarding. Les ports couramment utilisés sont le port 80 pour un serveur web, le port 21 pour le FTP et le port 25 pour la messagerie SMTP. Ne configurez que les ports que vous devez absolument utiliser pour évitez les attaques venant d’Internet.

Les configurations de base sont documentées en (anglais) dans la documentation du site No-IP. Mais pour plus d’informations concernant votre matériel ou logiciel particulier, il faudra consulter la documentation de votre équipement. Vu le nombre de combinaisons possibles, il est difficile de fournir des instructions détaillées pour chaque cas rencontré… Ne vous lancez pas dans ces configurations sans une connaissance minimum en réseau…Afin de vérifier que votre routeur et votre pare-feu sont configurés correctement, vous pouvez visiter le site Web  www.portchecktool.com ou sur www.canyouseeme.org. Votre adresse IP est renseignée automatiquement, indiquez le port à tester et cliquez sur le bouton Check Your Port :

clip_image007

Étape 7: Publiez vos services

Une fois la configuration ci-dessus terminée, et si vous avez obtenu un résultat positif de PortCheckTools ou de CanYouSeeMe, vous pouvez maintenant démarrer vos services et répondre aux requêtes à l’aide de l’hôte ou du domaine que vous avez créé !

Utiliser le client No-IP de votre routeur

L’objectif est de communiquer votre adresse IP publique à No-IP. Ce peut être fait également directement par le routeur, si celui-ci intègre un client No-IP. J’utilise un routeur TP-Link  (Modèle TD-W8980 : N600 Wireless Dual Band Gigabit ADSL2+ Modem Router) qui intègre ce client (ainsi que celui de DynDNS). Dans ce cas, il suffit de configurer le client du routeur et il n’y aura pas de client à installer sur votre Raspberry Pi.

clip_image008

Installer le client No-IP sur votre Raspberry Pi

Bon, votre Box est configurée. Il va falloir maintenant installer le client sur votre Raspberry Pi. On s’y jette ?

sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

pi@raspberrypi ~ $ sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

--2014-07-08 04:29:12--  http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Résolution de www.no-ip.com (www.no-ip.com)... 8.23.224.110

Connexion vers www.no-ip.com (www.no-ip.com)|8.23.224.110|:80...connecté.

requête HTTP transmise, en attente de la réponse...301 Moved Permanently

Emplacement: http://www.noip.com/client/linux/noip-duc-linux.tar.gz [suivant]

--2014-07-08 04:29:13--  http://www.noip.com/client/linux/noip-duc-linux.tar.gz

Résolution de www.noip.com (www.noip.com)... 8.23.224.107

Connexion vers www.noip.com (www.noip.com)|8.23.224.107|:80...connecté.

requête HTTP transmise, en attente de la réponse...200 OK

Longueur: 134188 (131K) [application/x-gzip]

Sauvegarde en : «noip-duc-linux.tar.gz»

100%[======================================>] 134 188      132K/s   ds 1,0s

2014-07-08 04:29:15 (132 KB/s) - «noip-duc-linux.tar.gz» sauvegardé [134188/134188]

Il faut maintenant extraire l’archive :

sudo tar vzxf noip-duc-linux.tar.gz

pi@raspberrypi ~ $ sudo tar vzxf noip-duc-linux.tar.gz

./._noip-2.1.9-1

noip-2.1.9-1/

noip-2.1.9-1/._binaries

noip-2.1.9-1/binaries/

noip-2.1.9-1/binaries/._noip2-i686

noip-2.1.9-1/binaries/noip2-i686

noip-2.1.9-1/binaries/._noip2-x86_64

noip-2.1.9-1/binaries/noip2-x86_64

noip-2.1.9-1/._COPYING

noip-2.1.9-1/COPYING

noip-2.1.9-1/._debian.noip2.sh

noip-2.1.9-1/debian.noip2.sh

noip-2.1.9-1/._gentoo.noip2.sh

noip-2.1.9-1/gentoo.noip2.sh

noip-2.1.9-1/._LEEME.PRIMERO

noip-2.1.9-1/LEEME.PRIMERO

noip-2.1.9-1/._LIESMICH.ERST.deutsch

noip-2.1.9-1/LIESMICH.ERST.deutsch

noip-2.1.9-1/._LISEZMOI.ENPREMIER

noip-2.1.9-1/LISEZMOI.ENPREMIER

noip-2.1.9-1/._mac.osx.startup

noip-2.1.9-1/mac.osx.startup

noip-2.1.9-1/._Makefile

noip-2.1.9-1/Makefile

noip-2.1.9-1/._noip2.c

noip-2.1.9-1/noip2.c

noip-2.1.9-1/._README.FIRST

noip-2.1.9-1/README.FIRST

noip-2.1.9-1/._README.FIRST-SWE

noip-2.1.9-1/README.FIRST-SWE

noip-2.1.9-1/._README.FIRST.FRANCAIS

noip-2.1.9-1/README.FIRST.FRANCAIS

noip-2.1.9-1/._README.FIRST.ITALIANO

noip-2.1.9-1/README.FIRST.ITALIANO

noip-2.1.9-1/._README.FIRST.JAPANESE

noip-2.1.9-1/README.FIRST.JAPANESE

noip-2.1.9-1/._README.FIRST.pt_BR

noip-2.1.9-1/README.FIRST.pt_BR

noip-2.1.9-1/._README.FIRST_PT

noip-2.1.9-1/README.FIRST_PT

noip-2.1.9-1/._redhat.noip.sh

noip-2.1.9-1/redhat.noip.sh

pi@raspberrypi ~ $

Le client se trouve dans le dossier noip-2.1.9-1 :

cd noip-2.1.9-1

On peut maintenant passer à la compilation et à l’installation du client No-IP :

sudo make

pi@raspberrypi ~/noip-2.1.9-1 $ sudo make

gcc -Wall -g -Dlinux -DPREFIX=\"/usr/local\" noip2.c -o noip2

noip2.c: In function ‘dynamic_update’:

noip2.c:1595:6: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]

noip2.c: In function ‘domains’:

noip2.c:1826:13: warning: variable ‘x’ set but not used [-Wunused-but-set-variable]

noip2.c: In function ‘hosts’:

noip2.c:1838:20: warning: variable ‘y’ set but not used [-Wunused-but-set-variable]

pi@raspberrypi ~/noip-2.1.9-1 $

puis :

sudo make install

pi@raspberrypi ~/noip-2.1.9-1 $ sudo make install

if [ ! -d /usr/local/bin ]; then mkdir -p /usr/local/bin;fi

if [ ! -d /usr/local/etc ]; then mkdir -p /usr/local/etc;fi

cp noip2 /usr/local/bin/noip2

/usr/local/bin/noip2 -C -c /tmp/no-ip2.conf

Auto configuration for Linux client of no-ip.com.

Please enter the login/email string for no-ip.com  abcdef1234

Please enter the password for user 'abcdef1234'  ***********

2 hosts are registered to this account.

Do you wish to have them all updated?[N] (y/N)  n

Do you wish to have host [monraspberrypi.ddns.net] updated?[N] (y/N)  y

Do you wish to have host [raspiblog.no-ip.biz] updated?[N] (y/N)  n

Please enter an update interval:[30]

Do you wish to run something at successful update?[N] (y/N)  ^M

New configuration file '/tmp/no-ip2.conf' created.

mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf

pi@raspberrypi ~/noip-2.1.9-1 $

Le client est maintenant installé et configuré, on peut le lancer :

sudo /usr/local/bin/noip2

pi@raspberrypi ~/noip-2.1.9-1 $ sudo /usr/local/bin/noip2

Tester le service

Votre client est opérationnel, vous pouvez vérifiez sur No-IP que l’adresse IP Publique de votre Box/Routeur a bien été mise à jour :

clip_image009Vous voyez ici que les deux hôtes ont la même adresse. Le premier (monraspberrypi est un RasPi, l’autre est le client No-IP de mon routeur…).

Ça Marche !

Automatiser le démarrage du client

Allez en voilà un bout qui est en place. Mais bon, si le Raspberry Pi redémarre… le client noip ne sera pas relancé, il faudra refaire cette opération manuellement.

Nous allons donc automatiser le lancement du client noip, ce qui fait qu’à chaque redémarrage du Raspberry Pi, il reprendra sa fonction de mise à jour de votre adresse IP dynamique.

Il y a de nombreuses façons de gérer le lancement d’une commande au démarrage de Linux. Je vous propose de créer un script d’initialisation dans /etc/init.d et de l’enregistrer en utilisant update-rc.d. De cette façon, l’application est lancée et arrêtée automatiquement lors du démarrage ou à la fermeture du système.

Créer un script dans /etc/init.d

Démarrez nano pour créer un script (je l’appelle noip …) dans le dossier /etc/init.d

sudo nano /etc/init.d/noip

pi@raspberrypi ~/noip-2.1.9-1 $ sudo nano /etc/init.d/noip

Le script qui suit est un exemple basé sur la mise en service du client no-ip [/usr/local/bin/noip], mais vous pouvez bien entendu changer le nom du script ainsi que la commande lancée automatiquement au démarrage ou arrêtée à la fermeture du système.

Saisissez (ou copiez) le script suivant (d’après stuffaboutcode.com) :

#! /bin/sh

# /etc/init.d/noip

### Début des informations d'entête

# Provides:          noip

# Required-Start:    $remote_fs $syslog

# Required-Stop:     $remote_fs $syslog

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Script simple pour démarrer un programme lors du boot

# Description:       D'après www.stuffaboutcode.com ce script va lancer/arrêter un programme lors du démarrage/de la fermeture du système.

### Fin des informations d'entête

# Si vous souhaitez qu'une commande fonctionne en permanence

# ajoutez la sous cette ligne

# Exécution d'un certain nombre de fonctions spécifiques

# à la demande du système

case "$1" in

   start)

      echo "Starting noip"

      # lance l'application que vous souhaitez démarrer

      /usr/local/bin/noip2

      ;;

   stop)

      echo "Arrêt de noip"

      # Met fin à l'application que vous souhaitez arrêter

      killall noip2

      ;;

   *)

      echo "Utilisation : /etc/init.d/noip {start|stop}"

      exit 1

      ;;

esac

exit 0

/!\ ATTENTION : il est important de tester d’abord manuellement votre script et de vous assurer qu’il ne demande pas à l’utilisateur de fournir une réponse (du genre : Appuyez sur « y »). Cela pourrait bloquer indéfiniment le démarrage du Raspberry Pi dans l’attente de la réponse d’un utilisateur … qui n’est pas là !

Rendre le script exécutable

Il faut rendre le script exécutble un script :
sudo chmod 755 /etc/init.d/noip

Tester le script

Puis procéder au test du programme :
sudo /etc/init.d/noip start

Si vous avez déjà lancé manuellement noip vous devriez obtenir ce message :

pi@raspberrypi ~/noip-2.1.9-1 $ sudo /etc/init.d/noip start

Starting noip

pi@raspberrypi ~/noip-2.1.9-1 $ One noip2 process is already active,

and the multiple instance flag (-M) is not set.

Vous pouvez lancer le script noip sans paramètres, vous obtiendrez une aide sur son utilisation. Ensuite testez l’arrêt et le démarrage :

pi@raspberrypi ~/noip-2.1.9-1 $ sudo /etc/init.d/noip

Utilisation : /etc/init.d/noip {start|stop}

pi@raspberrypi ~/noip-2.1.9-1 $ sudo /etc/init.d/noip stop

Arrêt de noip

pi@raspberrypi ~/noip-2.1.9-1 $ sudo /etc/init.d/noip start

Starting noip

pi@raspberrypi ~/noip-2.1.9-1 $

Si ces tests manuels sont concluants, il est possible d’automatiser le lancement de noip en l’intégrant à la séquence de démarrage du système :

Lancer le script automatiquement au démarrage

Pour que votre script s’exécute automatiquement au démarrage du système, exécutez la commande suivante:

sudo update-rc.d noip defaults

pi@raspberrypi ~/noip-2.1.9-1 $ sudo update-rc.d noip defaultsnoip

update-rc.d: using dependency based boot sequencing

usage: update-rc.d [-n] [-f] <basename> remove

update-rc.d [-n] <basename> defaults [NN | SS KK]

update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .

update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]

-n: not really

-f: force

The disable|enable API is not stable and might change in the future.

pi@raspberrypi ~/noip-2.1.9-1 $

Remarque : L’en-tête situé au début du script permet de rendre le script compatible LSB (Linux standards Base). Il fournit des détails sur le script de démarrage et vous ne devriez avoir besoin de changer que le nom du script. Si vous voulez en savoir plus sur la création de scripts LSB pour la gestion des services, voyez http://wiki.debian.org/LSBInitScripts.

Vérifier que le démarrage de noip s’est bien effectué

Redémarrez votre Raspberry Pi :

sudo reboot

Logguez vous, puis vérifiez que noip a bien été lancé au démarrage du système :

ps -ef |grep noip2

pi@raspberrypi ~ $ ps -ef |grep noip2

nobody 2121 1 0 09:01 ? 00:00:00 /usr/local/bin/noip2

pi 2149 2130 0 09:03 pts/0 00:00:00 grep --color=auto noip2

pi@raspberrypi ~ $

Supprimer le script

Si vous voulez supprimer proprement le script de démarrage, exécutez la commande suivante:

sudo update-rc.d -f  noip remove

pi@raspberrypi ~ $ sudo update-rc.d -f noip remove

update-rc.d: using dependency based boot sequencing

insserv: warning: script 'noip' missing LSB tags and overrides

pi@raspberrypi ~ $ sudo ps -ef |grep noip2

nobody 2121 1 0 09:01 ? 00:00:00 /usr/local/bin/noip2

pi 2164 2130 0 09:07 pts/0 00:00:00 grep --color=auto noip2

pi@raspberrypi ~ $

noip2 tourne toujours… Pas d’inquiétude, au prochain redémarrage du Raspberry Pi, le script ne sera plus lancé automatiquement. Si vous souhaitez l’exécuter, il faudra passer par la lancement manuel avec start.

Conclusion

Avec ce script noip, vous allez pouvoir publier vos services (web, ftp…) sur Internet. La plus grande prudence s’impose néanmoins car dès que vous « ouvrez » votre machine sur Internet, vous vous exposez à des attaques.

Ce service gratuit jusqu’à 3 machines permet de publier sur le web des informations recueillies par le Raspberry Pi. Cela peut être particulièrement utile pour des applications de domotique ou de surveillance à distance par exemple.

Aucun commentaire:

Enregistrer un commentaire