Posts Tagged ‘DNS’

Sonntag, 19. Juli 2026

HomePod: „I’m having trouble connecting to the Internet“

Seit mehreren Wochen funktioniert einer unserer zwei HomePod minis unzuverlässig auf Stimmenkommandos. Nach einem „Hey Siri“-Befehl dauert es mehrere Sekunden, bis Siri antwortet, und um etwas Geduld bittet. Schlussendlich meldet Siri: „I’m having trouble connecting to the Internet“.

Was zum Teufel?! Heute habe ich den HomePod vorsorglich einmal vom Strom getrennt, und neu gestartet. Das Problem blieb bestehen. Ich überprüfte auf dem DHCP-Server, dass der HomePod basierend auf seiner MAC-Adresse eine statische IP anfrägt, und erhält, wie auch dass das Gerät über den lokalen DNS-Server Namen auflöst.

Erste Auffälligkeit (just als ich in das Query Log schaute):

...
19-Jul-2026 10:14:28.188 queries: info: client @0x7f294b53e800 10.1.2.3#39271 (nrdp26.appboot.netflix.com): query: nrdp26.appboot.netflix.com IN A + (10.1.2.4)
19-Jul-2026 10:14:28.196 queries: info: client @0x7f294b540400 10.1.2.3#39271 (occ.a.nflxso.net): query: occ.a.nflxso.net IN A + (10.1.2.4)
19-Jul-2026 10:14:28.220 queries: info: client @0x7f294cf0e400 10.1.2.3#39271 (api-global.netflix.com): query: api-global.netflix.com IN A + (10.1.2.4)
...

Wieso löst ein Apple-Lautsprecher Netflix-Domains auf?

Lange nach dem Neustart pingte ich den HomePod, und erhielt auch hier komische Rückmeldungen:

PING 10.1.2.3 (10.1.2.3): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
64 bytes from 10.1.2.3: icmp_seq=5 ttl=64 time=157.932 ms
64 bytes from 10.1.2.3: icmp_seq=6 ttl=64 time=82.906 ms
64 bytes from 10.1.2.3: icmp_seq=7 ttl=64 time=6.095 ms
...

Was läuft hier?! Dann die Idee: Ich loggte mich auf mein UniFi UCG-Fiber Gateway ein, und durchsuchte die Liste der Geräte nach der IP des HomePods. Da staunte ich nicht schlecht, als sowohl mein TCL-Fernseher als auch der HomePod mini mit derselben IP angezeigt wurden.

Und tatsächlich: In der dhcpd.conf habe ich den MAC-Adressen beider Geräte dieselbe IP zugewiesen — und DHCP hat nie gemotzt, sondern die IP schön brav beiden Geräten ausgehändigt.

Übrigens: arpwatch läuft (selbstverständlich!) im heimischen Netzwerk, und hätte diese Flip Flops längst erkannt. Leider aber sende ich die Alarme per Email an ein Log-Konto, welches ich äusserst selten anschaue (und welches solche Emails aggressiv filtert und in einen Unterordner verschiebt).

Tags: , , , , , , , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Montag, 13. Juli 2026

Shelly 2.5 und 3EM können sich nicht mehr mit der Shelly Cloud verbinden

Auf Grund eines Ausfalls eines physischen Servers, und weil ich diesen dann mit VMs ersetzt habe, hatten einige meiner Shelly-Geräte plötzlich Verbindungsprobleme.

Bis zur intensiven Debugging-Session wusste ich aber nicht, wieso.

Die Symptome:

  • Es waren nur Shellys mit dem Web-Interface der ersten Generation betroffen (sprich Shelly 2.5, welche in der Eigentumswohnung die Rollläden steuern, ein Shelly 3EM, der dort den Stromverbrauch misst, sowie Shelly Temperatursonden (die Todessterne))
  • Die Shellys verbanden sich anstandslos mit dem WiFi

  • Die Shellys waren anpingbar
  • Im Web-Interface wurde ganz oben ein gelbes Cloud-Symbol angezeigt, und wenn man mit der Maus darüberfuhr, hiess es „Trying to establish cloud connection“
  • Im Web-Interface wurde oben rechts anstelle der Uhrzeit „–:–“ angezeigt
  • Die Shelly Cloud sandte mir ein Email mit dem Titel „Mass offline devices“

