Lokaler DNS-Server mit Default-ip

Hupe

Aktives Mitglied
Mitglied seit
8 Apr 2004
Beiträge
2,586
Punkte für Reaktionen
0
Punkte
0
Hi Jungs,

ich möchte einen lokalen DNS-Server aufsetzen, der, wenn er den Domainnamen nicht über das Internet auflösen kann, eine "default-ip" zurück gibt. Schön wäre auch, wenn man das auf bestimmte Domains beschränken könnte.
Habe schon gegoogelt, aber nchts entsprechendes gefunden.
 
Warum schreibst Du die IP nicht einfach in dies hosts.conf und änderst dann die Reihenfolge in der resolv.conf so, daß er zuerst in die hosts.conf schaut und danach eine DNS-Abfrage macht ?
 
Zumindest von den dyndns.org-DNS-Servern bekommt immer eine Antwort und zwar die letzte dort registrierte/aktualisierte Adresse des betreffenden FQDN. Das heisst die Fallunterscheidung bei Dir wäre wahrscheinlich eher "Internet-Verbindung aktiv, ja oder nein" oder soetwas. Wenn der Rechner mit dem DNS-Server selbst den Status dieses on/off (oder wovon auch immer) feststellen kann dann ist es doch ein Leichtes, je nach Status die /etc/resolv.conf zu setzen. Die ganzen ppp/dhcp-up/down-Skripte machen auch nix Anderes.
Wegen der default-IP: Schau Dir mal dnsmasq an. Der konnte am Anfang nur die /etc/hosts verarbeiten und einen MX-Record ausliefern, die Entwickler haben den in den letzten Jahren jedoch mit Features vollgestopft, vielleicht beherrscht der soetwas inzwischen.Was gibt es noch? nsd, bind natürlich, fällt noch jemandem etwas ein?

Anderer Ansatz: Du nutzt dnsmasq. Der kann die /etc/hosts nutzen und überwacht selbständig Änderungen an dieser. Nicht in der hosts stehende Einträge werden an den parent DNS geschickt. Bei einem on/off-Event drehst Du nun nicht die /etc/resolv.conf sondern die /etc/hosts.
Beispiel: On - normale hosts, off - spezielle hosts in welcher deine dyndns-Namen auf lokale/bestimmte IPs umgesetzt werden. In der resolv.conf steht immer der dnsmasq drinnen, also die eigene Maschine. Wenn man an solch einen DNS-Server einen Windows-Clients anstöpselt sollte man tunlichst den DNS-Cache von Windows abschalten denn der mag permanent neue vom DNS-Server kommende IP-Adressen nicht leiden. Einziger Punkt: Der dnsmasg schaut 1x pro Min ob sich die hosts geändert hat. Wenn Du mit diesen max. 60 Sekunden leben kannst ...
 
@exim

Danke für die umfassende Antwort. Es geht in der Tat darum, dass die Domain-Namen noch (irgendwie) aufgelöst werden können, wenn die Internetverbindung getrennt ist, da sonst beim Asterisk wohl das gesamte Sip-System (auch intern) versagt.

(vergl. http://www.ip-phone-forum.de/forum/viewtopic.php?t=27070)
 
Ich benutze pdnsd . Der daemon speichert immer die neusten Antworten der DNS-Server und gibt diese auch dann weiter, wenn der DNS-Server nicht mehr erreichbar ist. Außerdem kann er auch alle Rechner auflösen, die in der hosts.conf eingetragen sind.
 
jradmacher schrieb:
Ich benutze pdnsd . Der daemon speichert immer die neusten Antworten der DNS-Server und gibt diese auch dann weiter, wenn der DNS-Server nicht mehr erreichbar ist. Außerdem kann er auch alle Rechner auflösen, die in der hosts.conf eingetragen sind.

Habe es mal damit probiert. Das "aus dem cache" die Adressen auflösen klappr auch. Nur leider löst er die Adressen dann nichtmehr aus dem Internet auf. Könntest Du mir mal bitte Deine pdnsd.conf zukommen klassen, damuit ich sehen, wie Du das konfiguriert hast. Dort habe ich zwar die DNS-Server eingetragen, eine Adressenauflösung findet aber nur statt, wenn auch ein DNS-Server für das Interface (in /etc/network/interfaces) ein DNS-Server angegeben ist. Dann klappt allerdings das auflösen der Adressen aus dem cach nichtmehrm, wenn die Verbindung abgebrochen ist. Irgendwie drehe ich mich da im Kreis! Ein bischen Hilfe könnte ich da noch vertragen (wenn Du mal Zeit hast). Für Deinen hinweis Danke ich Dir auf jeden Fall schon einmal!
 
Könntest Du mir mal bitte Deine pdnsd.conf zukommen klassen, damuit ich sehen, wie Du das konfiguriert hast.
kein Problem. Im Grunde gibt es 2 Möglichkeiten. Entweder du leitest alle Anfragen an den DNS deines Providers weiter (Das geht mit einer der beiden auskommentierten server optionen) oder du löst alles direkt auf (dafür gibt es die Liste der Root-Server). Letzteres passiert, wenn du meine Config beibehälst.

Code:
// Sample pdnsd configuration file. Must be customized to obtain a working pdnsd setup!
// Read the pdnsd.conf(5) manpage for an explanation of the options.

global {
        perm_cache=1024;
        cache_dir="/var/cache/pdnsd";
#       pid_file = /var/run/pdnsd.pid;
        run_as="pdnsd";
        server_ip = 192.168.178.4; # interne ip
        status_ctl = on;
#       paranoid=on;
        max_ttl=604800;    # One week
        timeout=10;        # Global timeout option.
}

/* server {
        label= "myisp";
        ip = 192.168.0.1;  # Put your ISP's DNS-server address(es) here.
        proxy_only=on;
        timeout=4;
        uptest=query;
        interval=600;
        ping_timeout=200;
        purge_cache=off;
}
*/

/*
server {
        label= "dialup";
        file = "/etc/ppp/resolv.conf";  # Preferably do not use /etc/resolv.conf
        proxy_only=on;
        timeout=4;
        uptest=if;
        interval=10;
        interface = ppp0;
        purge_cache=off;
        preset=off;
}
*/


server {
        label = "root-servers";
        root_server=on;
        ip =    198.41.0.4
        ,       192.228.79.201
        ,       192.33.4.12
        ,       128.8.10.90
        ,       192.203.230.10
        ,       192.5.5.241
        ,       192.112.36.4
        ,       128.63.2.53
#       ,       192.36.148.17
#       ,       192.58.128.30
#       ,       193.0.14.129
#       ,       198.32.64.12
#       ,       202.12.27.33
        ;
        timeout = 5;
        uptest = query;
        interval = 900;
        ping_timeout = 300;
        purge_cache = off;
        exclude = ".localdomain",".jradmacher.local";
        policy = included;
        preset = off;
}


source {
        owner=localhost;
#       serve_aliases=on;
        file="/etc/hosts";
}

rr {
        name=localhost;
        reverse=on;
        a=127.0.0.1;
        owner=localhost;
        soa=localhost,root.localhost,42,86400,900,86400,86400;
}
 
Ok, jetzt läuft es. Vielen Dank nochmal. Hatte einfach nur vergessen das Kommentar-Zeichen "/*" vor den Server-Einträgen zu entfernen. So konnte das dann ja nicht funzen. Jetzt läuft es prima!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.