GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Imposta un risolutore DNS non legato sul server Ubuntu 20.04

Questo tutorial ti mostrerà come configurare un resolver DNS locale su Ubuntu 20.04 con Unbound . Un resolver DNS è conosciuto con molti nomi, alcuni dei quali sono elencati di seguito. Si riferiscono tutti alla stessa cosa.

  • full resolver (in contrasto con stub resolver)
  • server DNS ricorsivo
  • server dei nomi ricorsivo
  • Risolutore ricorsivo
  • Ricorrente DNS

Esempi di risolutore DNS sono 8.8.8.8 (server DNS pubblico di Google) e 1.1.1.1 (Server DNS pubblico Cloudflare). Anche il sistema operativo del tuo computer ha un resolver, sebbene sia chiamato stub resolver a causa delle sue capacità limitate. Un risolutore di stub è un piccolo client DNS sul computer dell'utente finale che riceve richieste DNS da applicazioni come Firefox e inoltra le richieste a un risolutore ricorsivo . Quasi tutti i risolutori possono memorizzare nella cache la risposta DNS per migliorare le prestazioni, quindi sono anche chiamati server DNS con memorizzazione nella cache .

Perché eseguire il proprio risolutore DNS

Di solito, il tuo computer, router o server utilizza il resolver DNS del tuo ISP per interrogare i nomi DNS, quindi perché eseguire un resolver DNS locale?

  • Può velocizzare le ricerche DNS, perché il resolver DNS locale ascolta solo le tue richieste DNS e non risponde alle richieste DNS di altre persone, quindi hai molte più possibilità di ottenere risposte DNS direttamente dalla cache del resolver. La latenza di rete tra il tuo computer e il resolver DNS viene eliminata (quasi zero), quindi le query DNS possono essere inviate ai server DNS root più rapidamente.
  • Se esegui un server di posta e utilizzi le liste nere DNS (DNSBL) per bloccare lo spam, dovresti eseguire il tuo risolutore DNS, perché alcune liste nere DNS come URIBL rifiutano le richieste dai risolutori DNS pubblici.
  • Se esegui il tuo server VPN su un VPS (Virtual Private Server), è buona norma anche installare un resolver DNS sullo stesso VPS.
  • Potresti anche voler eseguire il tuo risolutore DNS se non ti piace che la cronologia di navigazione in Internet venga archiviata su un server di terze parti.

Suggerimento :Local non significa il tuo computer di casa. Piuttosto, significa che il risolutore DNS viene eseguito sulla stessa scatola o sulla stessa rete del client DNS. Puoi installare un resolver DNS non legato sul tuo computer di casa. È locale sul tuo computer di casa. Puoi anche installare un risolutore DNS non legato su un server cloud ed è locale sul server cloud.

Risolutore DNS non associato

Unbound è un risolutore di convalida DNS open source, il che significa che può eseguire la convalida DNSSEC per garantire che la risposta DNS sia autentica. Funzionalità non vincolate:

  • Leggero ed estremamente veloce, in quanto non fornisce funzionalità di server DNS autorevoli in piena regola. Su uno dei miei server, Unbound utilizza un quarto della memoria richiesta da BIND9.
  • Cache di risposta DNS
  • Prefetch:recupera i dati che stanno per scadere in modo che il client non subisca picchi di latenza quando la ricerca deve essere ripetuta quando TTL scade sui dati.
  • DNS su TLS
  • DNS su HTTPS
  • Minimizzazione del nome della query:invia una quantità minima di informazioni ai server upstream per migliorare la privacy.
  • Uso aggressivo della cache convalidata da DNSSEC
  • Zone di autorizzazione, per una copia locale della zona radice
  • DNS64
  • Cripta DNSC
  • Convalida DNSSEC:è abilitata per impostazione predefinita su Ubuntu 🙂
  • Sottorete client EDN
  • Può funzionare come un server di inoltro DNS.
  • Supporta i dati locali e la zona delle politiche di risposta per restituire una risposta personalizzata per determinati nomi di dominio.

Passaggio 1:installa unbound DNS Resolver su Ubuntu 20.04

Esegui il comando seguente per installare Unbound su Ubuntu 20.04 dal repository predefinito.

sudo apt update
sudo apt install unbound

Controlla la versione.

unbound -V

Esempio di output:

Per impostazione predefinita, Unbound si avvia automaticamente dopo l'installazione. Puoi verificarne lo stato con:

systemctl status unbound

Se non è in esecuzione, avvialo con:

sudo systemctl start unbound

E abilita l'avvio automatico all'avvio:

sudo systemctl enable unbound

Nota :se è presente un altro servizio in ascolto sulla porta UDP 53, è possibile che non sia possibile avviare unbound. È necessario interrompere quel servizio prima di iniziare senza vincoli. Per scoprire quale servizio sta già utilizzando la porta UDP 53, esegui il comando seguente.

sudo ss -lnptu | grep 53