Das Problem, und die Lösung: Offenbar unterstützt das Mongoose OS, welches auf diesen Shellys läuft, nur genau einen DNS-Server (der massgebliche Tipp stammte von hier). Verteilt man die IP mitsamt DNS-Server der Shellys mit einem lokalen DHCP-Server, muss der DNS-Server mit der ersten IP funktionieren, sprich Namen auflösen können. Das tat er in meinem Fall nicht, weshalb die Shellys weder time.google.com auflösen konnten, noch die Adresse(n) der Shelly Cloud. Somit verfügten diese weder über eine Verbindung zum Zeitserver, noch zur Cloud — funktioniertem im lokalen Netzwerk aber tadellos.

Die Shellys mit dem neueren Web-Interface scheinen diese Beschränkung nicht zu haben, denn diese waren immer online.

Doch bis zu dieser Erkenntnis war es ein langer Weg:

Das Problem mit der Uhrzeit löste ich als Workaround, indem ich im Web-Interface anstelle von time.google.com die IP eines NTP-Servers im lokalen LAN angab. Nach einem Reboot wurde die Uhrzeit wieder angezeigt.

Doch wie löste ich nun das Cloud-Problem? Das Debugging führte mich zum neu aufgesetzten, virtualisierten DNS-Server. Interessanterweise erschienen im BIND9 Query Log auf diesem Server ausschliesslich anfragen vom localhost (127.0.0.1). Ich dachte mir anfänglich nicht viel weiteres dabei.

Doch irgendwann einmal machte es Klick: Das Problem mit der Zeit respektive dem NTP-Server und der nicht möglichen Cloud-Verbindung mussten zusammenhängen.

Ich versuchte deshalb, von einem anderen Linux-System im LAN gegen den via DHCP als erstes verteilten DNS-Server eine Domain aufzulösen.

Resultat:

# host emeidi.com 1.2.3.4
;; communications error to 1.2.3.4#53: connection refused
;; communications error to 1.2.3.4#53: connection refused
;; no servers could be reached

Ich nahm die Konfigurationsdatei des BIND 9 auseinander, startete ihn mehrmals neu — das Problem blieb. Bis ich plötzlich realisierte, dass ich via DHCP die IP des DHCP-Servers als ersten DNS-Server verteilte, und nicht die des pimären DNS-Servers. Schwupp-di-Wupp, DHCP-Konfiguration angepasst, Shellys neu gebootet — und siehe da, schön der Reihe nach änderten alle Shellys mit Cloud-Verbindungsproblemen die Farbe des Cloud-Icons von Gelb auf Grün:

Übrigens: Ich habe nun bei all diesen Shellys den Eco-Mode deaktiviert. Nützts nüt, schadts nüt.

Was ich auch noch gelernt habe: Die Shelly 2.5 sterben sehr oft an Altersschwäche eines Kondensators.

Tags: , , , , , , , ,
Labels: Home Automation, IT, Smart Home

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 7. Juli 2026

Einen Init7 Nameserver gibt’s nicht mehr …

Momentan migriere ich die Workloads in meinen Heimnetzwerken auf Debian VMs, die unter Proxmox laufen, welches auf einem performanten Lenovo-Hobel (T480s) installiert ist.

Keine Ahnung, wieso mir das erst jetzt, 2026, einfällt. Anstelle einen physischen Debian-Server mit unzähligen Apps zu überladen, und zudem mit Testinstallationen von Apps zu kontaminieren, ziehe ich einfach eine VM hoch, welche spezifische Arbeiten erledigt. Eine für DNS, eine für DHCP, eine als VPN-Endpunkt, eine für LNMS.

Kürzlich habe ich eine DNS VM hochgezogen. Dabei ist mir folgende Fehlermeldung in den Logs aufgefallen:

...
05-Jul-2026 22:42:27.393 lame-servers: info: REFUSED unexpected RCODE resolving '50-courier.push.apple.com/HTTPS/IN': 213.144.129.2#53
...

Nach etwas Recherche war klar, dass das Problem nicht an meinem DNS-Resolver (Forwarder) lag, sondern am Zielserver.

Als ich vor Jahren die Grundkonfiguration für meine DNS-Server erstellt habe, betrieb Init7 noch drei DNS-Server:

...
            213.144.129.2;  // Init7, NS1
            77.109.128.2;   // Init7, NS10
            213.144.129.20; // Init7, NS20
