Unbound è un server di cache DNS gratuito, open source, ricorsivo e di convalida. Utilizza DNS-over-TLS e DNS-over-HTTPS per crittografare le connessioni tra i client. Rispetto a Bind9, Unbound è leggero ed estremamente veloce. Un server di cache ti aiuterà a ridurre il tempo di caricamento del sito Web mantenendo il database della cache su un server Unbound. È anche in grado di convalidare DNSSEC e può fungere da ancoraggio di fiducia.
In questo post, ti mostreremo come configurare unbound DNS Resolver su Ubuntu 20.04.
Prerequisiti
- Un nuovo server Ubuntu 20.04 sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 20.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 20.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Passaggio 2:installazione delle dipendenze richieste
Prima di iniziare, dovrai installare alcuni strumenti DNS di base nel tuo sistema. Puoi installarli tutti usando il seguente comando:
apt-get install bind9-utils dnsutils net-tools -y
Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.
Fase 3 – Installa e configura il DNS non associato
apt-get install unbound -y
Dopo aver installato Unbound DNS, dovrai configurarlo. Per impostazione predefinita, il file di configurazione principale Unbound si trova in /etc/unbound/unbound.conf. Tuttavia, si consiglia di creare un file di configurazione separato:
nano /etc/unbound/unbound.conf.d/myunbound.conf
Aggiungi le seguenti righe:
server: port: 53 verbosity: 0 num-threads: 2 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 32m interface: 0.0.0.0 rrset-cache-size: 64m cache-max-ttl: 86400 infra-host-ttl: 60 infra-lame-ttl: 120 access-control: 127.0.0.0/8 allow access-control: 0.0.0.0/0 allow username: unbound directory: "/etc/unbound" logfile: "/var/log/unbound.log" use-syslog: no hide-version: yes so-rcvbuf: 4m so-sndbuf: 4m do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes remote-control: control-enable: yes control-port: 953 control-interface: 0.0.0.0
Salva e chiudi il file, quindi convalida il file di configurazione con il seguente comando:
unbound-checkconf /etc/unbound/unbound.conf.d/myunbound.conf
Dovresti ottenere il seguente output:
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/myunbound.conf
Quindi, crea un file di registro per Unbound e imposta le autorizzazioni appropriate:
touch /var/log/unbound.log chown unbound:unbound /var/log/unbound.log
Fase 4:avvia il servizio DNS illimitato
A questo punto, Unbound DNS è installato e configurato. Ora riavvia il servizio Unbound e abilitalo per l'avvio al riavvio del sistema:
systemctl restart unbound systemctl enable unbound
Puoi anche verificare lo stato di Unbound con il seguente comando:
systemctl status unbound
Esempio di output:
● unbound.service - Unbound DNS server Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 06:30:33 UTC; 7s ago Docs: man:unbound(8) Process: 2788 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS) Process: 2791 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS) Main PID: 2804 (unbound) Tasks: 2 (limit: 2353) Memory: 4.8M CGroup: /system.slice/unbound.service └─2804 /usr/sbin/unbound -d Aug 15 06:30:32 ubuntu2004 systemd[1]: Starting Unbound DNS server... Aug 15 06:30:33 ubuntu2004 package-helper[2796]: /var/lib/unbound/root.key has content Aug 15 06:30:33 ubuntu2004 package-helper[2796]: success: the anchor is ok Aug 15 06:30:33 ubuntu2004 systemd[1]: Started Unbound DNS server.
A questo punto, il servizio Unbound è avviato ed è in ascolto sulla porta 53. Puoi verificarlo usando il seguente comando:
ss -antpl | grep 53
Esempio di output:
LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=6)) LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=4)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=356,fd=13)) LISTEN 0 256 0.0.0.0:953 0.0.0.0:* users:(("unbound",pid=3407,fd=7))
Passaggio 5:verifica del DNS non associato
Ora dovrai usare il comando dig ed eseguire alcune query DNS per testare il server DNS non legato.
Useremo ubuntu.com per i test.
dig ubuntu.com @localhost
Esempio di output:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6037 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 60 IN A 91.189.88.181 ubuntu.com. 60 IN A 91.189.88.180 ;; Query time: 307 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:32:18 UTC 2021 ;; MSG SIZE rcvd: 71
Come puoi vedere, il tempo della query è 307 msec nella prima query. La tua query è ora memorizzata nella cache.
Quindi, eseguiamo di nuovo la stessa query:
dig ubuntu.com @localhost
Esempio di output:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37832 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 49 IN A 91.189.88.180 ubuntu.com. 49 IN A 91.189.88.181 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:33:36 UTC 2021 ;; MSG SIZE rcvd: 71
Come puoi vedere, il tempo della query è 0 msec.
Puoi anche testare il server DNS non associato dalla macchina client. In questo caso, dovrai specificare l'IP del tuo server DNS non legato con la query:
dig ubuntu.com @69.87.221.220
Esempio di output:
; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> ubuntu.com @69.87.221.220 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28051 ;; flags: qr rd ad; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; Query time: 365 msec ;; SERVER: 69.87.221.220#53(69.87.221.220) ;; WHEN: Sun Aug 15 12:04:37 IST 2021 ;; MSG SIZE rcvd: 12
Fase 6 – Risoluzione dei problemi senza limiti
Se vuoi controllare lo stato del DNS Unbound, esegui il comando seguente:
unbound-control status
Esempio di output:
version: 1.9.4 verbosity: 0 threads: 2 modules: 3 [ subnet validator iterator ] uptime: 65 seconds options: reuseport control(ssl) unbound (pid 3407) is running...
Se desideri eseguire il backup di una cache DNS in un file di testo, esegui il comando seguente:
unbound-control dump_cache > cache.txt
Puoi verificare il file cache.txt con il seguente comando:
cat cache.txt
Esempio di output:
START_RRSET_CACHE END_RRSET_CACHE START_MSG_CACHE END_MSG_CACHE EOF
In alcuni casi, il tuo server DNS non può rispondere alla tua richiesta. In questo caso, puoi svuotare la cache DNS usando il seguente comando:
unbound-control flush ubuntu.com
Conclusione
Nella guida sopra, abbiamo spiegato come installare e utilizzare un server di cache DNS non associato su Ubuntu 20.04. Abbiamo anche eseguito alcuni test utilizzando il comando dig per interrogare unbound DNS e ottenere una risposta. Provalo oggi stesso sul tuo VPS di Atlantic.Net!