Unbound es un servidor de almacenamiento en caché de DNS gratuito, de código abierto, recursivo y de validación. Utiliza DNS sobre TLS y DNS sobre HTTPS para cifrar conexiones entre clientes. En comparación con Bind9, Unbound es liviano y extremadamente rápido. Un servidor de almacenamiento en caché lo ayudará a reducir el tiempo de carga del sitio web al mantener la base de datos de caché en un servidor Unbound. También es capaz de validación de DNSSEC y puede servir como ancla de confianza.
En esta publicación, le mostraremos cómo configurar Unbound DNS Resolver en Ubuntu 20.04.
Requisitos
- Un nuevo servidor Ubuntu 20.04 en Atlantic.Net Cloud Platform
- Una contraseña de root configurada en su servidor
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 20.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor Ubuntu 20.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
apt-get update -y
Paso 2:instalar las dependencias requeridas
Antes de comenzar, deberá instalar algunas herramientas básicas de DNS en su sistema. Puede instalarlos todos usando el siguiente comando:
apt-get install bind9-utils dnsutils net-tools -y
Una vez que todos los paquetes estén instalados, puede continuar con el siguiente paso.
Paso 3:instalar y configurar DNS independiente
apt-get install unbound -y
Después de instalar Unbound DNS, deberá configurarlo. De forma predeterminada, el archivo de configuración principal de Unbound se encuentra en /etc/unbound/unbound.conf. Sin embargo, se recomienda crear un archivo de configuración independiente:
nano /etc/unbound/unbound.conf.d/myunbound.conf
Agregue las siguientes líneas:
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
Guarde y cierre el archivo, luego valide el archivo de configuración con el siguiente comando:
unbound-checkconf /etc/unbound/unbound.conf.d/myunbound.conf
Deberías obtener el siguiente resultado:
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/myunbound.conf
A continuación, cree un archivo de registro para Unbound y establezca los permisos adecuados:
touch /var/log/unbound.log chown unbound:unbound /var/log/unbound.log
Paso 4:iniciar el servicio de DNS independiente
En este punto, Unbound DNS está instalado y configurado. Ahora, reinicie el servicio Unbound y habilítelo para que se inicie al reiniciar el sistema:
systemctl restart unbound systemctl enable unbound
También puede verificar el estado de Unbound con el siguiente comando:
systemctl status unbound
Salida de muestra:
● 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.
En este punto, el servicio Unbound se inicia y escucha en el puerto 53. Puede verificarlo con el siguiente comando:
ss -antpl | grep 53
Salida de muestra:
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))
Paso 5:Probar el DNS independiente
Ahora, necesitará usar el comando dig y realizar algunas consultas de DNS para probar el servidor DNS sin vincular.
Usaremos ubuntu.com para las pruebas.
dig ubuntu.com @localhost
Salida de muestra:
; <<>> 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
Como puede ver, el tiempo de consulta es 307 mseg en la primera consulta. Su consulta ahora está almacenada en caché.
A continuación, ejecutemos la misma consulta de nuevo:
dig ubuntu.com @localhost
Salida de muestra:
; <<>> 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
Como puede ver, el tiempo de consulta es 0 mseg.
También puede probar el servidor DNS independiente desde la máquina cliente. En este caso, deberá especificar la IP de su servidor DNS sin vincular con la consulta:
dig ubuntu.com @69.87.221.220
Salida de muestra:
; <<>> 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
Paso 6:Solución de problemas de Unbound
Si desea verificar el estado del DNS sin vincular, ejecute el siguiente comando:
unbound-control status
Salida de muestra:
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...
Si desea realizar una copia de seguridad de una caché de DNS en un archivo de texto, ejecute el siguiente comando:
unbound-control dump_cache > cache.txt
Puede verificar el archivo cache.txt con el siguiente comando:
cat cache.txt
Salida de muestra:
START_RRSET_CACHE END_RRSET_CACHE START_MSG_CACHE END_MSG_CACHE EOF
En algunos casos, su servidor DNS no puede responder a su consulta. En este caso, puede vaciar la caché de DNS con el siguiente comando:
unbound-control flush ubuntu.com
Conclusión
En la guía anterior, explicamos cómo instalar y usar un servidor de almacenamiento en caché de DNS sin límites en Ubuntu 20.04. También realizamos algunas pruebas con el comando dig para consultar el DNS no vinculado y obtener una respuesta. ¡Pruébalo en tu VPS de Atlantic.Net hoy!