Se hai già installato il resolver BIND9, devi eseguire il comando seguente per interromperlo e disabilitarlo, in modo che Unbound possa ascoltare la porta UDP 53. Per impostazione predefinita, Unbound è in ascolto su 127.0.0.1:53 e [::1]:53

sudo systemctl disable named --now

Fase 2:Configura Non vincolato

Il file di configurazione principale per Unbound è /etc/unbound/unbound.conf . Per impostazione predefinita, il server Unbound su Ubuntu fornisce un servizio ricorsivo solo per localhost. Le query esterne verranno rifiutate.

Modifica il file di configurazione.

sudo nano /etc/unbound/unbound.conf

Per impostazione predefinita, c'è solo una riga di configurazione in questo file.

include: "/etc/unbound/unbound.conf.d/*.conf"

Questo per includere i file di configurazione in /etc/unbound/unbound.conf.d/ directory, che contiene due file di configurazione.

  • qname-minimisation.conf :abilita la minimizzazione di QNAME.
  • root-auto-trust-anchor-file.conf :Abilita la convalida DNSSEC.

Non è necessario toccare questi due file. Sappi solo che faranno bene alla tua risoluzione DNS. Ora dobbiamo aggiungere le nostre configurazioni personalizzate. Puoi dare un'occhiata al file di configurazione di esempio /usr/share/doc/unbound/examples/unbound.conf per sapere come configurare Unbound. Per tua comodità, ho compilato una configurazione minima per te. Aggiungi le seguenti righe in /etc/unbound/unbound.conf file.

server:
      # the working directory.
      directory: "/etc/unbound"
 
      # run as the unbound user
      username: unbound

      verbosity: 2      # uncomment and increase to get more logging.

      # listen on all interfaces, answer queries from the local subnet.
      interface: 0.0.0.0
      # comment out the following line if your system doesn't have IPv6.
      interface: ::0

      # perform prefetching of almost expired DNS cache entries.
      prefetch: yes

      access-control: 10.0.0.0/8 allow
      access-control: 127.0.0.1/24 allow
      access-control: 2001:DB8::/64 allow

      # hide server info from clients
      hide-identity: yes
      hide-version: yes

remote-control:
      # Enable remote control with unbound-control(8) here.
      control-enable: no

      # what interfaces are listened to for remote control.
      # give 0.0.0.0 and ::0 to listen to all interfaces.
      # set to an absolute path to use a unix local name pipe, certificates
      # are not used for that, so key and cert files need not be present.
      control-interface: 127.0.0.1
      # control-interface: ::1

      # port number for remote control operations.
      control-port: 8953

Le configurazioni di cui sopra sono autoesplicative. Ci sono due cose che potresti dover considerare.

(1) Per impostazione predefinita, Ubuntu esegue il risolutore di stub risolto da systemd che è in ascolto su 127.0.0.53:53 . Devi interromperlo, quindi unbound può associare a 0.0.0.0:53 .

sudo systemctl disable systemd-resolved --now

(2) Se l'intervallo di rete locale non è 10.0.0.0/8 , devi cambiarlo, ad esempio,

access-control: 192.168.0.0/24 allow

quindi non vincolato accetterà query DNS dalla rete 192.168.0.0/24.

Salva e chiudi il file. Quindi riavvia Unbound.

sudo systemctl restart unbound

Controlla lo stato. Assicurati che sia in esecuzione.

systemctl status unbound

Se hai un firewall UFW in esecuzione sul server Unbound, devi aprire la porta 53 per consentire ai client LAN di inviare query DNS.

sudo ufw allow in from 10.0.0.0/8 to any port 53

Questo aprirà la porta TCP e UDP 53 alla rete privata 10.0.0.0/8.

Passaggio 3:impostazione del risolutore DNS predefinito sul server Ubuntu 20.04

Dobbiamo fare in modo che il server Ubuntu 20.04 utilizzi 127.0.0.1 come risolutore DNS, quindi non legato risponderà alle query DNS. Il pacchetto non associato su Ubuntu viene fornito con un servizio systemd unbound-resolvconf.service che dovrebbe aiutarci a raggiungere questo obiettivo. Tuttavia, ho scoperto che non funzionerà.

Invece, puoi creare un unbound-resolvconf.service personalizzato file.

sudo nano /etc/systemd/system/unbound-resolvconf.service

Aggiungi le seguenti righe in questo file.

[Unit]
Description=local unbound via resolvconf
After=unbound.service
ConditionFileIsExecutable=/sbin/resolvconf

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound'
ExecStop=/sbin/resolvconf -d lo.unbound

[Install]
WantedBy=unbound.service

Salva e chiudi questo file. Quindi ricarica systemd.

sudo systemctl daemon-reload

Assicurati che il tuo sistema abbia il resolvconf binario.

sudo apt install openresolv

Quindi, riavvia questo servizio.

sudo systemctl restart unbound-resolvconf.service

Ora controlla il contenuto di /etc/resolv.conf .

