En esta entrada, aprenderemos a instalar un servidor DNS, en este caso utilizaremos bind9, y lo configuraremos de forma que contenga una zona de resolución directa, y otra zona de resolución inversa, siendo funcional en ambos clientes (Debian 10 y Windows 7).
- Resolución directa: El cliente busca en el navegador escribiendo la dirección web de un sitio con su dominio correspondiente, y el servidor DNS le resuelve la IP de dicho sitio.
- Resolución inversa: Es el proceso contrario a la resolución directa, el cliente busca en el navegador escribiendo la dirección IP de un sitio, y el servidor DNS le resuelve el dominio de dicha dirección.
Si instalamos un DNS en nuestro servidor, conseguiremos aumentar la velocidad de navegación de nuestros clientes, ya que el servidor DNS, realiza la búsqueda de la IP solicitada por primera vez a través de internet, y cuando encuentra se la guarda, por si algún otro cliente vuelve a pedir esa dirección IP, no necesita volver a buscarla, puesto que ya la tiene.
Puede parecer parecido a la función de un servidor proxy, la diferencia es que el servidor proxy, hace una copia de la página web completa, por lo que se la muestra al cliente con una mayor velocidad. Además se encarga de ir actualizando la página cada cierto periodo de tiempo.
Configuración del servidor local
En nuestro servidor, debemos de definir lo siguiente editando sus ficheros correspondientes:
-El nombre del servidor: Editando el fichero /etc/hostname
- El fichero /etc/hosts: Aqui definiremos nuestro hostname con su respectivo dominio.
- La configuración DNS en el fichero de configuración DHCP: Lo podemos ver editando el fichero /etc/dhcp/dhcpd.conf
En option domain-name-servers: Definimos la IP del servidor DNS que vayamos a asignar a los clientes.
En option domain-name: Establecemos el nombre del dominio entre comillas "".
- Las direcciones IP de los servidores de resolución de nombres: Editando el fichero /etc/resolv.conf (En mi caso elegiré las de Google)
Para que no se nos modifique el fichero resolv.conf al reinciar la máquina, le quitamos los permisos de escritura con el comando: chattr +i /etc/resolv.conf
Comprobamos el cambio del nombre de la máquina con su respectivo dominio con el comando hostname -f
Una vez hecho todo esto procedemos con la instalación del servidor DNS.
Instalación del servidor DNS
Para instalar el servidor DNS, en este caso usaremos bind9, usaremos el siguiente comando:
aptitude install bind9
Con esto ya tenemos instalado nuestro servidor DNS, ahora tan solo queda editar los dis ficheros de configuración, para establecer las funciones que queremos.
Configuración del servidor DNS
Fichero /etc/bind/named.conf.local
Este es el fichero de configuración principal de bind9, su función es establecer las zonas y opciones del servidor.
Añadiremos la zona de resolución directa (nuestro nombre de dominio), en mi caso "noavi.org", y la zona de resolución inversa, la cual definiremos añadiendo los 3 primeros octetos de nuestra IP de red (DEL REVÉS), seguido de .in-addr.arpa . Para añadir una zona agregamos una línea en la que ponga zone "nombredelazona"
Añadiremos en caza zona la opción "type master", la cual indicará que el servidor para esa zona es maestro.
Además en cada zona, definiremos el fichero correspondiente que contenga los registros de recursos con la información de dicha zona (Estos ficheros los crearemos mas adelante), para ello agregaremos una línea en la que ponga file "nombredelfichero" , en caso de que no nos funcione, también podemos escribir la ruta absoluta de los ficheros.
Una vez he configurado mi fichero named.conf.local , este ha sido el resultado:
Recordemos añadir los cierres con {} y definir correctamente las líneas con ; al final de cada una de ellas.
Una vez guardemos el fichero podemos ejecutar la orden named-checkconf , y si no aparece nada, la sintaxis de los ficheros está correcta.
Fichero /var/cache/bind/db.noavi.org
Este fichero es el cual contiene los registros de recursos de nuestra zona de búsqueda directa.
Este fichero no existe, por lo que debemos de crearlo, aunque lo mejor a la hora de crearlo, es copiar el contenido del fichero /etc/bind/db.empty el cual si existe, una vez copiado, tan solo debemos de modificarlo.
Ahora procedemos a editar el nuevo fichero con:
nano /var/cache/bind/db.noavi.org
Salimos y guardamos el fichero.
En este caso he usado 2 registros distintos del servidor DNS.
El registro A : Contiene una dirección IPv4
El registro CNAME: contiene un alias, es decir un nombre alternativo para un dominio, y remite a un registro A o AAAA ya existente.
Fichero /var/cache/bind/db.192.168.10
Este fichero se llamará db.IPdelservidor y contendrá todos los registros de recursos de nuestra zona de búsqueda inversa.
Este fichero no existe, por lo que tenemos que crearlo, pero también podemos copiar el contenido del fichero /etc/bind/db.127 , para ello usamos el comando:
cp /etc/bind/db.127 /var/cache/bind/db.192.168.10
El contenido del fichero debe de quedar de la siguiente forma:
Salimos y guardamos el fichero.
El registro PTR: Nos permite realizar búsquedas inversas, es decir nos busca el nombre del dominio mediante una IP.
He añadido la dirección IP del servidor y la del cliente debian, con su respectivo dominio, y la identificamos mediante su IP.
En la línea $ORIGIN añadiremos los 3 primeros octetos de la IP del servidor (Del revés), seguido de .in-addr.arpa
Fichero /etc/bind/named.conf.options
En este fichero añadiremos la dirección IP de los reenviadores, con lo que conseguiremos que nuestro servidor DNS resuelva direcciones IPs de internet.
En la opción dnssec-validation auto , cambiamos la opción "auto" por "no". Esta opción proporciona un conjunto de extensiones para el DNS que proporcionan a los clientes DNS, la autenticación del origen de los datos DNS, la denegación de existencia de autenticación y la integridad de los datos, pero no la disponibilidad o confidencialidad.
El fichero named.conf.options nos debe de quedar de la siguiente forma:
Tenemos que asegurar que no falte ningún ";" o "{}".
Guardam
os con CTRL+O y salimos con CTRL+X.
Una vez editados todos los ficheros necesarios, reiniciamos el servicio con el comando: systemctl restart bind9
Y para comprobar que no haya ningún error y todo funciona correctamente, lo hacemos con el comando:
systemctl status bind9
Como podemos ver, todo funciona correctamente, ahora pasaremos a hacer las comprobaciones con las consultas de los clientes.
Consultas con los clientes
Debian 10
Para comprobar que todo funciona correctamente, en el cliente debian, comentaremos todas las líneas del fichero /etc/hosts
Y además añadimos la IP de nuestro servidor, y la orden search dominio en el fichero /etc/resolv.conf
Usaremos el comando dig para realizar las siguientes consultas:
- Consulta hacia el servidor DNS de dominio noavi.org
Si intentamos acceder directamente a la IP del servidor, nos devuelve el html que viene por defecto de apache
- Consulta hacia la dirección IP de www.josedomingo.com
Windows 7
Para Windows debemos de establecer la siguiente configuración de red (Todo de forma automática)
Para realizar las consultas en windows usaremos el comando nslookup
- Consulta hacia el servidor DNS de dominio noavi.org
- Consulta hacia la dirección IP de www.josedomingo.com
Y con esto podemos comprobar como Debian y Windows, pueden realizar peticiones DNS tanto fuera de la red (Saliendo a internet), como dentro de la red (intranet).
Comments