Konfigurieren Sie NetworkManagers dnsmasq für die Verwendung von / etc / hosts

22

Ich habe DNSMASQ installiert, aber es wurde nicht gestartet, da der 53-Port belegt war.

Ich fand heraus, dass Ubuntu bereits dnsmasq-Paket hatte und es funktioniert.

Jetzt ist das Problem ... Ich möchte nur in der Lage sein, meine Hosts in / etc / hosts dadurch aufzulösen

dh: nslookup somehostonlan localhost um in eine bestimmte IP-Adresse aufgelöst zu werden, die aus der Datei / etc / hosts stammt.

aber das passiert nicht.

Warum? Übrigens, als Cache-DNS-Server funktioniert es einwandfrei. Ich möchte nur, dass es Hosts aus der Datei / etc / hosts auflöst, das ist alles

bakytn
quelle

Antworten:

22

Um das Internet zu beschleunigen, hat Ubuntu 12.04 dem NetworkManager ein Plugin hinzugefügt, mit dem dnsmasq gestartet werden kann, ein lokaler DNS-Server, der DNS-Einträge zwischenspeichert. Das Problem ist, dass das Plugin die Zeichenfolge --no-hosts fest codiert hat.

Als Lösung können Sie die Zeile auskommentieren, in der das Plugin in die NetworkManager-Konfigurationsdatei geladen wird, und NetworkManager neu starten:

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

Eine andere Lösung besteht darin, dnsmasq umzubrechen, um die unerwünschten Argumente herauszufiltern:

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

Bitte kennzeichnen Sie den Fehler als Sie betreffend.

Eine andere Lösung ohne Patchen von Systemdateien

cat /etc/NetworkManager/dnsmasq.d/hosts.conf 

addn-hosts=/etc/hosts
kbenoit
quelle
7

Dieser Fehler hat mich auch jetzt noch betroffen (Ubuntu 14.04).

Schließlich fand ich eine Lösung, die einfach diese Zeile 'addn-hosts = / etc / hosts' zur dnsmasq-Konfigurationsdatei des Newworkmanager-Pakets hinzufügt.

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

Die Idee ist, dass wir / etc / hosts als zusätzliche Hostdatei hinzufügen.

Selbst wenn ich eine Lösung finden könnte, enttäuscht mich die fest programmierte Option '--no-hosts' in der Binärdatei / usr / sbin / NetworkManager.

harish2704
quelle
7

Ab August 2015 sind die anderen Antworten veraltet.

Einfache Antwort

  1. Erstellen /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Setzen Sie Linien wie address=/whatever/1.2.3.4in es. Siehe die Dokumentation (siehe --address). Wildcards sind möglich: address/.whatever./1.2.3.4.
  3. Töte dnsmasq( Käfer ).
  4. Starten Sie es: $ service network-manager restart.
mightyiam
quelle
1

dnsmasq sollte die /etc/hostsDatei automatisch verwenden . Dies kann über die -hBefehlszeilenoption oder die no-hostsKonfigurationsoption deaktiviert werden . Ich würde auch nicht erwarten, in der Standardkonfiguration eingestellt zu werden.

Versuchen Sie, dnsmasq zu zwingen, die Hosts-Datei neu zu laden. (Änderungen an der Konfigurationsdatei erfordern einen Neustart). Jeder dieser Befehle sollte funktionieren.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Wenn Sie mit einem angegebenen System arbeiten, no-hostssollten Sie die addn-hostsOption verwenden können, um es zu überschreiben. Normalerweise wird dies zum Lesen einer zusätzlichen Datei im /etc/hostsFormat verwendet. Dies kann verwendet werden, um zusätzliche Hostdaten anzugeben, die DNS bereitstellen soll, aber nicht in Ihrer /etc/hostsDatei enthalten sein soll. Dies kann verwendet werden, um dem Paketmanager und verwandten Tools die Verwaltung zu ermöglichen, /etc/hostswährend zusätzliche Hostdaten in einer alternativen Datei bereitgestellt werden.

BillThor
quelle
In /etc/dnsmasq.conf sind alle Optionen auskommentiert. Nachladen hilft nicht
bakytn
Ich weiß nicht, was ich getan habe. es scheint jetzt zu funktionieren
bakytn
3
Warum würdest du das beantworten, wenn du die Antwort nicht wirklich kennst? Die Tatsache, dass Sie nicht erwarten würden, dass dies in der Standardkonfiguration festgelegt wird, ist nicht der Fall, da dies in NetworkManger in dnsmasq festgelegt und fest programmiert ist.
Justin Buser
dnsmasq muss neu gestartet werden, um Änderungen in Konfigurationsdateien zu laden
txwikinger
@txwikinger Viele Optionsdateien werden beim dnsmasqEmpfang eines HUPSignals erneut gelesen . Dies schließt sowohl die /etc/hostsals auch die /etc/ethersDateien ein. Die Neustartzeiten sind schnell genug, sodass Clients selten keine Antwort erhalten.
BillThor