Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


3.5 Dynamisches DNS als mcron-Auftrag

Wenn Sie von Ihrem Internetdienstanbieter nur dynamische IP-Adressen bekommen, aber einen statischen Rechnernamen möchten, können Sie einen Dienst für dynamisches DNS (Domain Name System) einrichten (auch bekannt unter der Bezeichnung DDNS (Dynamic DNS)). Dieser ordnet einem festen, „statischen“ Rechnernamen eine öffentliche, aber dynamische (oft wechselnde) IP-Adresse zu. Es gibt davon mehrere Anbieter; im folgenden mcron-Auftrag verwenden wir DuckDNS. Er sollte auch mit anderen Anbietern von dynamischem DNS funktionieren, die eine ähnliche Schnittstelle zum Wechsel der IP-Adresse haben, etwa https://freedns.afraid.org/, wenn Sie Kleinigkeiten anpassen.

So sieht der mcron-Auftrag dafür aus. Statt DOMAIN schreiben Sie Ihre eigene Domain und den von DuckDNS der DOMAIN zugeordneten Token in die Datei /etc/duckdns/DOMAIN.token.

(define duckdns-job
  ;; IP der eigenen Domain alle 5 Minuten aktualisieren.
  #~(job '(next-minute (range 0 60 5))
	 #$(program-file
            "duckdns-update"
            (with-extensions (list guile-gnutls) ;nötig für (web client)
              #~(begin
                  (use-modules (ice-9 textual-ports)
                               (web client))
                  (let ((token (string-trim-both
                                (call-with-input-file "/etc/duckdns/DOMAIN.token"
                                  get-string-all)))
                        (query-template (string-append "https://www.duckdns.org/"
                                                       "update?domains=DOMAIN"
                                                       "&token=~a&ip=")))
                    (http-get (format #f query-template token))))))
         "duckdns-update"
         #:user "nobody"))

Der Auftrag muss in die Liste der mcron-Aufträge für Ihr System eingetragen werden, etwa so:

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