cat /etc/resolv.conf

Come puoi vedere, 127.0.0.1 (Unbound) è il resolver DNS predefinito.

Risoluzione dei problemi

Se vedi un valore diverso in /etc/resolv.conf file, ciò significa che Unbound non è ancora il tuo risolutore DNS predefinito. Nota che alcuni provider di hosting come Linode possono utilizzare un assistente di rete per generare automaticamente il /etc/resolv.conf file. Per modificare il resolver DNS predefinito, devi disabilitare quell'helper di rete nel pannello di controllo dell'hosting.

Se questo metodo continua a non funzionare, forse è dovuto al fatto che /etc/resolv.conf il file sul tuo server Ubuntu non è un collegamento simbolico a /run/resolvconf/resolv.conf . Devi eliminare il /etc/resolv.conf file e creare un collegamento simbolico.

sudo rm /etc/resolv.conf

sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

Se hai un client VPN WireGuard in esecuzione sul server Ubuntu, devi utilizzare la seguente impostazione DNS nel file di configurazione del client WireGuard.

DNS = 127.0.0.1

Quindi riavvia il client VPN WireGuard.

Fase 4:impostazione del risolutore DNS predefinito sui computer client

Sul desktop di Ubuntu, puoi seguire le istruzioni precedenti per impostare il resolver DNS predefinito, ma ricorda di sostituire 127.0.0.1 con l'indirizzo IP del server Unbound. I passaggi per impostare il resolver DNS predefinito su MacOS e Windows sono disponibili su Internet.

Come disabilitare IPv6 in Unbound

Se il tuo server non dispone di connettività IPv6, è una buona idea disattivare IPv6 in Unbound per ridurre le ricerche DNS non necessarie su IPv6. Per disabilitare IPv6 in Unbound su Ubuntu, aggiungi semplicemente la seguente riga nel server: clausola nel /etc/unbound/unbound.conf file.

do-ip6: no

Salva e chiudi il file. Quindi riavvia Unbound.

sudo systemctl restart unbound

DNSEC non vincolato

DNSSEC è un modo per verificare che la risposta DNS non venga manomessa. È abilitato per impostazione predefinita se si installa Unbound dal repository Ubuntu predefinito. Facciamo una rapida query DNS sul server Ubuntu 20.04.

dig A linuxbabe.com

Puoi vedere l'ad flag nella risposta DNS. AD significa dati autentici.

Si noti che il nome di dominio deve abilitare DNSSEC affinché la convalida funzioni. Se non vedi il flag dell'annuncio, potrebbe significare che il nome di dominio non ha abilitato DNSSEC.

Dati locali

Puoi utilizzare la funzione dati locali in Unbound per servire nomi host interni locali o sovrascrivere record DNS pubblici.

Ad esempio, se installo unbound sul server web del mio blog, posso aggiungere le seguenti quattro righe nel server: clausola nei file di configurazione Unbound, in modo che il dominio si risolva sempre in localhost.

local-data: "linuxbabe.com      A   127.0.0.1"
local-data: "www.linuxbabe.com  A   127.0.0.1"
local-data: "linuxbabe.com      AAAA   ::1"
local-data: "www.linuxbabe.com  AAAA   ::1"

Non è stato possibile raggiungere nessun server

Se vedi il seguente errore quando usi dig comando sui computer client

;; connection timed out; no servers could be reached

È possibile che la regola del firewall sia sbagliata o che il resolver Unbound non sia in esecuzione.

Conclusione

Spero che questo tutorial ti abbia aiutato a configurare un resolver DNS locale su Ubuntu 20.04 con Unbound. Poiché verrà utilizzato su un host locale/rete locale, non è necessaria alcuna crittografia (DNS su TLS o DNS su HTTPS). Per impostare un resolver DoT o un resolver DoH, leggi i seguenti tutorial.

  • Come configurare facilmente un DNS su TLS Resolver con Nginx su Ubuntu
  • Imposta DNS over HTTPS (DoH) Resolver su Ubuntu con DNSdist

Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Attento 🙂


Ubuntu
  1. Come configurare e installare il server proxy Squid su Ubuntu 18.04

  2. Come configurare WireGuard su Ubuntu 22.04

  3. Come installare il resolver DNS Unbound su Ubuntu 22.04

  4. Come configurare un server TeamSpeak su Ubuntu 16.04

  5. Come configurare un risolutore DNS non legato su Ubuntu 20.04

Come configurare facilmente un DNS su TLS Resolver con Nginx su Ubuntu

Come configurare Quad 9 DNS su Ubuntu 16.04 e Ubuntu 17.10 Desktop

Configura un risolutore DNS locale su Ubuntu 18.04, 16.04 con BIND9

Configura il risolutore DNS locale su Ubuntu 20.04 con BIND9

Come installare il server DNS su Ubuntu 20.04 LTS

Configura il server Ubuntu con EHCP (LAMP, DNS, FTP, Mail)