...

Gemäss dieser Webseite sind es mittlerweile nur noch zwei, der NS10, und der NS20:

  • 77.109.128.2
  • 213.144.129.20

Tags: , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 23. Februar 2022

dhcpd: Unable to add forward map from X to 1.2.3.4: SERVFAIL

Ich habe meine lokalen DHCP-Server so konfiguriert, dass Geräte mit ihrem lokalen DNS-Namen auch in named (BIND9) registriert werden.

Gelegentlich treffe ich folgendes Problem an:

Feb 23 01:15:15 SERVER dhcpd[2746174]: Unable to add forward map from apple-tv.domain.tld. to 10.1.2.3: SERVFAIL

Wie ich mittlerweile nach unzähligen verbratenen Stunden herausgefunden habe hängt dies mit diesem beschissenen AppArmor zusammen. Obwohl ich es jeweils deinstalliere, taucht es nach Updates wieder im System auf.

Die Lösung:

# apt-get remove apparmor
# systemctl stop apparmor
# systemctl disable apparmor

Quelle: How to disable and remove AppArmor in Ubuntu and Debian

Je nach Tageslaune ist dann auch noch ein Reboot nötig.

Mittlerweile habe ich eine monit-Regel eingerichtet, die mich alarmiert, wenn ein solcher Log-Event in /var/log/dhcp.log auftaucht.

(Auf meiner Todo-Liste steht, die Installation mittels apt zu verbieten)

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 20. April 2020

upc kappt Peering mit Init7 / Fiber7

Ich habe vor einigen Jahren mit OpenVPN ein Site-to-Site VPN zu einem Bekannten in der Agglomeration Bern aufgebaut und betreibe dieses VPN bis heute.

Der Bekannte ist Kunde von upc cablecom (der schnellste und preiswerteste Anbieter in der Agglomerationsgemeinde) mit einem 300 MBit/s Download-Abo, ich als Städter bekanntermassen Kunde von Fiber7 mit (theoretisch) symmetrischen 1 GBit/s.

Letzte Woche (KW16 2020) waren SSH-Verbindungen zu einem Server beim Bekannten auf einmal sehr, sehr hakelig — die Latenz zwischen Tastatureingabe und erscheinen des Zeichens auf dem Bildschirm war sehr hoch. Bestätigt wurde diese durch meine Überwachung der Geschwindigkeit mit speedtest-cli und Aufzeichnung und Visualisierung der Werte mit Cacti:

Der Einbruch am Dienstag-Morgen war offensichtlich.

Eine fiebrige, verbissene Suche begann: War ein Angreifer in das Netzwerk eingedrungen und zog nun Gigabyte-weise an Daten ab? Oder war ein Rechner eines Mitbenutzers von Malware gekapert worden? Oder führte der Mitbenutzer einfach nur tonnenweise Bittorrent-Downloads durch? Oder war eine Netzwerkkomponente ausgetickt und flutete das Netzwerk und den Router mit Paketen? Oder hatte upc cablecom einfach etwas am Netzwerk geschraubt, worauf der Geschwindigkeitseinbruch manchmal nur mit einem Neustart des Modems behoben werden konnte?

Die Nachforschungen brachten nichts zu Tage, aber immerhin lernte ich folgende Netzwerkanalyse-Tools/Features meiner Infrastruktur kennen:

  • Traffic Analysis des EdgeRouters X ER-X, welcher am Kabelmodem hängt
  • iftop Zeigt in Echtzeit an, von und zu welchen IPs ein Server Daten übertragt (Homepage)
  • iptraf-ng (Homepage)

Am Dienstag-Abend ereilte mich ein Geistesblitz: speedtest-cli misst die Geschwindigkeit von einem Server am Agglomerations-Standort zum Ookla Speedtest-Server von Init7 (Server „Init 7 (Winterthur, Switzerland)“ mit ID 3026). Aus Interesse wählte ich einen anderen Server aus der Liste aus, und zwar den Speedtest-Server von Sunrise. Zuerst führte ich einen manuellen Speedtest zu Init7 durch, danach zu Sunrise. Und siehe da, hier lag die Antwort wie auf dem Präsentierteller:

