sokai commented on issue yuliskov/SmartTubeNext#1619
Let’s Encrypt Zertifikat für das Heim-Netz
Inhalt
- 1 Zertifikate von Let’s Encrypt
- 2 Überprüfungs-Prozeduren (Challenges)
- 3 Let’s Encrypt certbot installieren
- 4 Das Zertifikat manuell beantragen
- 5 Die Heimnetz-Domain
- 6 Den DNS TXT-Record erzeugen
- 7 Weiter mit certbot
- 8 Das Zertifikat in omv nutzen
- 9 Automatisierung der DNS-Challenge
- 10 Automatische Zertifikats-Erneuerung
- 11 Fazit
- 12 Nachtrag: crontab und system trigger
- 13 Nachtrag 2: Umzug des certbot
Mit einigen Vorkehrungen lassen sich Let’s-Encrypt-Zertifikate auch für interne Netze nutzen, die nicht vom Internet erreichbar sind.
Zertifikate von Let’s Encrypt
Let’s Encrypt [1] bietet schon seit einigen Jahren kostenlose SSL-Zertifikate für einzelne Domains an. Seit kurzem werden auch Wildcard-Zertifikate ausgestellt, die für alle Subdomains einer Domain gültig sind. Wird ein solches Zertifikat zum Beispiel für *.home.kunz.de ausgestellt, gilt es auch für alle Subdomains, also zum Beispiel auch für hinz.home.kunz.de.
Damit lässt sich relativ einfach ein Zertifikat generieren, dass für alle Server im Heim-Netz gültig ist und nicht - wie ein selbstsigniertes Zertifikat - von Web-Browsern als unsicher markiert wird. Die Let’s-Encrypt-Zertifikate sind allerdings nur jeweils 60 Tage gültig. Deswegen macht es Sinn, die Erneuerung des Home-Zertifikats automatisch ablaufen zu lassen.
Überprüfungs-Prozeduren (Challenges)
Während der Beantragung oder Erneuerung der Zertifikate muss der Let’s Encrypt Server überprüfen, dass die Domain dem Beantrager gehört oder von ihm administriert wird. Dafür gibt es mehrere Möglichkeiten, unter anderem die webroot- und die DNS-Prozedur.
Die webroot Prozedur erwartet eine Seite mit vorgegebenem Inhalt im Wurzel-Verzeichnis des Webservers. Das lässt sich zwar sehr leicht automatisieren, aber zur Überprüfung muss der Server vom Internet aus erreichbarr sein, was im Heimnetz Portweiterleitungen auf dem Internet-Router erforderlich macht.
Bei der DNS-Prozedur muss beim DNS-Server der Zone ein TXT-Record mit vorgegebenem Namen und Inhalt eingestellt werden. Dieser Eintrag wird bei der Beantragung vom Let’s Encrypt Server abgerufen. Dafür muss die Domain selbst nicht erreichbar sein, was die Nutzung für Domains in privaten Netzen sehr vereinfacht. Für Wildcard-Zertifikate ist die DNS-Challenge die einzig mögliche Überprüfungs-Prozedur.
Let’s Encrypt certbot installieren
Zunächst muss auf einem Server im Heimnetz das Let’s Encrypt certbot Paket installiert werden. Bei mir ist dieser Server ein ständig laufender RaspberryPI mit dem Debian-Stretch-basierten NAS-System openmediavault 4 (omv).
Bei Debian Stretch befindet sich das certbot-Paket im stretch-backports-Repository, das bei omv 4 bereits in den Paketquellen eingetragen ist.
$ sudo apt-get install certbot -t stretch-backports
Das Zertifikat manuell beantragen
Jetzt können wir certbot benutzen, um das Zertifikat zu beantragen. Der certonly Schalter bewirkt, dass das Zertifikat nur abgerufen, aber nicht installiert wird. Wildcard-Zertifikate werden nur vom acme-v02 Server ausgestellt, der mit dem server Schalter angegeben werden muss. Unter -d wird die Wildcard-Domain angegeben, für die das Zertifikat ausgestellt werden soll.
Da die einzige unterstützte Prüfungsart die DNS-Challenge ist, muss sie mit preferred-challenges dns ausgewählt werden. Der manual Schalter gibt an, dass der TXT-Record manuell eingetragen wird. Zur Automatisierung später mehr.
# certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -d *.home.kunz.de --email webmaster@kunz.de --preferred-challenges dns --manual Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Obtaining a new certificate Performing the following challenges: dns-01 challenge for home.kunz.de ------------------------------------------------------------------------------- NOTE: The IP of this machine will be publicly logged as having requested this certificate. If you're running certbot in manual mode on a machine that is not your server, please ensure you're okay with that. Are you OK with your IP being logged? ------------------------------------------------------------------------------- (Y)es/(N)o: y ------------------------------------------------------------------------------- Please deploy a DNS TXT record under the name _acme-challenge.home.kunz.de with the following value: dhfjknfhuioOHoihHohoioioih568_nvihUGüj87ui87 Before continuing, verify the record is deployed. ------------------------------------------------------------------------------- Press Enter to Continue
Nachdem man sein Einverständnis mit der Aufzeichnung seiner IP-Adresse erklärt hat, druckt der certbot Namen und Inhalt des TXT-Records aus, der nun beim zuständigen DNS-Zonenverwalter - bei mir FreeDNS - eingetragen werden muss. Dazu öffnen wir ein zweites Terminal.
Die Heimnetz-Domain
Als Heimnetz-Domain wird eine Subdomain einer offiziellen Domain benutzt. Sie wird als Subdomain beim gleichen Provider eingetragen, der auch für die Basis-Domain verantwortlich ist.
Wenn man vorhat, auch vom Internet aus auf Server in der Heim-Domain zuzugreifen, muss man auf die Dienste eines dynDNS-Providers zurückgreifen. Einzelheiten beschreibt der Artikel DynDNS für eine eigene Domain einrichten.
Im folgenden arbeiten wir mit dem DynDNS-Provider FreeDNS, auf den die Namensauflösung bei meinem Domain-Provider delegiert wurde.
Den DNS TXT-Record erzeugen
Nach Anmeldung bei FreeDNS wählen wir aus dem Menü links den Eintrag Dynamic DNS aus und klicken im Titel der Tabelle der DNS-Records auf Add. Als Typ wählen wir TXT aus. Die Domain bleibt bei home.kunz.de. Unter Subdomain wird der geforderte Challenge-Name und unter Destination der Text in doppelten Anführungszeichen eingetragen.
Nach dem Klicken auf Save checken wir per nslookup, ob der TXT-Record schon verfügbar ist, Das kann je nach TTL einige Zeit dauern. Bei FreeDNS steht die TTL fest auf 60 Sekunden, so dass spätestens nach etwa ein bis zwei Minuten der TXT-Record abrufbar sein sollte.
$ nslookup > set type=TXT > _acme-challenge.home.kunz.de Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: _acme-challenge.home.kunz.de text = "dhfjknfhuioOHoihHohoioioih568_nvihUGüj87ui87"
Weiter mit certbot
Jetzt kann im ersten Terminal der certbot mit Return fortgesetzt werden:
Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/home.kunz.de/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/home.kunz.de/privkey.pem Your cert will expire on 2018-09-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le #
Geht alles gut, liegen am Ende Schlüsseldatei und Zertifikat unter /etc/letsencrypt/live/home.kunz.de und können direkt verwendet werden.
Das Zertifikat in omv nutzen
Um das Zertifikat für openmediavault verfügbar zu machen, wählt man im omv-Menü Zertifikate aus, klickt auf den SSL Tab und wählt unter Hinzufügen den Eintrag Importieren aus. Unter Privater Schlüssel wird der Inhalt von privkey.pem und unter Zertifikat der Inhalt von fullchain.pem eingetragen. In’s Kommentarfeld gehört eine möglichst eindeutiger Text, um das Zertifikat später identifizieren zu können.
Zuletzt wählt man unter Allgemeine Einstellungen bei Sichere Verbindung das neue Zertifikat aus und sichert die Einstellungen.
Ab jetzt sollte der Browser die omv-Seite als Sicher markieren, wenn sie mit dem vollständigen Namen, also zum Beispiel mit omv.home.kunz.de, aufgerufen wird.
Dieses Zertifikat können alle Server mit einer Subdomain unter home.kunz.de benutzen; sie werden dann ebenfalls als Sicher eingestuft.
Automatisierung der DNS-Challenge
Das Überprüfungsverfahren der DNS-Challenge kann mit einem Script automatisiert werden. Der manual-auth-hook [2.1] wird aufgerufen, bevor die Überprüfung der Challenge stattfindet. In diesem Script muss der geforderte TXT-Record beim DNS-Provider erzeugt werden.
Für einige, vorwiegend amerikanische DNS-Provider existieren vordefinierte auth-Scripts [2.2]. Für alle anderen muss man das Script selbst erzeugen. Die nötigen Werte wie Name und Inhalt des TXT-Records werden vom certbot als Umgebungsvariablen übergeben [2.1]. Uns interessiert im Moment lediglich die Variable CERTBOT_VALIDATION, in der der erforderliche Inhalt des TXT-Records übergeben wird.
Bei FreeDNS [3] kann der Inhalt eines bestehenden TXT-Records mit folgendem CURL-Kommando geändert werden:
curl -b "dns_cookie=XXXXXXXXXX" -d "type=TXT" -d "subdomain=_acme-challenge" -d "domain_id=0000" -d "data_id=0000" -d "address=%22some_text%22" https://freedns.afraid.org/subdomain/save.php?step=2
Die Variablen data_id, domain_id und dns_cookie müssen aus der FreeDNS Web-Seite abgelesen werden:
- Die data_id findet man unter dem Menueintrag Subdomains im Link zum editieren des TXT-Records.
- Die domain_id steckt auf der gleichen Seite im add Link hinter der Basis-Domain.
- Den Inhalt des DNS-Cookies kann man aus dem dns_cookie für freedns.afraid.org ablesen
(Bei Chrome: chrome://settings/cookies/detail?site=freedns.afraid.org).
Hat man alle Angaben zusammen, kann man die Funktion zunächst auf der Kommandozeile prüfen. Im Erfolgsfalle erzeugt curl dabei keine Ausgabe, sondern kehrt Kommentarlos zum Prompt zurück. Mit nslookup können wir nach ein bis zwei Minuten prüfen, ob der TXT-Record auch propagiert wird:
# nslookup -type=TXT _acme-challenge.home.kunz.de Server: 192.168.2.1 Address: 192.168.2.1#53 Non-authoritative answer: _acme-challenge.home.kunz.de text = "some_text"
Das curl Komando stecken wir nun in das Script freedns-txt.sh, dass der certbot dann als manual-auth-hook benutzen kann:
#!/bin/bash # dns_cookie="xxxxxxxxxxxx" domain_id="0000" data_id="0000" ttl=60 # curl -S -b "dns_cookie=$dns_cookie" -d "type=TXT" -d "subdomain=_acme-challenge" -d "domain_id=$domain_id" -d "data_id=$data_id" -d "address=%22$CERTBOT_VALIDATION%22" https://freedns.afraid.org/subdomain/save.php?step=2 sleep $ttl
Der Schalter -S (oder --silent) bewirkt, dass curl keine Fortschrittsanzeige, wohl aber Fehlernachrichten ausgibt. Am Ende wartet das Script, bis die TTL des (alten) DNS-Eintrags abgelaufen ist, was bei FreeDNS nach 60 Sekunden geschieht.
Automatische Zertifikats-Erneuerung
Das renew-Kommando des certbot wird für einen Test mit dem Pfad zu obigem Script ergänzt und mit --dry-run getestet:
# certbot renew --manual-auth-hook=/root/freedns-txt.sh --dry-run Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/home.kunz.de.conf ------------------------------------------------------------------------------- Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator manual, Installer None Renewing an existing certificate Performing the following challenges: dns-01 challenge for home.kunz.de Waiting for verification... Cleaning up challenges ------------------------------------------------------------------------------- new certificate deployed without reload, fullchain is /etc/letsencrypt/live/home.kunz.de/fullchain.pem ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/home.kunz.de/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.) -------------------------------------------------------------------------------
Wenn alles wie hier funktioniert, kann dieses Kommando nun in die geplanten Aufgaben des omv eingetragen werden, damit täglich überprüft wird, ob das Zertifikat erneuert werden muss.
Die Verteilung und Installation des Zertifikats kann man ebenfalls automatisieren. Mit dem deploy-hook kann man ein Shell-Script angeben, dass nach einer erfolgreichen Zertifikatserneuerung aufgerufen wird. Da mein privater Server-Park aber noch überschaubar ist, verzichte ich im Moment darauf.
Fazit
Mit einem Let’s Encrypt Zertifikat lassen sich mit wenig Aufwand auch Server absichern, die nicht vom Internet erreichbar sind. Die Zertifikats-Erneuerung lässt sich automatisieren. Damit sollten auch im Heimnetz die Zeiten unverschlüsselter Übertragungen vorbei sein.
Nachtrag: crontab und system trigger
Das Debian-Paket certbot enthält schon sowohl einen crontab-Job als auch einen System Trigger, die zwei mal täglich versuchen, das Zertifikat zu erneuern. In meinem Falle läuft das schief, weil certbot lediglich mit
certbot renew -q
aufgerufen wird. Wegen des fehlenden manual-auth-hook scheitert dieser Versuch immer mit einer Fehlermeldung in /var/log/letsencrypt/letsencrypt.log.
Man kann jetzt entwder den Aufruf von certbot im Service certbot und im crontab ändern, oder beide stillegen und weiterhin den crontab-Eintrag im omv benutzen.
Ich habe mich für letzteres entschieden, weil dann alle cron-Jobs an einer Stelle übersichtlich über die omv Web-Oberfläche zu verwalten sind.
Um den crontab-Eintrag zu entfernen, löscht man einfach die Datei /etc/cron.d/certbot. Service und Trigger werden mit folgenden Kommandos entfernt:
systemctl stop certbot systemctl stop certbot.timer systemctl disable certbot systemctl disable certbot.timer systemctl daemon-reload
Jetzt sollte letsencrypt.log sauber bleiben.
Nachtrag 2: Umzug des certbot
[26.11.2018] Vor kurzem war der Umzug des certbot auf einen anderen Server nötig. Dazu wird auf dem neuen Server zunächst das certbot Paket installiert:
apt-get install certbot
Das manual-auth-hook Script wird vom alten Server an die gleiche Stelle (bei mir: /root/freedns-txt.sh) auf dem neuen Server kopiert. Zusätzlich kopiert man die alten Zertifikatsdaten aus /etc/letsencrypt des alten Servers, am einfachsten per tar-Archiv:
cd /etc/letsencrypt tar cfv trans.tar accounts archive csr keys live renewal
Das Archiv trans.tar wird in /etc/letsencrypt des neuen Servers kopiert und entpackt:
cd /etc/letsencrypt tar xvf trans.tar
Falls nicht ohnehin vorhanden, muss noch das beim manual-auth-hook benutzte curl Paket nachinstalliert werden:
apt-get install curl
Jetzt kann man die Automatische Zertifikats-Erneuerung wie oben beschrieben testen und als cron-Job eintragen.
Quellen und Links:
- Let’s Encrypt Homepage: letsencrypt.org
- Certbot Dokumentation: certbot.eff.org/docs/using.html
- FreeDNS Homapage: freedns.afraid.org
DynDNS für eine eigene Domain einrichten
Inhalt
- 1 Der Pionier DynDNS
- 2 DynDNS-Alternativen
- 3 Auswahl des DynDNS-Anbieters
- 4 Registrierung bei FreeDNS
- 5 DNS-Delegierung einrichten
- 6 DynDNS-Client installieren
- 7 Konfiguration von ddclient
- 8 Interne DNS-Auflösung
- 9 Eigener DNS-Server…
- 10 … und eigener DHCP-Server
- 11 Windows-Clients und IPv6
- 12 Fazit
Für viele Zwecke ist es praktisch, wenn man sein Heimnetz aus dem Internet über einen festen Hostnamen erreichen kann. Will man dafür keine Subdomain des Dienstebetreibers, sondern eine eigene Domain benutzen, erfordert das etwas mehr Aufwand.
Der Pionier DynDNS
DynDNS.com war vor Jahren der Pionier der kostenlosen Dienste für die dynamische Zuordnung einer IP-Adresse zu einem Hostnamen. Man benötigt einen solchen Dienst, wenn man sein Heimnetz aus dem Internet mit einem festen Hostnamen erreichen will, auch wenn der Internet-Provider regelmäßig die Verbindung trennt und eine neue IP-Adresse für den Anschluss vergibt. Im Idealfall übernimmt der Internet-Router automatisch die Aktualisierung der Adresse beim DynDNS-Provider.
DynDNS-Alternativen
Inzwischen ist DynDNS von Oracle aufgekauft worden und bietet keine kostenlosen Dienste mehr an. Dafür sind viele andere in die Bresche gesprungen, die gleichwertige oder sogar bessere Angebote haben. Schwierig wird es allerdings, wenn man entweder keine Subdomain des DynDNS-Providers, sondern eine eigene Domain verwenden will, oder wenn der Internet-Router den ausgewählten DynDNS-Dienst nicht anbietet.
Bei mir trifft leider beides zu. Für mein Heimnetz will ich eine von meiner öffentlichen Domain abgeleitete Subdomain benutzen, und der DynDNS-Dienst, der so etwas anbietet, wird von meinem Telekom-Speedport-Router nicht angeboten.
Auswahl des DynDNS-Anbieters
Wie oben schon erwähnt, soll der DynDNS-Dienst zumindest für den Privatbedarf kostenlos sein. Das ist bei vielen Anbietern möglich, die meist einen kostenlosen Basis-Service neben kostenpflichtigen Premium-Accounts offerieren.
Auch ein Interface, mit dem man die Adresse von einem Rechner des Heimnetzes aus aktualisieren kann, bieten die meisten Provider an.
Der Dienstleister soll aber zudem mit beliebigen Domains arbeiten können. Bei dieser Bedingung fallen leider die meisten Anbieter aus der Wahl, weil sie nur Subdomains ihrer eigenen Domain anbieten, etwa selfhost.eu oder no-ip.com.
Registrierung bei FreeDNS
Übrig blieb für mich der Anbieter FreeDNS. Nach Registrierung kann man dort in seinem kostenlosen Konto eine beliebige Domain eintragen und über die Nameserver des Anbieters eine über das dyndns1-Protokoll dynamisch änderbare IP-Adresse zuordnen lassen.
Dafür legt man sich zunächst ein Konto bei FreeDNS an. Der Kostenlose Starter-Account reicht dafür aus. Wenn man FreeDNS unterstützen will, kann man aber auch ein kostenpflichtiges Konto mit Premium-Support auswählen. Nach Absenden des Formulars und Aktivierung per eMail kann man sich unter Dynamic DNS eine Domain einrichten, in unserem Beispiel home.kunz.de.
Danach werden automatisch zur Basisdomain vier Subdomains (ftp, irc, mail, www) angelegt, die alle auf die Adresse der Basisdomain zeigen. Über den add Link im Tabellenkopf wird jetzt noch ein A Record für die Subdomain eingetragen, über die später unser Service vom Internet erreichbar sein soll, etwa cloud.home.kunz.de. Sie bekommt die gleiche Zieladresse wie die anderen Subdomains.
DNS-Delegierung einrichten
Unsere Heimnetz-Adresse home.kunz.de ist jetzt zwar auf den FreeDNS-Servern eingerichtet, aber da FreeDNS nicht der Verwalter der Basis-Domain kunz.de ist, wird sie noch nicht in’s Internet propagiert.
Beim Verwalter der Basis-Domain - das ist bei mir Hetzner - muss home.kunz.de als Subdomain von kunz.de eingerichtet und die Namensauflösung an die Nameserver von FreeDNS delegiert werden.
Die Subdomain kann ganz normal über die Web-Oberfläche der KonsoleH per Einstellungen->Konfiguration->Subdomains eingerichtet werden. Auf welches Verzeichnis sie zeigt, ist nicht von Belang, da die Adresse später nicht auf Hetzner zeigen wird. Sie wird nach der Delegierung sogar wieder aus de Subdomain-Liste verschwinden.
Für die Delegierung muss allerdings die Zonendatei direkt editiert werden - die Weboberfläche lässt die Erzeugung von NS-Records nicht zu. Die DNS-Konfiguration erreicht man über Einstellungen->Konfiguration->DNS-Verwaltung. Klickt man im Kopf der Domain auf Erweiterte Ansicht, präsentiert die Seite den Inhalt der Zonendatei.
Unterhalb der existierenden NS-Records fügen wir nun die Delegierung an FreeDNS mit folgenden Zeilen ein:
home IN NS ns4.afraid.org. home IN NS ns3.afraid.org. home IN NS ns2.afraid.org. home IN NS ns1.afraid.org.
Das delegiert die Namensauflösung für die Subdomain home an einen der vier Nameserver von FreeDNS. Der Punkt am Ende der Zeilen ist übrigens wichtig, denn er verhindert die Suche nach den DNS-Servern in unserer eigenen Domain. Die Zeile mit dem A-Record für home
home IN A <ip-address>
wird gelöscht. Mit Zonefile speichern sichern wir die Änderungen. Bis sie bei anderen DNS-Servern wirksam werden, können einige Stunden vergehen, denn meist sind die A-Records mit einer TTL von 24 Stunden versehen. Am besten legen wir jetzt also eine Pause ein und arbeiten am nächsten Tag weiter.
DynDNS-Client installieren
Wir benötigen jetzt noch eine Prozedur, die bei FreeDNS die IP-Adresse für unsere Domain aktualisiert, sobald sie sich geändert hat. Wer so glücklich ist, einen Router zu besitzen, der die freie Auswahl des DynDNS-Anbieters erlaubt, ist jetzt schon fast fertig: er muss am Router lediglich den DNS-Anbieter ausgewählen oder Adresse und Protokoll sowie den Namen der Domain eingetragen. Dann meldet sich der Router von selbst beim DynDNS-Provider und ändert wenn nötig die Adresse.
Die Speedport-Router der Telekom erlauben nur eine sehr beschränkte Liste von DynDNS-Anbietern, zu der FreeDNS leider nicht gehört. Wir müssen also einen Host im Heimnetz zum DynDNS-Client machen. Bei mir soll ddclient auf dem ständig laufenden RaspberryPI mit openmediavault laufen, das auf der Linux-Distribution Debian Stretch basiert.
Für Linux bietet sich als DynDNS-Client der bewährte ddclient an, der unter seinen unterstützten DynDNS-Providern auch FreeDNS hat. Er ist für die meisten Linux-Distributionen als Paket verfügbar. Das Debian-Paket wird mit dem folgenden Befehl installiert:
apt install ddclient libio-socket-ssl-perl
Konfiguration von ddclient
Während der Installation fragt die Prozedur schon einige Parameter ab. Man kann sie nach bestem Wissen beantworten, aber die Konfigurationsdatei muss in jedem Falle nochmals bearbeitet werden. Dazu öffnen wir /etc/ddclient.conf und ändern sie auf folgenden Inhalt:
# Configuration file for ddclient # # /etc/ddclient.conf ssl=yes syslog=yes mail=<mail-address> mail-failure=<mail-address> protocol=freedns use=web, web=checkip.dyndns.com/, web-skip='IP Address' server=freedns.afraid.org login=<freedns-account> password='<freedns-password>' home.kunz.de
Die Platzhalter <mail-address>, <freedns-account> und <freedns-password> müssen natürlich entsprechend angepasst werden. Die Webseite checkip.dyndns.com liefert uns unsere eigene Internet-Adresse, also die externe Adresse unseres Internet-Routers. ddclient trägt diese dann bei FreeDNS ein.
Jetzt können wir mit ddclient einen Testlauf auf der Kommandozeile starten.
# ddclient SUCCESS: update not necessary home.kunz.de: good: IP address already set to 1.2.3.4 #
Ein Update der Adresse ist in diesem Beispiel nicht nötig, weil sie schon korrekt ist. Man kann ihn aber provozieren, indem man am Router die Internet-Verbindung kurz kappt und neu aufbauen lässt. Der Internet-Provider weist dabei eine andere externe Adresse zu. Das erkennt ddclient und setzt die Adresse bei FreeDNS entsprechend um.
# ddclient SUCCESS: updating home.kunz.de: good: IP address set to 2.3.4.5 #
Der ddclient läuft als Service und prüft nun regelmäßig unsere Adresse auf Änderung.
Jetzt müssen nur noch die entsprechenden Portweiterleitungen am Internet-Router eingetragen werden. Danach kann man die gewünschten Hosts vom Internet über die Domain home.kunz.de erreichen.
Interne DNS-Auflösung
Will man den neuen Service vom internen Netz aus erreichen, würde man über das DNS ebenso die externe Adresse des Routers erhalten wie jeder Client aus dem Internet. Man würde also über den Router ins Internet geroutet werden, um dann wieder am externen Port desselben Routers zu landen und über die Portweiterleitung zurück in das interne Netz zu kommen.
Abgesehen davon, dass das natürlich nicht viel Sinn macht, beherrschen viele Router diesen loopback nicht. Beim Telekom Speedport läuft man so einfach in einen Timeout.
Sinnvoller ist es, für die internen Clients vom DNS gleich die interne Adresse des Service geliefert zu bekommen. Das setzt aber voraus, dass man dem DNS-Resolver des internen Netzes statische Adressen „unterschieben” kann. Während das bei besseren Routern möglich ist, muss der Speedport auch hier passen.
Eigener DNS-Server…
Bleibt also nur die radikale Lösung: Statt des Speedport wird ein anderer Server zum DNS-Resolver gemacht. Dafür bietet sich das NAS als ständig laufende Maschine natürlich an. Mit der omv-Erweiterung openmediavault-dnsmasq funktioniert das auch recht einfach: Erweiterung installieren und mit dem Aktivieren Knopf scharf schalten. Bei Domain Name tragen wir unsere home Domain ein, also home.kunz.de.
Auf der Seite Static Entries kann man jetzt die internen Adressen der Server unserer home Domain eintragen. Speichern wir jetzt für cloud.home.kunz.de die interne Adresse ab, etwa 192.168.1.123, landen die internen Clients direkt am entsprechenden Server, während die Clients aus dem Internet vom DNS die externe Adresse unseres Routers geliefert bekommen.
Damit das funktioniert, müssen die internen Clients natürlich den neuen DNS-Server verwenden. Bei Clients mit statischer IP-Adresse kann man den DNS-Server direkt in die Interface-Konfiguration eintragen. Bei Clients, die ihre Adresse über DHCP erhalten funktioniert das aber nicht.
… und eigener DHCP-Server
Der DNS-Server wird dem Client bei der Adressvergabe vom DHCP-Server übergeben. Hat man am Router (wie beim Speedport) keine Chance, diesen Server zu ändern, muss auch ein eigener DHCP-Server aufgesetzt werden.
Glücklicherweise ist im openmediavault-dnsmasq Paket auch ein DHCP-Server enthalten. Er wird über die Startseite des Local DNS/DHCP Dienstes aktiviert. Bei Lease Network selektieren wir unsere Netzwerk-Adresse und -Maske, also etwa 192.168.1.0/255.255.255.0 aus der Liste. Das Gateway ist unser Speedport-Router, also z.B. 192.168.1.1.
Unter First IP Address und Last IP Address werden die erste und letzte Adresse unseres dynamisch vergebenen Adressbereichs eingetragen. Im Zweifel hilft ein Blick in die aktuelle Einstellung des Speedports - der Bereich sollte 1:1 übernommen werden. Unter Lease Time kann zunächst der Standardwert stehen bleiben.
Als letztes wird unter DNS Server(s) noch die Adresse unseres Speedports eingetragen. Dieser DNS-Server wird zum Forward benutzt, wenn unser neuer DNS-Server die Adresse nicht selbst auflösen kann. Jetzt kann die Konfiguration abgespeichert und aktiviert werden.
Der DHCP-Server des Routers muss jetzt zwingend abgeschaltet werden, ansonsten würden die Clients unvoraussagbar ihre Adresse mal vom einen, mal vom anderen DHCP-Server bekommen. Bei überlappenden Adressbereichen könnte das sogar zur Mehrfachvergabe von Adressen führen und unser Netz potentiell lahmlegen.
Jeder Client, der sich ab jetzt neu mit dem Netz verbindet, erhält seine Adresse und damit auch den DNS-Server vom neuen DHCP-Server. Damit erreicht er die Services ohne den Umweg über externe Adressen.
Windows-Clients und IPv6
Bei Windows-Clients mit statischen Adressen kann man zwar auch den DNS-Server in der Interface-Konfiguration eintragen, aber die Eintragung des IPv6-DNS-Servers wird der des IPv4-Servers vorgezogen, so dass DNS-Abfragen weiterhin beim Router landen würden. Der einzige mir bekannte funktionierende Workaround ist, das IPv6-Protokoll für das Interface komplett abzuschalten.
Fazit
DynDNS kann ganz einfach funktionieren, wenn man mit einer vorgegebenen Domain zufrieden ist und der Router den DynDNS-Provider unterstützt. Will man eine eigene Domain und/oder einen speziellen DynDNS-Provider verwenden, ist die Sache etwas komlizierter. Mit dieser Anleitung schafft man es trotzdem sicher.
Laden in Griechenland – Betreiber, Roaming und Abrechnung
entschuldigt erst einmal die späte Antwort. Direkt nach der Rückkehr war es hier etwas stressig und dann habe ich es einfach vergessen zu antworten.
Grundsätzlich
Die Ladesituation in Griechenland würde ich als durchwachsen bezeichnen. In den Städten gibt es relativ viele Ladestationen, zum Teil sogar (noch) kostenlos. Aber bspw. in Thessaloniki gibt es keine Probleme eine freie Ladestation zu finden.
Problematisch wird es auf der Autobahn. Gerade das Stück von Igoumenitsa nach Thessaloniki ist schwierig. Schnellladestationen waren noch relativ rar gesät und befinden sich primär in der Nähe der Städte.
Allerdings bauen aktuell einige Tankstellen (meist Avin) Ladestationen auf. Da wird sich also vermutlich einiges verbessern.
Ein großer Akku ist aber im Moment meiner Meinung nach noch ziemlich wichtig. Zumindest, wenn unterwegs keine Zwischenübernachtungen geplant werden sollen.
Unsere Tour
Fahrzeug: Hyundai Kona 64kWh Modell 2021.
Wir kamen mit der Fähre in Igoumenitsa an. Da wir von Ancona übergefahren sind und dort noch Zeit zum Laden hatten, kamen wir mit ca. 90% an.
Da die Fähre Verspätung hatte, mussten wir sowieso eine Übernachtung einplanen und haben diese ungefähr nach einem Drittel der Strecke zwischen Igoumentisa und Thessaloniki in Metsovo gemacht. Dort konnten wir kostenlos über Nacht laden, allerdings "nur" an einer normalen Steckdose in der Garage. Das Hotel (Aroma Dryos) kann ich sehr empfehlen, da der Inhaber sich sehr für Elektromobilität interessiert. Allerdings solltet ihr am besten vorher ankündigen, dass ihr laden wollt, da die Garage recht eng ist.
Am nächsten Morgen ging es weiter zur Fähre in Kavala. Dazu haben wir noch einen Stopp am Schnellader der Avin Tankstelle an der Raststätte kurz vor Thessaloniki (https://www.goingelectric.de/stromtanks ... -A2/58816/). Das hat auch problemlos funktioniert. Es ist nur etwas ungewöhnlich, dass die Ladung am Schalter gestartet werden muss. Als ich jedoch mit dem Elektroauto vor der Ladestation stand, waren direkt alle sehr interessiert und die Chefin hat direkt alle in Bewegung gesetzt um die Pylonen wegzustellen, mich einzuweisen und die Ladung zu starten. Also alles sehr vorbildlich.
Von da aus kamen wir dann relativ entspannt bis Kavala, mussten dort jedoch noch ein wenig laden, damit wir unser endgültiges Ziel auf Thassos mit einem guten Puffer erreichen konnten. In Kavala war es wieder etwas schwieriger eine Ladestation zu finden, da diese nur an Hotels waren. Allerdings gab es zumindest eine öffentlich zugängliche vor einem Hotel am Stadtrand (Egnatia City Hotel & Spa). Wir mussten uns zwar in der App registrieren und die Freischaltung der Station war etwas zickig, aber zu unserer Überraschung war der Ladevorgang sogar kostenlos.
Danach ging es mit der Fähre nach Thassos. Dort hatten wir als Ziel den Ort Potos auf der anderen Seite der Insel. Insgesamt ist die Ladesituation auf der Insel eher schlecht. Es gibt keine öffentlichen Ladestationen und die Stadtverwaltung hat mir leider auch nicht auf meine Anfrage geantwortet. Die meisten Ladestationen befinden sich in Hotels und sind häufig nur für Gäste gedacht. Am Alexandra Beach Hotel in Potos ist meines Wissens nach die einzige Ladestation die auch nicht Gäste nutzen können, wenn sie bspw. im Restaurant essen o.ä. Wir konnten allerdings zum Glück an unserem Ferienhaus (Scandia Villas) laden, sodass wir über den gesamten Zeitraum (Mitte Juni bis Ende September) immer gut mit Strom versorgt waren. Ich denke, dass es grundsätzlich kein Problem ist, an der Unterkunft zu laden, sofern eine Steckdose verfügbar ist. Die meisten Griechen, mit denen wir gesprochen haben, waren sehr interessiert was das Elektroauto anging und haben viele Fragen zu Reichweite, Ladedauer und Ladekosten gestellt. Von daher im Zweifelsfall einfach vor der Buchung anfragen, ob ihr dort Laden könnt. Wir haben am Ende unseren Aufenthalts einen kleinen Extra-Betrag für den zusätzlichen Verbrauch bezahlt, was ich durchaus fair fand und immer noch deutlich günstiger war, als der Haushaltsstrom in Deutschland.
Auf der Rückfahrt sind wir mit 100% von der Insel gestartet und sind dementsprechend relativ entspannt in Thessaloniki angekommen, wo wir noch zwei Tage verbringen wollten.
Anschließend haben wir auf dem Weg zur Fähre in Igoumenitsa noch einmal am Schnelllader bei Ioannina (https://www.goingelectric.de/stromtanks ... ina/40203/) geladen.
In Igoumenitsa gibt es zwar auch ein paar Ladestationen am Hafen, aber leider konnte uns dort niemand sagen, wie diese freigeschaltet werden. Unsere Frage beim Kiosk führte uns bis zur örtlichen Polizeistation, wo einer der freundlichen Beamten sogar noch ein wenig rumtelefoniert hat, aufgrund der Uhrzeit aber leider niemanden mehr erreichen konnte. Zum Glück hatten wir aufgrund des Ladestopps bei Ioannina noch genug Ladung im Akku um in Italien weiterzukommen. Möglicherweise werden die Stationen nächstes Jahr freigeschaltet, da sie noch sehr neu aussahen und vermutlich noch nicht eingerichtet waren.
Fazit
Insgesamt hat es bei uns gut geklappt. Vor allem durch den relativ großen Akku des Kona kamen wir gut durch. Zudem haben wir zu Beginn auch ziemlich konservativ geplant, da das Auto noch neu für uns war und zudem ziemlich schwer beladen war. Zudem ist der Verbrauch insgesamt geringer, da man aufgrund der Straßenverhältnisse und Geschwindigkeitsbegrenzungen in der Regel eine geringere Durchschnittsgeschwindigkeit hat als in Deutschland.
Es bleibt also zu sagen, dass Griechenland mit dem Elektroauto gut möglich ist, allerdings sollte vor der Fahrt doch ein wenig geplant werden und ggf. schon die entsprechenden Accounts bei den Ladeanbietern erstellt werden, um Überraschungen zu vermeiden. Außerdem war uns die PlugShare App eine große Hilfe.
Wenn ihr noch weitere Fragen habt, könnt ihr euch natürlich gern melden. Dann werde ich auch hoffentlich deutlich schneller antworten als jetzt.
Viele Grüße
David




