dnsmasq, Release 2.40

leo22

Aktives Mitglied
Mitglied seit
13 Apr 2005
Beiträge
920
Punkte für Reaktionen
6
Punkte
18
Hier wurde von supamicha erstmals berichtet, dass der neue dnsmasq nicht mit Punkten im Hostnamen zurechtkommt.

Ich dachte, das wäre ein Fehler im dnsmasq, aber ich denke, dass das so gewollt ist. Seit Release 1.6 gibt es die Option -s domainname. Diese gibt den Domain-Teil des Hostnamens für den DHCP-Server an und soll verhindern, dass ein nicht vertrauenswürdiger Host im LAN seinen Namen über DHCP nicht "einschleusen" kann. Es ist wohl vorgesehen, dass nur ein solcher Hostname pro DHCP-Server existiert. Dieser kann in der neuen dsmod-Weboberfläche bei DNS-Server unter Domain angeben.

Ich habe diese Option mal im
Wiki etwas erläutert.

Dazu nun noch drei Änderungsvorschläge:

* Warum steht Domain in der Weboberfläche unter DNS-Server?
Es ist doch eine DHCP-Server-Option.

* Gibt man in der Host-Liste Punkte in den Namen an, erfolgt keine Fehlermeldung in der Weboberfläche. Man denkt also, es ist alles korrekt, nur die Adresszuordnung aus der Hosts-Liste funktioniert auf einmal nicht mehr. Ungenaue Infos findet man nur im Log:
Code:
Jan  7 18:48:48 fritz daemon.info dnsmasq[496]: read /etc/hosts - 9 addresses
Jan  7 18:48:48 fritz daemon.err dnsmasq[496]: bad name at /etc/ethers line 4
Jan  7 18:48:48 fritz daemon.info dnsmasq[496]: read /etc/ethers - 7 addresses
Wobei in Zeile 4 der Datei ethers ein Punkt steht. Dieser Fehler müsste in der Weboberfläche rückgemeldet werden.

* Gibt man bei Domain ein # ein (laut manpages wird Domain von der ersten search-Direktive in /etc/resolv.conf gelesen), kommt im Webinterface die Fehlermeldung
Code:
Stopping dnsmasq...done.
Starting dnsmasq...
dnsmasq: no search directive found in /etc/resolv.conf
failed.
Danach ist dnsmasq gestoppt, eine DNS-Zuordnung ist nicht mehr möglich, und die Box lässt sich nur noch über ihre IP-Adresse ansprechen, alle andern Rechner natürlich auch nur. Da hilft nur ein Neustart des Dienstes.
Was steht überhaupt in der resolv.conf? Kann man da nichts Sinnvolles für die #-Option reinschreiben?
 
Hi leo,

zur ersten Frage kann ich eine Antwort geben:
In der Weboberfläche von 15.2 steht die Optionen-Zeile beim DNS.
Es handelt sich eigentlich um die Optionen für dnsmasq im allgemeinen.
Das bedeutet, ich kann hier Optionen für DNS UND DHCP angeben.
Genau genommen gehört diese Optionszeile weder zu DNS noch zu DHCP (oder zu beiden). Sie sollte eigentlich ganz zum Schluß aufgelistet werden oder das gesammte Webinterface sollte erweitert werden.

Meine Optionszeile sieht z.B. so aus:
Code:
-s LOKALEDOMAIN -S /REMOTEDOMAIN1/192.168.202.1 -S /202.168.192.in-addr.arpa/192.168.202.1 -S /REMOTEDOMAIN2/192.168.203.1 -S /203.168.192.in-addr.arpa/192.168.203.1
Da ich OpenVPN mit zwei Clientnetzen einsetze muss ich die DNS Auflösung (forw. und rev.) über dnsmasq steuern.

Ich hatte auch mal versucht das Webinterface aufzubohren. Leider ist der Versuch eingeschlafen :(

Hoffe zum Verständnis beigetragen zu haben.

wengi

EDIT: Eines ist für die Optionszeile definitiv festzustellen: Sie ist in der Ansicht zu kurz geraten :)
 
