gnu_linux:raspberry:ip_dynamique_et_dns

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
gnu_linux:raspberry:ip_dynamique_et_dns [2021/11/18 11:13] – créée fategnu_linux:raspberry:ip_dynamique_et_dns [2023/08/08 14:00] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== IP dynamique et DNS ====== ====== IP dynamique et DNS ======
  
-J’ai depuis quelques temps maintenant un Raspberry pi, qui se trouve chez moi, et sur lequel je souhaite installer un logiciel de backup et d’autres trucs. Il faut donc que mon Raspberry soit accessible depuis internet. Le souci est que je suis chez Orange et j’ai donc une IP dynamique (merci Orange…).+J’ai depuis quelque temps maintenant un Raspberry pi, qui se trouve chez moi, et sur lequel je souhaite installer un logiciel de backup et d’autres trucs. Il faut donc que mon Raspberry soit accessible depuis internet. Le souci est que je suis chez Orange et j’ai donc une IP dynamique (merci Orange…).
  
 Il existe des sites comme DynDNS ou No-IP qui propose de lier l’IP de votre box à un sous-domaine chez eux afin de connaitre facilement votre IP. Mais je préfère utiliser un système que j’héberge moi-même plutôt que d’utiliser un service tiers. Il existe des sites comme DynDNS ou No-IP qui propose de lier l’IP de votre box à un sous-domaine chez eux afin de connaitre facilement votre IP. Mais je préfère utiliser un système que j’héberge moi-même plutôt que d’utiliser un service tiers.
Ligne 23: Ligne 23:
 <code bash>dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST iprasp</code> <code bash>dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST iprasp</code>
  
-  * -a HMAC-SHA512 : indique l’algorithme utilisé pour le hachage, SHA-512 qui fait parti de la famille SHA2+  * -a HMAC-SHA512 : indique l’algorithme utilisé pour le hachage, SHA-512 qui fait partie de la famille SHA2
   * -b 512 : indique le nombre de bit de la clé, 512 ici.   * -b 512 : indique le nombre de bit de la clé, 512 ici.
-  * -n HOST : j’ai pas vraiment compris la différence entre tous les choix possible de -n (USER, ZONE, ENTITY, etc) mais dans notre cas il faut choisir HOST.+  * -n HOST : j’ai pas vraiment compris la différence entre tous les choix possibles de -n (USER, ZONE, ENTITY, etc) mais dans notre cas il faut choisir HOST.
  
 A la fin de la commande, on indique le nom de clé. A la fin de la commande, on indique le nom de clé.
Ligne 55: Ligne 55:
 </code> </code>
  
-Ces lignes servent à indiquer à Bind, le serveur DNS, la clé à utiliser pour sécuriser les échanges. Après “key” il faut bien évidemment indiquer le nom que vous avez utiliser lors de la génération de la clé TSIG. +Ces lignes servent à indiquer à Bind, le serveur DNS, la clé à utiliser pour sécuriser les échanges. Après “key” il faut bien évidemment indiquer le nom que vous avez utilisé lors de la génération de la clé TSIG. 
-De même, si vous avez utiliser un autre algorithme que HMAC-SHA512, pensez à le modifier.+De même, si vous avez utilisé un autre algorithme que HMAC-SHA512, pensez à le modifier.
  
 Ouvrez le fichier /etc/bind/named.conf.local et ajoutez les lignes suivantes dans la zone souhaitée (memodugeek.info dans notre exemple) Ouvrez le fichier /etc/bind/named.conf.local et ajoutez les lignes suivantes dans la zone souhaitée (memodugeek.info dans notre exemple)
Ligne 104: Ligne 104:
  
 Pour mettre à jour le DNS, on va utiliser l’utilitaire nsupdate. Pour mettre à jour le DNS, on va utiliser l’utilitaire nsupdate.
-Sur le Raspberry, tapez la commande suivante en indiquant votre clé privé à la place de “cléprivée”+Sur le Raspberry, tapez la commande suivante en indiquant votre clé privée à la place de “cléprivée”
 <code bash>nsupdate -k cléprivée</code>  <code bash>nsupdate -k cléprivée</code> 
 La clé publique (le fichier en .key) doit être situé dans le même dossier. La clé publique (le fichier en .key) doit être situé dans le même dossier.
  
-Ensuite, tapez les commandes suivantes suivi de Entrée+Ensuite, tapez les commandes suivantes suivies de Entrée
 <code bash>zone memodugeek.info</code> <code bash>zone memodugeek.info</code>
 <code bash>update add monip.memodugeek.info. 30 A 0.0.0.0</code> <code bash>update add monip.memodugeek.info. 30 A 0.0.0.0</code>
