El Servicio de nombres de dominio (DNS) es un servicio de Internet que asigna direcciones IP a nombres de dominio completos (FQDN) y viceversa.
BIND significa Berkley Internet Naming Daemon.
BIND es el programa más común utilizado para mantener un servidor de nombres en Linux.
En este tutorial, explicaremos cómo instalar y configurar un servidor DNS.
Si es nuevo en DNS, primero debe comprender los fundamentos de DNS y cómo funciona.
1. Información de la red
En este tutorial, configuraremos un servidor DNS local para la red que se muestra en el siguiente diagrama.
Usaremos el dominio "thegeekstuff.net" como ejemplo para esta instalación de DNS. "correo", "web", "ns" son los hosts que residen dentro de este dominio.
Es posible configurar un único sistema para que actúe como servidor de nombres de almacenamiento en caché, primario/maestro y secundario/esclavo. Configuraremos este DNS como Primay/Master, así como servidor DNS de almacenamiento en caché.
Instalaremos el servidor DNS en "10.42.0.83".
2. Instalar enlace
Instale el paquete bind9 utilizando las utilidades de administración de paquetes adecuadas para sus distribuciones de Linux.
En versiones de Debian/Ubuntu, haga lo siguiente:
$ sudo apt-get install bind9
En versiones Redhat/CentOS/Fedora, haga lo siguiente:
# yum install bind9
Todas las configuraciones de DNS se almacenan en el directorio /etc/bind. La configuración principal es /etc/bind/named.conf, que incluirá otros archivos necesarios. El archivo llamado /etc/bind/db.root describe los servidores de nombres raíz en el mundo.
3. Configurar servidor de nombres de caché
El trabajo de un servidor de almacenamiento en caché DNS es consultar a otros servidores DNS y almacenar en caché la respuesta. La próxima vez que se realice la misma consulta, proporcionará la respuesta del caché. El caché se actualizará periódicamente.
Tenga en cuenta que, aunque puede configurar bind para que funcione como servidor primario y de almacenamiento en caché, no se recomienda hacerlo por motivos de seguridad. Se recomienda tener un servidor de almacenamiento en caché independiente.
Todo lo que tenemos que hacer para configurar un Cache NameServer es agregar el servidor DNS de su ISP (Proveedor de Servicios de Internet) o cualquier servidor OpenDNS al archivo /etc/bind/named.conf.options. Por ejemplo, usaremos los servidores DNS públicos de Google, 8.8.8.8 y 8.8.4.4.
Descomente y edite la siguiente línea como se muestra a continuación en el archivo /etc/bind/named.conf.options.
forwarders { 8.8.8.8; 8.8.4.4; };
Después del cambio anterior, reinicie el servidor DNS.
$ sudo service bind9 restart
4. Probar el servidor de nombres de caché
Puede usar el comando dig para probar los servicios DNS. Los ejemplos de comandos DIG explican más sobre cómo realizar búsquedas de DNS.
$ dig ubuntu.com ;; Query time: 1323 msec
Ahora, cuando ejecute la excavación por segunda vez, debería haber una mejora en el tiempo de consulta. Como puede ver a continuación, tomó solo 3 ms la segunda vez, ya que obtiene la información de nuestro servidor DNS de almacenamiento en caché.
$ dig ubuntu.com ;; Query time: 3 msec
5. Configurar servidor de nombres primario/maestro
A continuación, configuraremos bind9 para que sea el Principal/Maestro del dominio/zona "thegeekstuff.net".
Como primer paso en la configuración de nuestro servidor de nombres primario/maestro, debemos agregar resolución directa e inversa a bind9.
Para agregar una resolución de avance y retroceso de DNS a bind9, edite /etc/bind9/named.conf.local.
zone "thegeekstuff.net" { type master; file "/etc/bind/db.thegeekstuff.net"; }; zone "0.42.10.in-addr.arpa" { type master; notify no; file "/etc/bind/db.10"; };
Ahora el archivo /etc/bind/db.thegeekstuff.net tendrá los detalles para resolver el nombre de host a la dirección IP para este dominio/zona, y el archivo /etc/bind/db.10 tendrá los detalles para resolver la dirección IP al nombre de host .
6. Cree la resolución de reenvío para el servidor de nombres primario/maestro
Ahora agregaremos los detalles necesarios para la resolución de reenvío en /etc/bind/db.thegeekstuff.net.
Primero, copie /etc/bind/db.local a /etc/bind/db.thegeekstuff.net
$ sudo cp /etc/bind/db.local /etc/bind/db.thegeekstuff.net
A continuación, edite /etc/bind/db.thegeekstuff.net y reemplace lo siguiente.
- En la línea que tiene SOA:localhost. – Este es el FQDN del servidor a cargo de este dominio. Instalé bind9 en 10.42.0.83, cuyo nombre de host es "ns". Así que reemplace el "localhost". con “ns.thegeekstuff.net.”. Asegúrate de que termine con un punto (.).
- En la línea que tiene SOA:root.localhost. – Esta es la dirección de correo electrónico de la persona responsable de este servidor. Use punto (.) en lugar de @. He reemplazado con lak.localhost.
- En la línea que tiene NS:localhost. – Esto está definiendo el servidor de nombres para el dominio (NS). Tenemos que cambiar esto al nombre de dominio completo del servidor de nombres. Cámbielo a "ns.thegeekstuff.net". Asegúrate de tener un "." al final.
A continuación, defina el registro A y el registro MX para el dominio. Un registro es el que asigna el nombre de host a la dirección IP, y el registro MX le indicará al servidor de correo que lo use para este dominio.
Una vez realizados los cambios, el archivo /etc/bind/db.thegeekstuff.net tendrá el siguiente aspecto:
$TTL 604800 @ IN SOA ns.thegeekstuff.net. lak.localhost. ( 1024 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.thegeekstuff.net. thegeekstuff.net. IN MX 10 mail.thegeekstuff.net. ns IN A 10.42.0.83 web IN A 10.42.0.80 mail IN A 10.42.0.70
6. Cree la resolución inversa para el servidor de nombres primario/maestro
Agregaremos los detalles necesarios para la resolución inversa al archivo /etc/bind/db.10. Copie el archivo /etc/bind/db.127 a /etc/bind/db.10
$ sudo cp /etc/bind/db.127 /etc/bind/db.10
A continuación, edite el archivo /etc/bind/db.10 y básicamente cambie las mismas opciones que /etc/bind/db.thegeekstuff.net
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.localhost. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.
Luego, para cada registro A en /etc/bind/db.thegeekstuff.net, agregue un registro PTR.
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.thegeekstuff.net. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. 83 IN PTR ns.thegeekstuff.net. 70 IN PTR mail.thegeekstuff.net. 80 IN PTR web.thegeekstuff.net.
Cada vez que modifique el archivo db.thegeekstuff.net y db.10, también debe incrementar el número de "Serie". Por lo general, el administrador usa DDMMYYSS para los números de serie y, cuando modifican, cambian el número de serie de manera adecuada.
Finalmente, reinicie el servicio bind9:
$ sudo service bind9 restart
7. Probar el servidor DNS
Ahora hemos configurado el servidor DNS para nuestro dominio. Probaremos nuestro servidor DNS haciendo ping a mail.thegeekstuff.net desde web.thegeekstuff.net.
Si el ping es exitoso, entonces hemos configurado el DNS correctamente.
También puede usar nslookup y dig para probar servidores DNS.
En el servidor web.thegeekstuff.net, agregue lo siguiente a /etc/resolv.conf
nameserver 10.42.0.83
Ahora haga ping, mail.thegeekstuff.net, que debería resolver la dirección correctamente desde el servidor DNS que acabamos de configurar.
$ ping mail.thegeekstuff.net PING mail.thegeekstuff.net (10.42.0.70) 56(84) bytes of data. 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=1 ttl=64 time=0.482 ms 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=2 ttl=64 time=0.532 ms