$ ./speedtest-cli --server 28045
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from UPC Schweiz (80.218.X.X)...
Hosted by Sunrise Communication AG (Lausanne) [6X.XX km]: 30.667 ms
Testing download speed........................................
Download: 302.88 Mbit/s
Testing upload speed..................................................
Upload: 42.32 Mbit/s

$ ./speedtest-cli --server 3026
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from UPC Schweiz (80.218.X.X)...
Hosted by Init 7 (Winterthur) [13X.XX km]: 165.956 ms
Testing download speed........................................
Download: 25.82 Mbit/s
Testing upload speed..................................................
Upload: 9.48 Mbit/s

Am selben Abend sendete ich eine Anfrage an Init7 raus, ob und wie sie sich diesen markanten Geschwindigkeits-Unterschied erklären können. Am Morgen hatte ich die Antwort, und wurde auf folgendes Schreiben verwiesen. Diese Meldung war bei mir im Corona-Trubel vollkommen untergegangen.

Fazit: upc cablecom, how dare you?

Nachtrag

smokeping visualisiert die Latenz von DNS-Abfragen aus dem upc cablecom-Netz gegen den DNS-Server von Init7 ebenfalls sehr schön:

Auf Wunsch Thomas‘ (siehe Kommentar unten) noch dieselbe Grafik für Test-Abfragen an einen der DNS-Server der upc cablecom (ns10.cablecom.net) …

… zu Swisscom (dns2.bluewin.ch) …

… und zu Sunrise (cache02.sunrise.ch)

Tags: , , , , , , , , , , , , , , , , ,
Labels: IT, Schweiz

7 Kommentare | neuen Kommentar verfassen

Montag, 16. Dezember 2019

Netflix mit zehntausenden DNS-Queries pro Tag von meinem Sony KD-55AF8

Seit ein paar Monaten steht in unserer Wohnung der erste richtig „smarte“ TV, ein Sony KD-55AF8, auf welchem mittlerweile Android TV 8.0 installiert ist.

Seit gestern analysiere ich die DNS-Queries, die von Netzwerkgeräten im LAN an den lokalen DNS-Forwarder gestellt werden sowohl quantitativ (welche Domains werden am meisten aufgelöst, welches Gerät setzt die meisten Queries ab und in welcher Stunde des Tages gibt es die meisten Queries) sowie qualitativ (werden von SANS als Suspicious eingestufte Domains aufgelöst, was ein Zeichen für Malware-Befall sein könnte). Ich war nicht schlecht überrascht, dass ein TV-Gerät, welches allerhöchsten zwei von 24 Stunden im Tag „läuft“, der Spitzenreiter aller Queries ist. Ich zählte innerhalb von 24 Stunden sage und schreibe 90’498 Queries. Gefolgt wurde der TV vom Server selber, auf welchem der DNS-Server läuft mit 72’411 Queries. Auf Platz drei dann ein Client mit noch 7’162 Queries.

Heute nun nahm mich Wunder, was zum Teufel der TV ständig abzufragen hat. Hier das Resultat der Analyse der named-Logs vom Vortag (10.1.2.3 ist die (fiktive) IPs meines TVs):

