Ich habe DNSMASQ installiert, aber es startete nicht, da Port 53 belegt war.
Ich habe herausgefunden, dass Ubuntu bereits über ein DNSMASQ-Paket verfügt und dass es funktioniert.
Jetzt ist das Problem...ich möchte nur in der Lage sein, meine Hosts in /etc/hosts dadurch aufzulösen
zB: nslookup somehostonlan localhost
zur Auflösung in eine bestimmte IP aus der Datei /etc/hosts.
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
Antwort1
Um das Internet zu beschleunigen, wurde in Ubuntu 12.04 ein Plugin zu NetworkManager hinzugefügt, um dnsmasq zu starten, einen lokalen DNS-Server, der DNS-Einträge zwischenspeichert. Das Problem ist, dass das Plugin die Zeichenfolge --no-hosts fest codiert hat.
Eine Lösung besteht darin, die Zeile, die das Plugin lädt, in der NetworkManager-Konfigurationsdatei auszukommentieren und NetworkManager neu zu 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 zu umschließen, 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 markieren Sieder Fehlerals Sie zu betreffen.
Eine andere Lösung ohne Patchen von Systemdateien
cat /etc/NetworkManager/dnsmasq.d/hosts.conf
addn-hosts=/etc/hosts
Antwort2
Dieser Fehler betrifft mich auch heute noch (Ubuntu 14.04).
Schließlich habe ich eine Lösung gefunden, bei der einfach die Zeile „addn-hosts=/etc/hosts“ zur dnsmasq-Konfigurationsdatei des Newworkmanager-Pakets hinzugefügt wird.
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 codierte Option „--no-hosts“ in der Binärdatei /usr/sbin/NetworkManager.
Antwort3
Stand August 2015 sind die anderen Antworten veraltet.
Einfache Antwort
- Erstellen
/etc/NetworkManager/dnsmasq.d/hosts.conf
. - Fügen Sie Zeilen wie
address=/whatever/1.2.3.4
diese ein. Siehedie Dokumente (suchen Sie nach--address
). Platzhalter sind möglich:address/.whatever./1.2.3.4
. - Töten
dnsmasq
(Insekt). - Starten Sie es neu:
$ service network-manager restart
.
Antwort4
dnsmasq sollte die Datei automatisch verwenden . Dies kann durch die Befehlszeilenoption oder die Konfigurationsoption /etc/hosts
deaktiviert werden . Ich würde nicht erwarten, dass eine der beiden Optionen in der Standardkonfiguration festgelegt ist.-h
no-hosts
Versuchen Sie, dnsmasq zu zwingen, seine 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 System arbeiten, das no-hosts
angegeben hat, sollten Sie die Option verwenden können, addn-hosts
um es zu überschreiben. Normalerweise wird dies verwendet, um eine zusätzliche Datei im /etc/hosts
Format zu lesen. Dies kann verwendet werden, um zusätzliche Hostdaten anzugeben, die DNS bereitstellen soll, die Sie aber nicht in Ihrer /etc/hosts
Datei haben möchten. Dies kann verwendet werden, um dem Paketmanager und zugehörigen Tools die Verwaltung zu ermöglichen, /etc/hosts
während zusätzliche Hostdaten in einer alternativen Datei bereitgestellt werden.