Instradare TLD completo (* .dev per esempio) a 127.0.0.1


29

Ai fini dello sviluppo, desidero inoltrare tutte le richieste DNS al TLD .dev sul mio PC.

Il file hosts non è sufficiente. Uso più domini e anche più sottodomini. Dovrei aggiungere una riga per ogni combinazione.

Ho letto che un server di inoltro DNS come DNSmasq può essere utilizzato per fare il lavoro (ad esempio, come descritto qui ). Anche questo software è già installato su Ubuntu 12.10.

Il problema è che non riesco a vedere come e dove dovrei configurare DNSmasq, cioè dove dovrei mettere questa linea:

address=/dev/127.0.0.1

1
Potresti non voler utilizzare .devcome Google lo ha preso. Sto ancora cercando per cosa lo useranno e se pianificano che le persone normali si connettano ad esso o solo ai dipendenti, ma potresti non voler reindirizzare tutti gli accessi nel caso sia il primo, a meno che questo non sia puramente una casella di test che non si collegherà mai a host esterni.
trysis,

Risposte:


18

Il dnsmasq completo standalone (server DHCP e DNS) non è installato di default in Ubuntu 12.04 e 12.10, ma un pacchetto chiamato dnsmasq-base è installato di default in Ubuntu Desktop 12.04 e 12.10. Il pacchetto dnsmasq-base contiene il file binario dnsmasq ed è utilizzato da NetworkManager.

Per fare ciò che desideri dovrai usare dnsmasq come server DNS di cache. Devi:

  • Installa dnsmasq sudo apt-get install dnsmasq
  • Modifica le impostazioni di rete, in modo che il tuo computer si usi da solo come server DNS.
  • Apporta le modifiche ai file di configurazione:

Crea /etc/dnsmasq.d/dev-tldcon questi contenuti:

local=/dev/

address=/dev/127.0.0.5

Il primo comando dice che le *.devrichieste non possono essere inoltrate al tuo vero server DNS. Il secondo dice *.devrisolve 127.0.0.5quale è localhost.

  • Riavvia il servizio dnsmasq (non gestore della rete)

Grazie! È stato estremamente utile sapere che il presente DNSMasq non era il vero affare. Dopo aver installato il pacchetto completo e averlo configurato nel modo che ho descritto prima di farlo funzionare. :)
Roel van Duijnhoven il

1
Preferirei l'altra risposta per le recenti installazioni desktop. Per le recenti installazioni desktop si eseguiranno due istanze dnsmasq in questo modo. La tua risposta potrebbe essere molto utile nelle configurazioni non NetworkManager, in quelle precedenti (che non utilizzano dnsmasq) o persino nelle installazioni di server!
gertvdijk,

Sì, l'altra risposta è la migliore da Ubuntu 12.10.
BenjaminRH,

21

In Ubuntu 12.10 o versioni successive puoi farlo con dnsmasq come gestito da NetworkManager.

  1. Crea la directory mkdir /etc/NetworkManager/dnsmasq.dse non esiste già.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Inserisci la seguente riga in /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Riavvia NetworkManager.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Riavvia Dnsmasq.

    sudo service dnsmasq restart
    
  5. Goditi la bellezza.

inserisci qui la descrizione dell'immagine


1
Grazie ad AbrahamVanHelpsing per il collegamento alla wiki dell'arco su come eseguire questa operazione.
gennaio

Dopo aver seguito i tuoi passi ancora vedo "host sconosciuto" dopo aver eseguito un ping. Devo configurare / abilitare DNSMasq in qualche altro posto? O configurare le proprietà della mia rete in modo diverso? Grazie!
Roel van Duijnhoven,

Interessante. si presenta bene per me.
gennaio

Ah, @RoelvanDuijnhoven - corri il 12.10 o il 12.04? Funziona bene per me il 12.10.
gennaio

Sto correndo il 12.10. Ma devo menzionare che ho provato a modificare alcuni file di configurazione prima di porre una domanda qui. Forse questi cambiamenti mitigano la tua soluzione. La soluzione di Javier Rivera ha funzionato comunque!
Roel van Duijnhoven,

1

Il seguente ha funzionato per me in Ubuntu 16.04:

  1. Installare dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. Modifica dnsmasq.conffile:

    sudo nano /etc/dnsmasq.conf
    
  3. Aggiungi il tuo comando:

    address=/dev/127.0.0.1
    

    Per i caratteri jolly (*), è possibile utilizzare punto (.) Quindi dnsmasq per risolvere WHATEWER_YOU_PUT_HERE.yourmachine.yourdomainlo stesso IP. Per esempio,address=/.localhost.dev/127.0.0.1

  4. Riavvia il servizio dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

Ho appena installato un nuovo 19.04 e l'unico modo per farlo funzionare è stato disabilitare systemd-resolvede NetworkManagerutilizzare dnsmasqinvece per il DNS. NetworkManagerha il supporto integrato per dnsmasqe il dnsmasq-basepacchetto è installato per impostazione predefinita.

Sto puntando più domini a macchine virtuali diverse come *.customerX.testto 192.168.33.10e *.productY.testto 192.168.33.20e così via. Non userei *.devpiù ma invece uno dei domini di primo livello riservati .

Soluzione

  1. disattivare systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Modifica /etc/NetworkManager/NetworkManager.confda utilizzare dnsmasqper DNS.

    [main]
    dns=dnsmasq
    
  3. Inserisci la dnsmasqconfigurazione/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. e infine riavviare NetworkManagerche genererà un nuovo/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.