Leiten Sie die vollständige TLD (* .dev zum Beispiel) zu 127.0.0.1

29

Zu Entwicklungszwecken möchte ich, dass alle DNS-Anfragen an die .dev-TLD an meinen eigenen PC weitergeleitet werden.

Die hosts-Datei reicht nicht aus. Ich verwende mehrere Domains und auch mehrere Subdomains. Ich müsste für jede Kombination eine Zeile hinzufügen.

Ich habe gelesen, dass ein DNS-Forwarder wie DNSmasq verwendet werden kann, um die Arbeit zu erledigen (zum Beispiel wie hier beschrieben ). Auch diese Software ist bereits auf Ubuntu 12.10 installiert.

Das Problem ist, dass ich nicht sehe, wie und wo ich DNSmasq konfigurieren soll, dh wo ich diese Zeile setzen soll:

address=/dev/127.0.0.1
Roel van Duijnhoven
quelle
1
Möglicherweise möchten Sie nicht verwenden, .devwie Google es aufgenommen hat. Ich recherchiere immer noch, wofür sie es verwenden und ob sie vorhaben, dass normale Leute sich mit ihm verbinden oder nur Mitarbeiter, aber Sie möchten möglicherweise nicht den gesamten Zugriff umleiten, falls es der erstere ist, es sei denn, dies ist eine reine Testbox stellt keine Verbindung zu externen Hosts her
Trysis

Antworten:

18

In Ubuntu 12.04 und 12.10 ist nicht standardmäßig das vollständige eigenständige dnsmasq (DHCP- und DNS-Server) installiert, in Ubuntu Desktop 12.04 und 12.10 ist jedoch standardmäßig ein Paket namens dnsmasq-base installiert. Das dnsmasq-base-Paket enthält die dnsmasq-Binärdatei und wird von NetworkManager verwendet.

Um das zu tun, was Sie wollen, müssen Sie dnsmasq als DNS-Cache-Server verwenden. Du brauchst:

  • Installieren Sie dnsmasq sudo apt-get install dnsmasq
  • Ändern Sie Ihre Netzwerkeinstellungen so, dass Ihr Computer sich selbst als DNS-Server verwendet.
  • Nehmen Sie die Änderungen an den Konfigurationsdateien vor:

Erstellen Sie /etc/dnsmasq.d/dev-tldmit diesen Inhalten:

local=/dev/

address=/dev/127.0.0.5

Der erste Befehl besagt, dass *.devAnfragen nicht an Ihren realen DNS-Server weitergeleitet werden können. Der zweite besagt, *.devzu 127.0.0.5welchem ​​localhost entschieden wird.

  • Starten Sie den dnsmasq-Dienst neu (nicht den Netzwerkmanager)
Javier Rivera
quelle
Vielen Dank! Es war sehr hilfreich, dass ich herausfand, dass das DNSMasq-Geschenk nicht das richtige war. Nachdem ich das gesamte Paket installiert und wie beschrieben konfiguriert habe, bevor ich es zum Laufen gebracht habe. :)
Roel van Duijnhoven
1
Ich würde die andere Antwort für aktuelle Desktop-Installationen vorziehen . Bei den letzten Desktop-Installationen würden Sie auf diese Weise zwei dnsmasq-Instanzen ausführen. Ihre Antwort kann bei Nicht-NetworkManager-Setups, älteren Setups (ohne Verwendung von dnsmasq) oder sogar Serverinstallationen sehr nützlich sein!
gertvdijk
Ja, eine andere Antwort ist am besten seit Ubuntu 12.10.
BenjaminRH
21

In Ubuntu 12.10 oder höher können Sie dies mit dnsmasq tun, wie es von NetworkManager ausgeführt wird.

  1. Erstellen Sie das Verzeichnis, mkdir /etc/NetworkManager/dnsmasq.dfalls es noch nicht existiert.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Werfen Sie die folgende Zeile in /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Starten Sie NetworkManager neu.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Starten Sie Dnsmasq neu.

    sudo service dnsmasq restart
    
  5. Genießen Sie die Großartigkeit.

Bildbeschreibung hier eingeben

jrg
quelle
1
Vielen Dank an AbrahamVanHelpsing für den Link zum Arch-Wiki .
27.
Nachdem ich deinen Schritten gefolgt bin, sehe ich immer noch "unknown host", nachdem ich einen Ping ausgeführt habe. Muss ich DNSMasq an einem anderen Ort konfigurieren / aktivieren? Oder meine Netzwerkeigenschaften anders konfigurieren? Vielen Dank!
Roel van Duijnhoven
Interessant. es zeigt sich gut für mich.
jrg
Ah, @RoelvanDuijnhoven - Laufen Sie 12.10 oder 12.04? Funktioniert gut für mich am 12.10.
jrg
Ich laufe 12.10. Ich muss jedoch erwähnen, dass ich versucht habe, eine Konfigurationsdatei zu ändern, bevor ich hier eine Frage stelle. Möglicherweise mindern diese Änderungen Ihre Lösung. Javier Riveras Lösung hat es jedoch geschafft!
Roel van Duijnhoven
1

Folgendes hat in Ubuntu 16.04 für mich funktioniert:

  1. Installieren dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. dnsmasq.confDatei bearbeiten :

    sudo nano /etc/dnsmasq.conf
    
  3. Fügen Sie Ihren Befehl hinzu:

    address=/dev/127.0.0.1
    

    Für Platzhalter (*) können Sie dann Punkt (.) Und dann dnsmasq verwenden, um WHATEWER_YOU_PUT_HERE.yourmachine.yourdomaindieselbe IP aufzulösen . Z.B,address=/.localhost.dev/127.0.0.1

  4. Starten Sie den dnsmasq-Dienst neu:

    sudo /etc/init.d/dnsmasq restart
    
Jeril
quelle
0

Habe gerade eine neue 19.04 installiert und die einzige Möglichkeit, wie ich sie zum Laufen gebracht systemd-resolvedhabe, war das Deaktivieren und NetworkManagerVerwenden dnsmasqstattdessen für DNS. NetworkManagerhat eingebaute Unterstützung für dnsmasqund das dnsmasq-basePaket ist standardmäßig installiert.

Ich weise mehrere Domains zu verschiedenen VMs wie *.customerX.testzu 192.168.33.10und *.productY.testzu 192.168.33.20und so weiter. Ich würde nicht *.devmehr verwenden, sondern eine der reservierten Top-Level-Domains .

Lösung

  1. Deaktivieren systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Bearbeiten /etc/NetworkManager/NetworkManager.conf, um dnsmasqfür DNS zu verwenden.

    [main]
    dns=dnsmasq
    
  3. dnsmasqKonfiguration eingeben/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. und schließlich neu starten, NetworkManagerwodurch eine neue generiert wird/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
domo
quelle