Zuletzt bearbeitet:
In der Weboberfläche von 15.2 steht die Optionen-Zeile beim DNS.
Es handelt sich eigentlich um die Optionen für dnsmasq im allgemeinen.
Das bedeutet, ich kann hier Optionen für DNS UND DHCP angeben.
Ich meinte hier die 2.40-Weboberfläche von supamicha. Dort gibt es die Abschnitte Starttyp, DNS-Server und DHCP-Server.

Bei DNS-Server gibt's ein Feld für Domain und eines für Zusätzliche Kommandozeilen-Optionen (für Experten). Bei den Kommandozeilen-Optionen kann man sicht streiten, dort wäre sicher ein gesonderter Abschnitt sinnvoll, da die Optionen für den gesamten dnsmasq gelten. Aber das Feld Domain gehört eindeutig zum DHCP-Server (es beinhaltet einfach nur den Wert der hinter -s steht).


Noch eine Bemerkung zu dem Punkte-Fehler: Man müsste sich vielleicht doch noch mal an die Entwickler von dnsmasq wenden.

Denn keine Punkte in der Hosts-Liste zu verwenden, ist wohl doch nicht ganz akzeptabel. Wenn ich z. B. folgendes wollte, dann geht das nicht:
pc1.adam.fritz.box
pc2.eva.fritz.box
Man kann zwar -s fritz.box angeben, aber in der Hosts-Liste müsste dann immer noch pc1.adam und pc2.eva stehen, und das führt zur Fehlermeldung.
 
Ups... da lag ich wohl daneben.
Da ich jetzt auf die Schnelle das neue Webinterface nicht zum laufen bekomme:
Kannst Du mal einen Screenshot davon posten?

danke
wengi
 