$ cat queries.log.1 | grep 10.1.2.3 | cut -d "(" -f 2 | cut -d ")" -f 1 | sort | uniq -c | sort -rn
  13052 cdn-0.nflximg.com
   9112 nrdp51-appboot.netflix.com
   8777 api-global.netflix.com
   8564 uiboot.netflix.com
   8487 ichnaea.netflix.com
   8332 customerevents.netflix.com
   8262 nrdp.nccp.netflix.com
   6970 secure.netflix.com
   6886 nrdp.prod.ftl.netflix.com
   3115 push.prod.netflix.com
   1556 occ-0-593-769.1.nflxso.net
   1284 clients3.google.com
   1220 connectivitycheck.gstatic.com
   1196 www.google.com
   1195 mtalk.google.com
    994 nrdp52-appboot.netflix.com
    324 events.cid.samba.tv
    162 us.edge.bamgrid.com
    142 watch.product.api.espn.com
    118 clients4.google.com
    109 androidtvchannels-pa.googleapis.com
    105 footprints-pa.googleapis.com
     91 fling.cid.samba.tv
     83 www.youtube.com
     52 mdh-pa.googleapis.com
     41 clientservices.googleapis.com
     37 www.googleapis.com
     35 play.googleapis.com
     34 platform.cid.samba.tv
     28 android.googleapis.com
     13 www.gstatic.com
     12 youtubei.googleapis.com
     10 static.doubleclick.net
      7 www.netflix.com
      7 android.clients.google.com
      6 api-cdn.arte.tv
      5 lh3.googleusercontent.com
      5 antv-26-sony-bravia4kgbatv3-414000300.api.amazonvideo.com
      4 sdk.hockeyapp.net
      4 middleware.7tv.de
      4 devices.ted.com
      4 cdn-gl.imrworldwide.com
      4 android.googleapis.com
      3 zdf-cdn.live.cellular.de
      3 geoloc.arte.tv
      3 geocheck.sim-technik.de
      3 config.ioam.de
      3 cdn.meta.ndmdhs.com
      3 bam-sdk-configs.bamgrid.com
      2 sdk.imrworldwide.com
      2 api.meta.ndmdhs.com
      1 www.sony.net
      1 www.sony-asia.com
      1 voledevice-pa.googleapis.com
      1 update.biv.sony.tv
      1 time.android.com
      1 static-cdn.arte.tv
      1 sportscenter.api.espn.com
      1 secure.espncdn.com
      1 safebrowsing.googleapis.com
      1 r4---sn-1gieen7e.gvt1.com
      1 people-pa.googleapis.com
      1 ocsp.int-x3.letsencrypt.org
      1 metadata.erabu.sony.tv
      1 log.core.cloud.vewd.com
      1 isrg.trustid.ocsp.identrust.com
      1 images.erabu.sony.tv
      1 fls-na.amazon.com
      1 cloudfront.xp-assets.aiv-cdn.net
      1 cert-cdn.meta.ndmdhs.com
      1 cdn.espn.com
      1 browserjs-legacy.core.cloud.vewd.com
      1 broadband.espn.com
      1 bravia-cfgdst-ore-pro.bda.ndmdhs.com
      1 bdcore-apr-lb.bda.ndmdhs.com
      1 app-measurement.com
      1 api.erabu.sony.tv
      1 api.auth.adobe.com
      1 ajax.googleapis.com

Netflix führt die Statistik unangefochten an:

$ cat queries.log.1 | grep 10.1.2.3 | cut -d "(" -f 2 | cut -d ")" -f 1 | sort | uniq -c | sort -rn | grep -i "netflix\|nflx"
  13052 cdn-0.nflximg.com
   9112 nrdp51-appboot.netflix.com
   8777 api-global.netflix.com
   8564 uiboot.netflix.com
   8487 ichnaea.netflix.com
   8332 customerevents.netflix.com
   8262 nrdp.nccp.netflix.com
   6970 secure.netflix.com
   6886 nrdp.prod.ftl.netflix.com
   3115 push.prod.netflix.com
   1556 occ-0-593-769.1.nflxso.net
    994 nrdp52-appboot.netflix.com
      7 www.netflix.com

Von den täglich über 90’000 Queries entfallen über 90 Prozent auf Netflix-Domains:

$ cat queries.log.1 | grep 10.1.2.3 | grep -i "netflix\|nflx" | wc -l
84114

Dabei schauen wir — wenn überhaupt — mit der Netflix-App auf dem Apple TV 4K mit einer anderen IP Netflix, und nie mit der Android TV App.

Netflix, shame on you! Die Frage, wieso die Netflix-App das macht, konnte ich bis jetzt noch nicht beantworten, werde es hier aber nachtragen, sollte ich es erfahren.

Tags: , , , , , , , , , , , , , , , , ,
Labels: IT

10 Kommentare | neuen Kommentar verfassen

Sonntag, 3. Februar 2019

host löst einen lokalen Domain-Namen auf, wget und Python requests3 hingegen nicht

Vor einigen Tagen habe ich meinen Web-Server im lokalen LAN aufgeräumt und viele Services, welche über eine DynDNS-Adresse gegen das Internet zugänglich waren, deaktiviert. Ab sofort können diese Web-Services nur noch mit einer privaten FQDN à la service.server.location.domain.local aus dem LAN angesprochen werden.

Diese Anpassung führte dazu, dass mein Bluetooth-Scanner, welchen ich auf meinem Raspberry Pi betreibe, seine Scan-Resultate nicht mehr an den Web-Server übermitteln konnte. Ein Python-Script führt auf dem RPi alle 5 Minuten einen Bluetooth-Scan durch, übersetzt die Resultate ins JSON-Format und versendet die Daten dann mit requests3 per HTTP an den Web-Server.