Ligne 114: Ligne 114:
 La première ligne sert à indiquer quelle zone DNS on va modifier et la seconde indique qu’on va modifier le sous-domaine monip.memodugeek.info afin de le faire pointer vers l’adresse 0.0.0.0. Évidemment ces lignes sont à modifier en fonction de votre nom de domaine. La première ligne sert à indiquer quelle zone DNS on va modifier et la seconde indique qu’on va modifier le sous-domaine monip.memodugeek.info afin de le faire pointer vers l’adresse 0.0.0.0. Évidemment ces lignes sont à modifier en fonction de votre nom de domaine.
  
-Maintenant tapez la commande suivante suivi de Entrée+Maintenant tapez la commande suivante suivie de Entrée
 <code bash>show</code>  <code bash>show</code> 
  
Ligne 132: Ligne 132:
 </code> </code>
  
-Pour mettre à jour le DNS, tapez la commande suivante suivi de Entrée+Pour mettre à jour le DNS, tapez la commande suivante suivie de Entrée
 <code>send</code> <code>send</code>
  
Ligne 156: Ligne 156:
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-# Teste si l'ip publique a été modifiée et met à jour l'enregistrement DNS+# Teste si l'IP publique a été modifiée et met à jour l'enregistrement DNS
 # Utilise la clé TSIG # Utilise la clé TSIG
 # François Grange 2012 # François Grange 2012