Auf die Schnelle nicht, da meine Box nicht hier ist :(
o. k. hier ist er:
 

Anhänge

  • dnsmasq.jpg
    dnsmasq.jpg
    52.4 KB · Aufrufe: 117
Zuletzt bearbeitet:
Hi,

Danke schön.
Ich glaube ich werde mir das bei Gelegenheit mal auf die Testbox flashen müssen, um genau zu sehen, was genau gemacht wird.

Wenn die eingetragene Domain mit dem -s Switch verwendet wird ist es allerdings eine DHCP Option...

wengi
 
Es stecken
Code:
-E -s domainname
dahinter.

Aber vielleicht könnte sich jemand kundiges nochmal um das Problem mit den Punkten in der ethers-Datei kümmern.

Und etwas unklar ist mir auch noch der Inhalt von resolv.conf, wer (welcher Prozess) trägt den dort ein?
 
Zu den Punkten im Hostname: laut Definition in den einschlägigen RFCs (wobei ich die Nr gerade nicht finde *duck*) ist ein Punkt in Hostnamen nicht erlaubt, weil er eben als Trennzeichen zum Domainnamen verwendet wird.

Denn keine Punkte in der Hosts-Liste zu verwenden, ist wohl doch nicht ganz akzeptabel. Wenn ich z. B. folgendes wollte, dann geht das nicht:
pc1.adam.fritz.box
pc2.eva.fritz.box
Ich verstehe ehrlich gesagt nicht, was Du erreichen willst? Welche IPs sollen denn über welche Namen erreichbar sein? Hast Du Deinen lokalen Resolver korrekt konfiguriert, d.h. einen Hostnamen, einen Domainnamen und eine Suchliste angegeben?
 
Ich will das nicht erreichen, war nur ein Beispiel mit fritz.box als Domainname.

Und wenn es wirklich laut RFC so ist, dass Punkte im Hostnamen nicht erlaubt sind (im Domainnamen dürfen dann aber auch mehrere Punkte stehen?), dann darf mein Beispiel ja definitionsgemäß nicht funktionieren. Also ist das auch kein Fehler in dnsmasq. Verstehe ich das richtig?

Wenn dem so ist, dann könnte das aber trotzdem bei der Konfiguration geprüft werden bzw. die Fehlermeldung nicht nur ins Log geschrieben werden sondern gleich auf der Konfigurationsseite erscheinen.

[EDIT]
Wo nimmt AVM denn die Namen der Netzwerkgeräte her? In deren GUI steht nämlich nur der Hostname. Schön wäre wenn hier auch hostname.domainname stehen würde.
 
Zuletzt bearbeitet:
Nochmal langsam:
  • Hostnamen dürfen keine Punkte enthalten
  • Domainnamen (an sich) sind wie Hostnamen, dürfen auch keine Punkte enthalten
  • Eine ("Gesamt")Domain kann aber hierarchisch strukturiert werden, als Trennzeichen wird dann der Punkt verwendet, daher kommen dann "Domainnamen" wie z.B. verwaltung.meinedomain.de
  • Kombiniert man den Hostnamen mit dem Domainnamen entsteht der s.g. FQDN
  • bei "fritz.box" würde man also "fritz" als Hostnamen ansehen, "box" als Domainnamen
  • in der resolv.conf werden Informationen für den lokalen Resolver gespeichert, auf der Fritzbox wird die Datei aus Informationen der ar7.cfg erzeugt (vermutlich der multid), eine ordentliche "search" Direktive ist dort nicht unbedingt erforderlich, daher lässt AVM das einfach weg
  • Die Namen im AVM-WebInterface sind vermutlich die Hostnamen, die jeder Client bei seiner DHCP-Anfrage mitsendet (machen i.d.R. alle Windows-Clients, bei Linux kann man das z.B. auch deaktivieren, dann kommt dort nix); das kann man IMHO aber nicht ändern, weil dazu eine Anpassungen des Fileformats vorgenommen werden müsste und des AVM-Tools, welches diese Datei ausliest (keine Quellen vorhanden)
  • in der /etc/hosts bzw. in der /etc/ethers, welche von dnsmasq ausgewertet werden, dürfen durchaus auch Punkte in den Namen stehen, allerdings werden die dann ggf. als FQDN interpretiert
  • diese beiden Dateien werden im dsmod aus der Datei exhosts erzeugt (diese kann man über das WebInterface eingeben).
  • in meiner Konfiguration habe in zwei getrennte Netze auf einer Box, die auch zwei getrennten Domain zugeordnet sind: bei dem einen Netz schreibe ich konsequent nur die Hostnamen ohne die Domain in die exhosts und dnsmasq gebe ich die Domain mit, bei der zweiten Domain schreibe ich alle Namen als "rechner-a.domain2.intranet." rein (man beachte den Punkt am Ende, der festlegt, dass des es sich um einen FQDN handelt, so dass dort keine weiteren Domains angehängt werden)

Hoffe, jetzt sind alle Klarheiten beseitigt ;-)
 
Hoffe, jetzt sind alle Klarheiten beseitigt ;-)
Nein :D Trotzdem vielen Dank für deine sehr ausführlichen Erläuterungen.

Ich hatte mir vorgenommen, das Webinterface von dnsmasq mal zu überarbeiten, es gibt ja auch noch andere Optionen, die man dort aufführen könnte. Deshalb bestehen bei mir noch folgende Unklarheiten:
derheimi schrieb:
Eine ("Gesamt")Domain kann aber hierarchisch strukturiert werden, als Trennzeichen wird dann der Punkt verwendet, daher kommen dann "Domainnamen" wie z.B. verwaltung.meinedomain.de
Die Frage mit den Punkten (so wie alles hier) bezog sich ausschließlich auf das Eingabefeld Domain im dnsmasq-Webinterface.