Die Fehlermeldung, die das Script ab der Umstellung ausspuckte, lautete folgendermassen:

$ /usr/bin/python /usr/local/bin/bluelog/bluetooth-scan.py --output api
Traceback (most recent call last):
  File "/usr/local/bin/bluelog/bluetooth-scan.py", line 424, in <module>
    response = requests.post(url, json=macs, auth=HTTPDigestAuth('user','password'))
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 110, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 487, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='service.server.location.domain.local', port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x75e41b10>: Failed to establish a new connection: [Errno -2] Name or service not known',))

Auf dem RPi eingeloggt funktionierte die Namensauflösung mit dem host-Kommando aber problemlos:

$ host service.server.location.domain.local
service.server.location.domain.local has address 10.1.2.3

Doch als ich die Verbindung zum Web-Server mit wget überprüfen wollte schlug auch das fehl:

$ wget http://service.server.location.domain.local/index.php
--2019-02-02 15:56:22--  http://service.server.location.domain.local/index.php
Resolving service.server.location.domain.local (service.server.location.domain.local)... failed: Name or service not known.
wget: unable to resolve host address "service.server.location.domain.local"

Herumgooglen brachte nicht die gewünschte Lösung. Deshalb griff ich zur nächstbesten Lösung und rief wget mit strace auf. Im Trace dann der entscheidende Hinweis:

$ strace wget http://service.server.location.domain.local/index.php
...
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fstat64(3, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
write(3, "RESOLVE-HOSTNAME-IPV4 service.serv."..., 55) = 55
read(3, "-15 Timeout reached\n", 4096)  = 20
close(3)                                = 0
...

Was zum Teufel hat der Avahi-Daemon mit /var/run/avahi-daemon/socket im strace zu suchen? Jetzt hatte ich ausreichend Infos, um Google noch einmal zu befragen. Und siehe da:

Is Avahi running or installed? Avahi uses .local domain for its usage and puts its config in /etc/nsswitch.conf. My experience with it, using a .local domain name for my internal use is that it can be a little flaky (for lack of a better technical term), and would show behavior similar to what you are seeing.

Quelle: [SOLVED] resolver weirdness – avahi and .local

Die Lösung war im selben Beitrag gepostet:

/etc/nsswitch.conf

Aus …

...
hosts:      files mdns4_minimal [NOTFOUND=return] dns
...

… wird folgender Eintrag:

...
hosts:          files dns mdns4_minimal
...

Und seither lösen sich auch die .local-Adressen reibungslos auf.

Tags: , , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 19. Juli 2018

SPF für ein Cyon-Hosting aktivieren

Da ich mich auf der Arbeit gerade mit dem Thema E-Mail-Sicherheit und -Authentizität befasse, war es nun an der höchsten Zeit, auch meinen privaten Mailverkehr sicherer zu machen.

Begonnen habe ich mit der Konfiguration des sogenannten Sender Policy Frameworks SPF. Der Besitzer einer Domain gibt mit einem TXT-Eintrag in einem bestimmten Format auf dem Nameserver der Domain bekannt, von welchen IPs aus überall legitime E-Mails versendet werden können.

Mailserver, welche von einer mit SPF ausgerüsteten Domain E-Mails erhalten, können — müssen aber nicht — diese Information abfragen und mit den Informationen im Header des E-Mails vergleichen. Basierend auf dem Resultat dieser Auswertung kann der Mail-Server oder der Mail-Client des Empfänger Aktionen ergreifen. Beispielsweise E-Mails markieren oder in einen Unterordner verschieben, welche von keiner der freigegebenen IP versendet wurden. Oder E-Mails von einer offiziellen Mail-Server-IP eine höhere Authentizitätspunktzahl geben und so von der Spam-Score abziehen.

Mein Hoster der Wahl, Cyon, hat im Support-Artikel Was ist ein SPF-Record? festgehalten, wie ein solcher SPF-Record aussehen könnte und wie man diesen über das Controlpanel my.cyon einrichtet. Obwohl der Autor des Support-Artikels festhält, dass alle Kundendomains bereits einen Eintrag besitzen …

Der Standardeintrag bei cyon sieht folgendermassen aus: […] Sie können diesen im my.cyon unter «Webhosting» > «DNS-Editor» mit dem DNS-Editor anpassen. Wichtig ist, dass man den bestehenden Eintrag ergänzt, da nur jeweils ein SPF-Eintrag gültig ist.

… hatten meine Domains keinen solchen Eintrag. Wahrscheinlich, weil ich bereits langjähriger Kunde bin und nur neue Hostingkunden diesen Eintrag automatisch erhalten.

Cyon schlägt folgenden Eintrag vor:

v=spf1 +a +mx +ip4:194.126.200.0/24 +ip4:149.126.0.0/21 -all

Ich empfand diese zwei Ranges viel zu weitläufig und habe mich entschieden, stattdessen folgende Konfiguration einzuspeisen:

v=spf1 +a +mx +ip4:194.126.200.18 +ip4:194.126.200.19 +ip4:194.126.200.20 +ip4:194.126.200.22 +ip4:149.126.4.65 -all

Die IPs fand ich folgendermassen heraus:

$ host mail.cyon.ch
mail.cyon.ch has address 194.126.200.18
mail.cyon.ch has address 194.126.200.22
mail.cyon.ch has address 194.126.200.20
mail.cyon.ch has address 194.126.200.19
$ host s056.cyon.net
s056.cyon.net has address 149.126.4.65

Dahinter verstecken sich einerseits alle vier Server, auf welche mail.cyon.ch auflöst, andererseits der physische Server, auf welchem meine Web-Site gehostet wird: s056.cyon.net.

Die TTL habe ich auf 15 Minuten gesetzt, damit ich in Notfällen Anpassungen vornehmen kann und diese sich dann rasch propagieren.

Existenz des Eintrags verifizieren

$ dig @ns1.cyon.ch emeidi.com txt
...
;; ANSWER SECTION:
emeidi.com.		900	IN	TXT	"v=spf1 +a +mx +ip4:194.126.200.18 +ip4:194.126.200.19 +ip4:194.126.200.20 +ip4:194.126.200.22 +ip4:149.126.4.65 -all"
...

Via: Using dig to search for SPF records
und Force dig to resolve without using cache

Warnung

Auf der Arbeit musste ich realisieren, dass man als Besitzer einer Domain den SPF-Record stets aktuell halten muss. Bisher sah ich folgende Probleme:

  • E-Mails werden im Namen des Dienstleister über den Services eines Dritten versendet (bspw. SaaS), der Dienstleister vergisst aber, die IP(s) resp. die Domain mit den SPF-Einträgen des Mail-Servers in die Konfiguration aufzunehmen.
  • Man macht einen Flüchtigkeitsfehler und schreibt bspw. Anstelle +ip4:1.2.3.4 folgende syntaktisch falsche Konfiguration: +ipv4:1.2.3.4

Validität prüfen

Es empfiehlt sich deshalb, zumindest die Validität eines SPF-Records zu testen. Hierfür hat sich bei mir das Tool MxToolbox Supertool bewährt:

Wird der SPF-Record grün hinterlegt, ist alles bestens. Erscheint er rot, ist etwas an der Syntax nicht korrekt. Übrigens: Bei mit +include: verschachtelten Einträgen empfiehlt es sich, die Domains im Include-Statement auch noch gleich abzufragen, indem man in der Resultate-Tabelle darauf klickt. In einem Fall fand sich die Fehlkonfiguration dort.

Zusätzlich gibt es noch eine andere Variante — lasst uns doch einfach ein Mail senden! Und zwar an diese Mail-Adresse: check-auth@verifier.port25.com. Man erhält automatisch eine Antwort zurück, die sich etwa so liest:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
"iprev" check:      pass
DKIM check:         permerror
SpamAssassin check: ham

==========================================================
Details:
==========================================================

HELO hostname:  s056.cyon.net
Source IP:      149.126.4.65
mail-from:      xyz@eMeidi.com

----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result:         pass
ID(s) verified: smtp.mailfrom=xyz@eMeidi.com

DNS record(s):
   eMeidi.com. 60 IN TXT "v=spf1 +a +mx +ip4:194.126.200.18 +ip4:194.126.200.19 +ip4:194.126.200.20 +ip4:194.126.200.22 +ip4:149.126.4.65 -all"
   eMeidi.com. 60 IN A 149.126.4.65


----------------------------------------------------------
"iprev" check details:
----------------------------------------------------------
Result:         pass (matches s056.cyon.net)
ID(s) verified: policy.iprev=149.126.4.65

DNS record(s):
   65.4.126.149.in-addr.arpa. 60 IN PTR s056.cyon.net.
   s056.cyon.net. 60 IN A 149.126.4.65

Produktiver Test

Um das funktionieren des SPF-Records vollends zu testen, sendete ich mir ein Mail an eine Gmail-Adresse und guckte mir dann den Mail-Header an, wie er bei Google ankommt:

...
Received-SPF: pass (google.com: domain of xyz@emeidi.com designates 149.126.4.65 as permitted sender) client-ip=149.126.4.65;
Authentication-Results: mx.google.com;
       dkim=temperror (no key for signature) header.i=@emeidi.com header.s=default header.b=LchLhMBS;
       spf=pass (google.com: domain of xyz@emeidi.com designates 149.126.4.65 as permitted sender) smtp.mailfrom=xyz@emeidi.com
...

Ist SPF gar nicht konfiguriert, sieht der E-Mail-Header stattdessen folgendermassen aus:

...
Received-SPF: neutral (google.com: 149.126.4.65 is neither permitted nor denied by best guess record for domain of xyz@emeidi.com) client-ip=149.126.4.65;
Authentication-Results: mx.google.com;
       dkim=temperror (no key for signature) header.i=@emeidi.com header.s=default header.b=cbFM4Bn7;
       spf=neutral (google.com: 149.126.4.65 is neither permitted nor denied by best guess record for domain of xyz@emeidi.com) smtp.mailfrom=xyz@emeidi.com
...

Tags: , , , ,
Labels: Web

1 Kommentar | neuen Kommentar verfassen

Samstag, 25. November 2017

Session Replay-Sites auf DNS-Ebene blocken

Vor ein paar Tagen publizierten Sicherheits-Forscher eine Untersuchung (deutsch) über eine Vielzahl von Web-Analyse-Services, welche jede Benutzereingabe auf einer Web-Site abfangen und an den Analyse-Server senden. Sozusagen ein web-site-spezifisches Keylogging.

Gefällt mir ganz und gar nicht.

Die Forscher stellten auch eine Datenbank ins Netz, welche auflistet, welche grössere Web-Site konkret welche Lösung im Einsatz haben.

Da ich seit einer Weile im internen Netzwerk bereits Ad-Sites auf DNS-Ebene blocke (mit der Folge, dass ich im Browser keine SPIEGEL-Artikel mehr lesen kann — Instapaper als funktionierender Workaround), habe ich die von den Forschern entdeckten Services zur offiziellen Block-Liste hinzugefügt.

Hier meine Konfiguration:

// Session Replay Prevention
// https://webtransparency.cs.princeton.edu/no_boundaries/session_replay_sites.html

// Already blocked by http://pgl.yoyo.org/adservers/:
// mouseflow.com
// hotjar.com
// userreplay.net

// Specific subdomains used by some sites investigated
//zone "cdnssl.clicktale.net" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "cdn.clicktale.net" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "cdn.decibelinsight.net" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "cdn.inspectlet.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "wu-app.quantummetric.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "ws.sessioncam.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "cdn.userreplay.net" { type master; notify no; file "/etc/bind/zones/null.dns"; };
//zone "mc.yandex.ru" { type master; notify no; file "/etc/bind/zones/null.dns"; };

zone "clicktale.net" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "fullstory.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "decibelinsight.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "inspectlet.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "quantummetric.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "sessioncam.com" { type master; notify no; file "/etc/bind/zones/null.dns"; };
zone "yandex.ru" { type master; notify no; file "/etc/bind/zones/null.dns"; };

Die gröbsten Missetäter sollten somit nicht mehr ins Haus kommen …

Tags: , , , , , , , , ,
Labels: IT, Linux, Web

Keine Kommentare | neuen Kommentar verfassen

Freitag, 28. April 2017

Unterstützt mein Hoster DNSSEC?

Verisign liefert ein Tool, mit welchem man unter Eingabe eines Domain-Namens testen kann, ob der Betreiber des Nameservers der Domain DNSSEC unterstützt:

DNSSEC Analyzer

Antwort in meinem Fall für Cyon (April 2017): Leider nein.

Tags: , , ,
Labels: Web

1 Kommentar | neuen Kommentar verfassen