Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


3.5 Tâche mcron pour le DNS dynamique

Si votre FAI (fournisseur d’accès à internet) ne fournit que des adresse IP dynamiques, il peut être utile de mettre en place un service DNS (Domain Name System) dynamique (aussi appelé DDNS (Dynamic DNS)) pour associer un nom d’hôte statique à une adresse IP publique mais dynamique (qui change souvent). Il y a plusieurs services existants qui peuvent être utilisés pour cela ; dans la tâche mcron suivante, nous utilisons DuckDNS. Cela devrait aussi fonctionner avec d’autres services DNS dynamiques qui fournissent une interface similaire pour mettre à jour l’adresse IP, comme https://freedns.afraid.org/, avec quelques petits ajustements.

La tâche mcron est fournie plus bas, où DOMAINE doit être remplacé par votre propre préfixe de domaine, et le jeton fournit par DuckDNS associé à DOMAINE est à ajouter au fichier /etc/duckdns/DOMAINE.token.

(define duckdns-job
  ;; Met à jour l'IP du domaine toutes les 5 minutes.
  #~(job '(next-minute (range 0 60 5))
	 #$(program-file
            "duckdns-update"
            (with-extensions (list guile-gnutls) ;requis par (web client)
              #~(begin
                  (use-modules (ice-9 textual-ports)
                               (web client))
                  (let ((token (string-trim-both
                                (call-with-input-file "/etc/duckdns/DOMAINE.token"
                                  get-string-all)))
                        (query-template (string-append "https://www.duckdns.org/"
                                                       "update?domains=DOMAINE"
                                                       "&token=~a&ip=")))
                    (http-get (format #f query-template token))))))
         "duckdns-update"
         #:user "nobody"))

La tâche a ensuite besoin d’être ajoutée à la liste des tâches mcron de votre système, avec quelque chose comme cela :

(operating-system
 (services
  (cons* (service mcron-service-type
           (mcron-configuration
             (jobs (list duckdns-job ...))))
         ...
         %base-services)))