Dort dürfen also Punkte enthalten sein, da ja dort auch als default fritz.box drinsteht. Die Bezeichnung Domain ist vielleicht in diesem Falle etwas irreführen, sollte man da was anderes schreiben? Fully Qualified Domain Name (FQDN) wäre da aber auch nicht korrekt, da der ja den Hostnamen einschließt, hast du einen Vorschlag?
derheimi schrieb:
in der resolv.conf werden Informationen für den lokalen Resolver gespeichert
Soweit ich es in Erinnerung hatte, stehen dort aber Adressen drin, die nicht der Realität entsprechen, kann jetzt aber leider nicht nachsehen :( Was steht denn da bei dir drin?
derheimi schrieb:
in der /etc/hosts bzw. in der /etc/ethers, welche von dnsmasq ausgewertet werden, dürfen durchaus auch Punkte in den Namen stehen, allerdings werden die dann ggf. als FQDN interpretiert
Mein Problem ist aber, dass dnsmasq bei Punkten in der ethers eine Fehlermeldung bringt. Oder kommt die nicht wenn man am Ende noch einen Punkt angibt? Oder ist das doch ein Fehler in dnsmasq?
 
Ich hatte mir vorgenommen, das Webinterface von dnsmasq mal zu überarbeiten...
Das ist -wie ich finde- eine gute Idee.

Dort dürfen also Punkte enthalten sein, da ja dort auch als default fritz.box drinsteht. Die Bezeichnung Domain ist vielleicht in diesem Falle etwas irreführen, sollte man da was anderes schreiben?
Also unter Windows wird das als "DNS-Suffix" bezeichnet, unter yast bei OpenSUSE als "Domain Name". Beide Bezeichnungen haben Vor- und Nachteile, ich persönlich würde ja zu letzterem tendieren. BTW: wo kommt dieser Default "fritz.box" her?
Soweit ich es in Erinnerung hatte, stehen dort aber Adressen drin, die nicht der Realität entsprechen, kann jetzt aber leider nicht nachsehen :( Was steht denn da bei dir drin?
Code:
nameserver 192.168.180.1
nameserver 192.168.180.2
Meine Box ist DSL-Router. Damit ist das schon sinnvoll, weil damit DNS-Anfragen zum Provider weitergeleitet werden. Hängt die Box als IP-Client im Netz stehen dort die Angaben drinne, die Du im WebInterface machst. Da die Box in der Regel aber nicht selbst auf die anderen Geräte im LAN zugreift, braucht AVM an dieser Stelle auch keine DNS-Search-Option. Daher lassen die das halt einfach weg.

Mein Problem ist aber, dass dnsmasq bei Punkten in der ethers eine Fehlermeldung bringt. Oder kommt die nicht wenn man am Ende noch einen Punkt angibt? Oder ist das doch ein Fehler in dnsmasq?
Hm, bei mir stehen in der /etc/ethers auch FQDNs mit Punkten drinne - ohne besondere Meldung. Ich hab aber auch noch nicht die finale 2.40er sondern nur die 2.40test6 am laufen. (Das war die erste Testversion, die das Problem mit den Punkten im Hostnamen anging.)

Kannst Du bitte nochmal zusammenfassen, was bei Dir in der /tmp/flash/exhosts und dann in der erzeugten /etc/ethers steht und somit die Meldung provoziert? Vielleicht hat ja das Script nen Fehler, was die ethers erzeugt? Ich kann mir aber nochmal fix das Script ansehen...
 
Nach dem Ändern im Webinterface (Hosts) kommt die folgende Fehlermeldung:
Code:
Jan 12 15:59:30 fritz user.info multid[1239]: stopped.
Jan 12 15:59:30 fritz daemon.info dnsmasq[603]: exiting on receipt of SIGTERM
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: started, version 2.40 cachesize 150
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: compile time options: no-IPv6 GNU-getopt no-ISC-leasefile no-DBus no-I18N TFTP
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: DHCP, IP range 192.168.178.11 -- 192.168.178.200, lease time 12h
Jan 12 15:59:32 fritz daemon.warn dnsmasq[1258]: running as root
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: reading /etc/resolv.conf
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: using nameserver 192.168.180.2#53
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: using nameserver 192.168.180.1#53
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: read /etc/hosts - 5 addresses
Jan 12 15:59:32 fritz daemon.err dnsmasq[1258]: [COLOR=Red]bad name at /etc/ethers line 4[/COLOR]
Jan 12 15:59:32 fritz daemon.info dnsmasq[1258]: read /etc/ethers - 3 addresses
Inhalt von exhosts:
Code:
192.168.178.5 * * computer
192.168.178.11 00:50:51:52:53:54 * drucker1
192.168.178.12 00:50:51:52:53:55 * drucker2
192.168.178.21 00:50:51:52:53:56 * rechner0
192.168.178.31 00:50:51:52:53:57 * rechner.rechner
Inhalt von ethers:
Code:
00:50:51:52:53:54        drucker1
00:50:51:52:53:55        drucker2
00:50:51:52:53:56        rechner0
00:50:51:52:53:57        rechner.rechner
 
Code:
Jan 12 15:59:32 fritz daemon.err dnsmasq[1258]: [COLOR=Red]bad name at /etc/ethers line 4[/COLOR]

Ist "rechner.rechner" denn ein Name, der auf eine gültige IP-Adresse aufgelöst werden kann? Evtl. mit nslookup oder ping kontrollieren.

Aus "man ethers":
Ethernet-address IP-number
The IP-number may be a hostname which can be resolved by DNS or a dot separated number.
Das bezieht sich jetzt nicht auf dnsmasq speziell, aber ich würde es so verstehen, daß man entweder eine IP-Adresse in numerischer Form eingeben kann oder einen Namen, der über DNS zu einer IP-Adresse aufgelöst wird.

Gab es irgendwo eine Meldung, die speziell darauf hindeutet, daß der Punkt im Namen stört? Ansonsten würde ich davon ausgehen, daß der Name nur nicht zu einer IP-Adresse aufgelöst werden kann.
 
RalfFriedl schrieb:
Ist "rechner.rechner" denn ein Name, der auf eine gültige IP-Adresse aufgelöst werden kann?
Nein, ist er ja eben nicht.

00:50:51:52:53:57 soll durch dnsmasq über DHCP die IP 192.168.178.31 und den Namen rechner.rechner zugewiesen bekommen.

RalfFriedl schrieb:
Gab es irgendwo eine Meldung, die speziell darauf hindeutet, daß der Punkt im Namen stört?
Nein, das habe ich nur von hier. Aber wenn ich den Punkt weglasse, funktioniert es.
 
Wie sieht bei Dir denn die Datei /etc/hosts aus?
Funktioniert nslookup oder ping auf fritz.box?

Versuche mal ggf rechner.rechner in die /etc/hosts einzutragen.
 
Das macht die Weboberfläche des ds-mod allein. Alles was in exhosts steht wird schön aufgeteilt in hosts und in ethers geschrieben.

Inhalt von hosts:
Code:
192.168.178.5  computer
192.168.178.11 drucker1
192.168.178.12 drucker2
192.168.178.21 rechner0
192.168.178.31 rechner.rechner
 
Ich weiß, daß der ds-mod die Dateien aus der exhosts erzeugt.

Was ich vermute ist, daß die normale Namesauflösung aus ping oder nslookup den Namen rechner.rechner aus der /etc/hosts erkennen würde und die IP-Adresse dafür liefern würde.

Dann wäre nur noch zu klären, warum dnsmasq das nicht tut. Der DNS-Server von AVM kennt ja auch fritz.box, und zwar vermutlich aufgrund des Eintrags in /etc/hosts.
 
Ich will eure Diskussion nicht stören, aber so eine Verständnisfrage:
Wenn man dnsmasq auf der Box hat, wie läuft es überhaupt mit DNS? Wer ist der DNS-Server? AVM-Teil, oder wird es durch dnsmasq "abgeschaltet", oder laufen beide parallel?
Mit DHCP-Server ist mir einigermassen klar: Man kann sogar beide parallel laufen lassen: AVM-eigenes und von dnsmasq. Führt zwar zu einigen Problemen und zum Durcheinander, aber funktioniert halbwegs. Man kann (und sollte) auch eins von beiden DHCP-Server abschalten, dann läuft die ganze Geschichte glatter. Aber DHCP und DNS sind zwei Paar Schuhen, die zwar Hand an Hand zusammen arbeiten, trotzdem aber unterschiedlich sind.

Deswegen ist diese Verständnisfrage über DNS. Denn logischerweise sollen dann nicht nur Probleme mit "rechner.rechner" auftreten, sondern auch mit "fritz.box", denn die beiden sind von der gleichen Natur.

MfG
 
Der DNS-Server horcht auf Port 53. Wenn der dnsmasq im Image ist, dann wird dafür gesorgt (durch einen multid-Wrapper), dass er vor dem multid gestartet wird.

MfG Oliver
 
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.