Ligne 174: Ligne 174:
 # Fonction de gestion des message d'erreur ou de changement d'IP # Fonction de gestion des message d'erreur ou de changement d'IP
 sortie() { sortie() {
-        # Si erreur de mise à jour, on envoi un mail indiquant qu'il y a eu une erreur avec le fichier d'erreur en pièce-jointe.+        # Si erreur de mise à jour, on envoie un mail indiquant qu'il y a eu une erreur avec le fichier d'erreur en pièce-jointe.
         if [ $1 -eq 1 ]; then         if [ $1 -eq 1 ]; then
                 echo "Une erreur est survenue lors de la mise à jour du DNS. Le message d'erreur se trouve en pièce-jointe." | mail -s "Erreur de mise à jour de $RR" -A $ERR_FILE $ADMIN                 echo "Une erreur est survenue lors de la mise à jour du DNS. Le message d'erreur se trouve en pièce-jointe." | mail -s "Erreur de mise à jour de $RR" -A $ERR_FILE $ADMIN
-        # Si changement d'IP, on envoi un mail avec la nouvelle IP+        # Si changement d'IP, on envoie un mail avec la nouvelle IP
         else         else
                 cat $TMP_FILE | mail -s "Changement d'IP pour $RR La nouvelle IP est $CUR_IP." $ADMIN                 cat $TMP_FILE | mail -s "Changement d'IP pour $RR La nouvelle IP est $CUR_IP." $ADMIN
Ligne 218: Ligne 218:
 </code> </code>
  
-Ce script provient de [[http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/|François Grange]], je l’ai juste modifié un peu à ma sauce et l’ai commenté un peu plus, histoire que les néophyte du bash le comprenne.+Ce script provient de [[http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/|François Grange]], je l’ai juste modifié un peu à ma sauce et l’ai commenté un peu plus, histoire que les néophytes du bash le comprenne.
  
-Tout ce que vous avez besoin de modifier, ce sont les lignes ADMIN, ZONE, RR, LAST_IP_FILE, ERR_FILE, KEY_FILE, TMP_FILE. Voici à quoi correspondent ces variable :+Tout ce que vous avez besoin de modifier, ce sont les lignes ADMIN, ZONE, RR, LAST_IP_FILE, ERR_FILE, KEY_FILE, TMP_FILE. Voici à quoi correspondent ces variables :
   * ADMIN : adresse mail de l’administrateur   * ADMIN : adresse mail de l’administrateur
   * ZONE : nom de domaine principal. Ne pas indiquer le sous-domaine ici.   * ZONE : nom de domaine principal. Ne pas indiquer le sous-domaine ici.
   * RR : le sous-domaine. On récupère le nom de domaine principal via la variable “$ZONE”, vous n’avez donc besoin de modifier que le début du sous-domaine.   * RR : le sous-domaine. On récupère le nom de domaine principal via la variable “$ZONE”, vous n’avez donc besoin de modifier que le début du sous-domaine.
-  * LAST_IP_FILE, ERR_FILE, KEY_FILE, TMP_FILE : chemin complet, respectivement, du fichier de la dernière IP envoyée, du fichier d’erreur, de la clé privée et du fichier de log temporaire. J’ai mis tous ces fichiers dans mon home car je souhaite que ce soit mon utilisateur qui exécute ce script mais vous pouvez mettre ces fichiers là où vous le souhaitez (il faut quand même que l’utilisateur qui va exécuter le script y ait accès). Ces fichiers seront créés lors de l’exécution du script, pas besoin de les créer vous-même.+  * LAST_IP_FILE, ERR_FILE, KEY_FILE, TMP_FILE : chemin complet, respectivement, du fichier de la dernière IP envoyée, du fichier d’erreur, de la clé privée et du fichier de log temporaire. J’ai mis tous ces fichiers dans mon home car je souhaite que ce soit mon utilisateur qui exécute ce scriptmais vous pouvez mettre ces fichiers là où vous le souhaitez (il faut quand même que l’utilisateur qui va exécuter le script y ait accès). Ces fichiers seront créés lors de l’exécution du script, pas besoin de les créer vous-même.
  
 Pour résumer, ce script va récupérer l’adresse IP publique, vérifier si elle est différente de la dernière envoyée au serveur DNS et, si c’est le cas, envoyer la nouvelle IP publique au serveur DNS afin qu’il mette à jour le sous-domaine. Une fois la mise à jour faite avec succès, un mail contenant l’ancienne et la nouvelle IP publique sera envoyé à l’admin. Pour résumer, ce script va récupérer l’adresse IP publique, vérifier si elle est différente de la dernière envoyée au serveur DNS et, si c’est le cas, envoyer la nouvelle IP publique au serveur DNS afin qu’il mette à jour le sous-domaine. Une fois la mise à jour faite avec succès, un mail contenant l’ancienne et la nouvelle IP publique sera envoyé à l’admin.
Ligne 230: Ligne 230:
 Si une erreur est détectée lors de la mise à jour, un mail sera envoyé à l’admin avec le fichier d’erreur en pièce jointe. Si une erreur est détectée lors de la mise à jour, un mail sera envoyé à l’admin avec le fichier d’erreur en pièce jointe.
  
-Pour récupérer l’adresse IP, je passe par un service maison. Je la récupère grâce à une page php que j’ai uploadée sur le site et qui contient le code suivant :+Pour récupérer l’adresse IP, je passe par un service maison. Je la récupère grâce à une page PHP que j’ai uploadée sur le site et qui contient le code suivant :
 <code php><?php print $_SERVER['REMOTE_ADDR'] ?></code> <code php><?php print $_SERVER['REMOTE_ADDR'] ?></code>
  
Ligne 236: Ligne 236:
 <code bash>wget -q -O - ipv4.memodugeek.info</code>  <code bash>wget -q -O - ipv4.memodugeek.info</code> 
 Vous pouvez soit utiliser la page hébergée sur mon serveur, soit en créer une et l’héberger sur votre serveur. Vous pouvez soit utiliser la page hébergée sur mon serveur, soit en créer une et l’héberger sur votre serveur.
-Si vous avez besoin de récupérer l'IP publique IPV6, vous pouvez utilisez la commande suivante+Si vous avez besoin de récupérer l'IP publique IPV6, vous pouvez utiliser la commande suivante
 <code bash>wget -q -O - ipv6.memodugeek.info</code>  <code bash>wget -q -O - ipv6.memodugeek.info</code> 
  
Ligne 249: Ligne 249:
 Le script va s’exécuter toutes les 10 minutes. Le script va s’exécuter toutes les 10 minutes.
  
-Comme je le disais plus tôt, ce script envoi des mails, il faut donc que votre Raspberry puisse envoyer des mails. Si ce n’est pas le cas, je vous conseille msmtp qui permet d’envoyer des mails en passant par le serveur smtp de votre choix (le votre ou celui de votre FAI par exemple).+Comme je le disais plus tôt, ce script envoi des mails, il faut donc que votre Raspberry puisse envoyer des mails. Si ce n’est pas le cas, je vous conseille msmtp qui permet d’envoyer des mails en passant par le serveur SMTP de votre choix (le vôtre ou celui de votre FAI par exemple).
  
 Pour l’installer, lancez la commande sudo aptitude install msmtp mailutils mpack . Une fois installé, vous pouvez le configurer en éditant le fichier /etc/msmtprc. Voici à quoi ressemble le mien qui utilise le serveur SMTP installé sur mon serveur OVH : Pour l’installer, lancez la commande sudo aptitude install msmtp mailutils mpack . Une fois installé, vous pouvez le configurer en éditant le fichier /etc/msmtprc. Voici à quoi ressemble le mien qui utilise le serveur SMTP installé sur mon serveur OVH :
Ligne 280: Ligne 280:
  
 [[http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/|http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/]] [[http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/|http://tavie.onsenfout.com/2012/04/04/dns-dynamique-securise-avec-nsupdate-et-bind9/]]
 +
 [[https://jpmens.net/2010/09/28/performing-dynamic-dns-updates-on-your-dns/|https://jpmens.net/2010/09/28/performing-dynamic-dns-updates-on-your-dns/]] [[https://jpmens.net/2010/09/28/performing-dynamic-dns-updates-on-your-dns/|https://jpmens.net/2010/09/28/performing-dynamic-dns-updates-on-your-dns/]]
 +
 [[https://doc.ubuntu-fr.org/msmtp|https://doc.ubuntu-fr.org/msmtp]] [[https://doc.ubuntu-fr.org/msmtp|https://doc.ubuntu-fr.org/msmtp]]
  
  • gnu_linux/raspberry/ip_dynamique_et_dns.1637233990.txt.gz
  • Dernière modification : 2023/08/08 14:01
  • (modification externe)