Einrichten von dnsmasq für ein lokales Netzwerk

18

Ich und eine kleine Gruppe von Entwicklern sind gerade in ein neues Büro umgezogen, und ich möchte dnsmasq auf unserem Entwicklungsserver einrichten. Wenn wir also dort Web-Apps bereitstellen, müssen wir unsere eigenen Hosts-Dateien nicht bearbeiten. Wir haben einen Router unter 192.168.3.1, auf den wir keinen Zugriff haben. Ich dachte, ich würde einen DNS-Server auf der Entwicklungs-Box installieren, und wir alle zeichnen dessen IP als sekundären DNS-Server auf. Leider habe ich Mühe, diese Arbeit zu machen.

Der Name des Entwicklerservers lautet devbox, die IP-Adresse lautet 192.168.3.99 und es wird der neueste Ubuntu-Server (Karmic) ausgeführt.

Auf meinem Computer läuft Ubuntu Desktop (Karmic)

Was ich gerne erreichen würde

Angenommen, ich habe drei Websites, website1, website2, website3, die auf der Entwicklungsbox ausgeführt werden. Ich möchte über die folgenden URLs darauf zugreifen:

http://website1.devbox
http://website2.devbox
http://website3.devbox

Also habe ich Apache auf der Devel-Box konfiguriert, dnsmasq installiert und die folgenden Zeilen in die Hosts-Datei geschrieben:

192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox

und bearbeitete meine eigene resolv.conf-Datei, um die Entwicklungsbox als Nameserver einzuschließen:

nameserver 192.168.3.99 

Es funktioniert gut, ich kann auf die Websites zugreifen. Das Problem ist, dass es nicht gut skaliert. Ich möchte, dass alle Domains, die mit .devbox enden, an die Entwicklungsbox weitergeleitet werden, und damit habe ich zu kämpfen.

Ich habe versucht zu setzen

192.168.3.99 devbox

in die hosts-Datei einfügen und die Zeile in der Datei dnsmasq.conf bearbeiten:

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/

Aber ich kann es nicht zum Laufen bringen. Wenn ich eine URL versuche, die nicht explizit in der Hosts-Datei der Entwicklungsbox vorhanden ist, schlägt die DNS-Suche fehl.

Ist die lokale Direktive für etwas anderes? Schaue ich am falschen Ort?

K. Norbert
quelle

Antworten:

14

Weitere Informationen finden Sie in der DNSmasq-Dokumentation , insbesondere in der Manpage zu dnsmasq und in der Beispielkonfigurationsdatei . Das Schlüsselwort local weist DNSmasq an, diese Domänensuchen mit lokalen Daten durchzuführen. Dies betrifft beispielsweise Anforderungen, die an DNSmasq für foo.localnet und bar.localnet gesendet werden. Ich glaube nicht, dass du das willst.

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/

Um zu erzwingen, dass Host- / Subdomänen-Suchvorgänge in eine bestimmte Adresse aufgelöst werden, möchten Sie wahrscheinlich das Schlüsselwort address verwenden . Das zweite Beispiel unten sollte zulassen, dass web1.devbox und web2.devbox und web73872.devbox alle in die angegebene Adresse aufgelöst werden.

# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
address=/doubleclick.net/127.0.0.1

# for your example
address=/devbox/192.168.3.99

Ich verwende DNSmasq zu Hause, um einfache DNS-Aufgaben für mein LAN zu erledigen. In diesem Fall sind die Schlüsselwörter local und die zugehörigen Schlüsselwörter domain und expand-hosts geeignet. Der DNSmasq-Server ist mein primärer Nameserver, daher werden alle Anforderungen durchlaufen. Nicht-lokale Adressen werden an den Nameserver des Internetdienstanbieters zurückgegeben. Sie können diese Konfiguration nach Möglichkeit in Betracht ziehen.

Quacksalber
quelle
Eine Antwort auf eine andere Frage weist darauf hin, dass address=/.devbox/192.168.3.99die Syntax für Ihre Zwecke möglicherweise besser geeignet ist.
Quack Quijote
Gee, ich hätte einfach die Teile lesen sollen, die ich aus der Konfiguration eingefügt habe, es war offensichtlich, dass es nicht das ist, was ich brauche. Die Adressrichtlinie hat das Problem gelöst, danke!
K. Norbert
Ich habe das oben Genannte mit einem Twist benutzt: Der Web- / DNS- / DHCP-Server verfügt über eine drahtlose Schnittstelle im Adhoc-Modus. Obwohl ich beim Erfassen von Paketen die mDNS-Anforderung UND die Antwort sehen kann, kann ich nicht über den Namen auf den Server zugreifen. Als ob der Inhalt der Antwort niemals registriert würde. Irgendwelche Ideen?
George