Come posso impostare la risoluzione del dominio jolly locale (127.0.0.1) su 18.04?


18

Su Ubuntu 14.04 sto usando dnsmasq per risolvere i domini wild.com example.com sul computer locale (computer desktop a casa).

Dopo molte letture in giro non riesco a risolverlo per tutta la vita su un'installazione pulita di 18.04.

Tutto quello che voglio ottenere al momento è:

  • per il ping example.com ping 127.0.0.1 e non 93.184.216.34;
  • per ping anysubdomain.example.com eseguire anche il ping 127.0.0.1;
  • e per ping google.com eseguire il ping del vero google.com tramite il router / IP DNS.

Sicuramente questo deve essere semplice, anche banale?

Ma sono perplesso. Posso ottenere la risoluzione di example.com ma solo a spese di rompere tutto il resto.

Come posso fare questo?


1
Perché non installare dnsmasq come hai fatto il 14.04?
vidarlo,

1
@vidarlo Beh, ovviamente questa è stata la prima cosa che ho fatto, come ho indicato nella mia domanda. Ma a differenza del 14.04 che si traduce in un errore "impossibile creare il socket di ascolto per la porta 53: indirizzo già in uso". La risposta che ho accettato funziona benissimo senza installare esplicitamente dnsmasq.
Nick Rice,

Risposte:


30

Ecco i passaggi per Ubuntu 18.04. È un po 'lungo poiché systemd-resolvednon gioca molto bene con NetworkManagerquando configurato con dnsmasq.

Eppure, mi raccomando ancora a partire dnsmasqda NetworkManager, perché i cambiamenti di connettività di rete (Wi-Fi, Wired, ...) verranno gestite in modo trasparente.

Abilita dnsmasq in NetworkManager

Modifica il file /etc/NetworkManager/NetworkManager.confe aggiungi la linea dns=dnsmasqalla [main]sezione, sarà simile al seguente:

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Gestisci NetworkManager /etc/resolv.conf

sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

Configurazione example.com

echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf

Ricarica NetworkManagere test

NetworkManager deve essere ricaricato per rendere effettive le modifiche.

sudo systemctl reload NetworkManager

Quindi possiamo verificare che possiamo raggiungere qualche sito abituale:

dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

Infine, verifica che i example.comsottodomini e siano risolti come 127.0.0.1:

dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1

cosa intendi con "systemd-risolved non funziona molto bene con NetworkManager"?
Sebastian Stark,

1
Quando NetworkManager utilizza dns = dnsmasq, dovrebbe indicare a systemd-resolved di usare dnsmasq, potrebbe essere automatico.
pim

1
Grazie, ha funzionato perfettamente! Sembra che non posso darti la generosità per un'altra ora, e siccome è andata l'una del mattino qui vado a letto ora e lo farò quando torno di nuovo domani.
Nick Rice,

2
Eccezionale. Ho letto molte tecniche diverse. Questo è quello che alla fine ha funzionato.
Redsandro,

3
Per coloro che preferiscono tornare a systemd-risolto, /etc/resolv.confpunta di /run/systemd/resolve/stub-resolv.confdefault.
Pothi Kalimuthu,

2

Assicurati innanzitutto che nella /etc/NetworkManager/NetworkManager.confriga seguente non sia presente o commentato:

dns=dnsmasq

Riavvia NetworkManager:

sudo systemctl restart NetworkManager

Assicurarsi che dnsmasq controllato da NetworkManager non sia più in esecuzione, interrompendo il processo o riavviando il sistema.

Quindi installare dnsmasq:

sudo apt install dnsmasq

Aggiungi quanto segue a /etc/dnsmasq.d/example.com:

address=/example.com/127.0.0.1

Riavvia dnsmasq:

sudo systemctl restart dnsmasq

Ora dovresti avere una wildcard dns override per example.com.


1
Non sono riuscito a farlo funzionare. Immediatamente dopo un'installazione pulita minima (con l'opzione "cancella disco") viene visualizzato l' sudo apt install dnsmasqerrore "Impossibile creare il socket di ascolto per la porta 53: Indirizzo già in uso". Ho continuato comunque alla fine nel caso in cui un passo successivo lo avesse risolto, ma non ha funzionato e questo non ha funzionato.
Nick Rice,

Quindi il dnsmasq avviato da NetworkManager era ancora in esecuzione. Quindi dovrebbe prima essere disattivato, eventualmente ucciso, e solo allora dovrebbe essere installato il pacchetto dnsmasq.
Sebastian Stark,

Grazie Sebastian. Tuttavia ho già accettato la risposta di PIM che ha funzionato perfettamente, quindi sono in grado di andare avanti senza giocarci più.
Nick Rice,

@NickRice Nessun problema, ma forse altri vogliono provare
Sebastian Stark

Sì certo, Sebastian. Ho provato prima la tua risposta perché era la più semplice, e se tutto ciò che serve è un passo iniziale aggiunto, allora è molto buono.
Nick Rice,

0

Questo non sarà semplice come modificare il file hosts. Hai un paio di opzioni:

Questo proxy DNS python che gestirà i caratteri jolly in / etc / hosts

Utilizzando DNSmasq


Grazie. Il tuo link alla domanda DNSmasq è quello che sto facendo in 14.04. Fare lo stesso in una nuova installazione 18.04 non funziona a causa di un conflitto di porte. Quindi, fuori dagli schemi, qualcos'altro deve fare rispetto a quello. Guardando tutto quel codice necessario per il proxy DNS di Python, non posso credere a tutto ciò che è necessario. Non è stato prima tranne, suppongo, per coloro che hanno insistito sull'uso di / etc / hosts.
Nick Rice,

Puoi fare netstat -tulpnper verificare cosa sta usando la porta? EDIT: Nevermind, ho visto la risposta accettata. il problema è systemd-resolver.
Harikrishnan R,
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.