[gelöst] dnsmasq Problem wenn Upstream-DNS nicht erreichbar

  • Ich habe gerade erhebliche Probleme mit meinem Internet-Zugang (Vodafone) und dabei festgestellt, dass der dnsmasq DNS-Server auf meinem openWRT-Router keine lokalen Hostnamen mehr auflöst, wenn der Upstream-DNS-Server nicht erreichbar ist. Die in der lokalen /etc/hosts eingetragenen Hostname sollte er doch immer auflösen können, oder?

    Gibt es da irgend eine Einstellung, mit der man das beeinflussen kann?

  • Viele oder alle aktuellen Linux Distro tendieren dazu eine lokalen DNS Service einzusetzen (127.0.1.1 oder so), welcher die Logik per "/etc/hosts" aushebelt. bzw. auch alt bekannte Reihenfolgen & Listen per host.conf und hosts.equiv.


    Hintergrund dazu ist, die DNS Anfragen abzusichern, schwerer nachverfolgbar zu machen, generell eine gute Sache. Problem aber ist, wenn ein DNS Server in der Kette Zicken macht, man oft gar keine Namen mehr auflösen kann.


    Hast Du nur die DNS Server Deines Providers in der Konfiguration? Also die der per DHCP verpasst bekommt? Evtl. einen global generischen hinzufügen? 8.8.8.8, Google's DNS Server, der Erste DoT fähige ...


    Kann openWRT mit DNS-over-TLS (DoT) umgehen? Bei mir habe ich diese beiden für DoT drin stehen, lösen per IPv4 & IPv6 auf ...

    Code
    1. dns2.digitalcourage.de
    2. dns.google


    Nachtrag: Hat Vodafone Deinen Anschluß auf IPv6 umgestellt? Und Deine openWRT Router steht noch auf IPv4 only?

    HowTo: APT pinning

    The post was edited 1 time, last by fnu ().

  • Ich benutze nur die Server des Providers. Ein weiterer würde mir aber nicht helfen, denn bei einem Totalausfall des Internetzugangs kann dieser ja auch nicht mehr erreicht werden. Was ich erreichen möchte ist, dass mein lokaler DNS-Server (auf dem Router) bei einem Totalausfall des Internetzugangs wenigstens noch die lokalen Hostnamen (aus der /etc/hosts auf dem Router) auflöst, was er anscheinend nicht tut.

  • IPv6 nach Möglichkeit zu vermeiden (bitte keine Diskussion darüber ;-)

    Will das auch nicht diskutieren, aber bei meiner Mutter hatte ich letztens auch recht große Verbindungsprobleme, von einem Tag auf den anderen, Routen, Namen, etc. mit einzelnen Geräten. Stellte sich raus, das der Anschluß ohne große Ankündigung auf IPv6 umgestellt wurde.


    IPv6 dann in der FB aktiviert, waren alle Probleme gelöst. Also Wille hin oder her, musst Du Dich vorr. aber zwangsläufig irgendwann mit befassen, zumindest vom Provider zu Deinem Router ...

    HowTo: APT pinning

    The post was edited 2 times, last by fnu ().

  • Mein Router ist immer noch von aussen über die IPv4-Adresse erreichbar, das scheint es also nicht zu sein.


    Momentan würde mich vorrangig interessieren, wie ich erreichen kann, dass dnsmasq lokale Hostnamen auflöst, auch wenn der Upstream-Server nicht erreichbar ist.

  • Mein Router ist immer noch von aussen über die IPv4-Adresse erreichbar, das scheint es also nicht zu sein.

    Ja, meine beiden Router auch, IPv6 und IPv4. Aber die DNS Auflösung scheint offensichtlich durch IPv6 bei den T-Home Anschlüssen zu gehen, auch IPv4 Anfragen ...


    Momentan würde mich vorrangig interessieren, wie ich erreichen kann, dass dnsmasq lokale Hostnamen auflöst, auch wenn der Upstream-Server nicht erreichbar ist.

    DNSMASQ läuft doch nur auf dem Router? Und hat als Service IIRC seine eigene Datei, Datenbank ... und nutzt IIRC auch nicht "/etc/hosts"?

    HowTo: APT pinning

  • Das Problem mit dem intermittierenden Internetzugang hat sich anscheinend nach einem Reset des Kabelmodems erledigt. Momentan läuft es wieder flüssig.


    Dnsmasq läuft nur auf dem Router und die lokalen Hostnamen sind in /etc/hosts eingetragen (und nur dort).


    Zur Hardware: das Kabelmodem betreibe ich im Bridge-Mode und der Router ist daran angeschlossen.

  • Dnsmasq läuft nur auf dem Router und die lokalen Hostnamen sind in /etc/hosts eingetragen (und nur dort).

    Ja, mein Fehler, hatte die DHCP/DNS Tabelle von DD-WRT vor dem geistigen Auge ... sorry.


    Ansonsten habe ich diesen Link gefunden: https://www.linux-community.de…dns-und-dhcp-mit-dnsmasq/

    Quote

    DNS einrichten

    Den DNS-Server haben Sie im Handumdrehen eingerichtet. Es reicht, eine kurze Konfigurationsdatei mit einem Namen wie /etc/dnsmasq.d/dns anzulegen (Listing 1). Mit domain-needed fragt Dnsmasq nur dann den Upstream-Nameserver, wenn der angefragte Hostname einen Domainnamen enthält. Mit bogus-priv leitet das Tool Anfragen nach IP-Adressen, so genannte Reverse Lookups, nur dann an den Upstream-DNS-Server weiter, wenn diese nicht aus privaten IP-Adress-Bereichen stammen (siehe Kasten “Private IP-Adressbereiche”).

    HowTo: APT pinning

  • ... Was ich erreichen möchte ist, dass mein lokaler DNS-Server (auf dem Router) bei einem Totalausfall des Internetzugangs wenigstens noch die lokalen Hostnamen (aus der /etc/hosts auf dem Router) auflöst, was er anscheinend nicht tut.

    Bei mir gibts in openWRT (LuCI 19.07) unter Network - DHCP and DNS - Advanced Settings den Punkt "Filter private", der gesetzt ist und mit der Erklärung "Do not forward reverse lookups for local networks" versehen ist. Der müsste doch dann bei dir nicht gesetzt (gewesen) sein.

    MyVDR: yaVDR-Ansible (Ubuntu 18) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Schau mal in /etc/nsswitch.conf, was da für eine Reihenfolge eingetragen ist?

    hosts: files dns


    Aber das hängt auch von der Distribution ab, wie die die Reihenfolge der Namensauflösung festlegen. Ich könnte mir vorstellen, daß systemd da wieder irgendwelche Eigenheiten hat ...

  • Schau mal in /etc/nsswitch.conf, was da für eine Reihenfolge eingetragen ist?

    Eine solche Datei gibt es auf meinem Router nicht.


    In /etc/config/dhcp ist

    Code
    1. config dnsmasq
    2. ...
    3. option domainneeded '1'

    gesetzt, aber wenn ich z.B. auf meinem Desktop-PC 'nslookup aaaaaaaaa' mache (ohne Domain), dann sehe ich im tcpdump auf dem Router trotzdem, dass Daten zum Upstream-DNS geschickt werden:

    Code
    1. 23:19:35.066134 IP 188.193.xxx.xxx.35142 > 83.169.184.161.53: 55074+ A? aaaaaaaaa.tvdr.de. (35)
    2. 23:19:35.088003 IP 83.169.184.161.53 > 188.193.xxx.xxx.35142: 55074 NXDomain 0/1/0 (101)

    Interessant ist, dass hier die Domain mit angehängt ist, obwohl ich die beim nslookup nicht angegeben habe.

    In der /etc/config/dhcp steht zwar unter 'coonfig dnsmasq'

    Code
    1. option domain 'tvdr.de'

    aber auch wenn ich das weglasse verhält es sich nicht anders (dnsmasq wurde natürlich nach jeder Änderung neu gestartet).

  • Interessant ist, dass hier die Domain mit angehängt ist, obwohl ich die beim nslookup nicht angegeben habe.

    Nun, das passiert vmtl. auf dem PC selbst, das dort die Domain für die Suchanfrage angehängt wird ... ?

    HowTo: APT pinning

  • "Local server" ist korrekt gesetzt?


    Interessant ist, dass hier die Domain mit angehängt ist, obwohl ich die beim nslookup nicht angegeben habe.

    "Expand hosts" macht das, falls aktiviert (Advanced Settings).


    Ist eventuell "All Servers" oder "Strict order" aktiviert? Sollten beide aus sein.


    Die domain 'tvdr.de' ist öffentlich. Das könnte die Ursache sein, warum "Filter private" nicht geht.

    Bei mir OpenWRT 19.7 tritt das Problem nicht auf, allerdings hab ich ein 192.168.x.x Subnetz eingerichtet.

    Gruss
    SHF


  • "Local server" ist korrekt gesetzt?

    Das war's!


    Dort stand "/lan/" (ohne die ").

    Trage ich stattdessen "/tvdr.de/" ein dann werden Anfragen für diese Domain nicht mehr nach Upstream geschickt.

    Genau so will ich das haben :-). (Die externe IP meines Web-Servers habe ich auch in meiner lokalen /etc/hosts eingetragen).


    Danke!