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.