Subido por Pepe Botella

DNS

Anuncio
DNS
Evita la complejidad que supone identificar a los equipos utilizando el direccionamiento de la capa de red.
(IPv4 o IPv6).
Son cadenas de texto del estilo (www.uni10.es) a las cuales se les asocia una dirección IP.
El protocolo DNS es el encargado de hacer la resolución de dirección IP a un nombre y viceversa.
Es necesario configurar un DNS primario y un DNS secundario.
El Sistema de Nombres de Dominio de Internet. TLDs. Los TLDs se dividen en dos tipos:
Dominios genéricos (Generic TLD): .com, .net, .org, etc.
Dominios geográficos o dominios de código de país (Country Code TLD): .es, .fr, .uk, .etc. (Siempre con dos
caracteres).
Lo que comúnmente se le llama nombre de dominio, por ejemplo, uni10.es, consiste en la combinación de
un SLD y un TLD, escritos de izquierda a derecha, colocando el nivel más bajo de la jerarquía a la izquierda
y el más alto a la derecha.
Cómo funciona
Cuando un host escribe un nombre en el navegador, primero se consulta a la bd del host (caché) para ver
si lo tiene de otras veces. Sino se consulta al dns local o del ISP. Y así, sucesivamente, la envía a los que
tenga en ‘forwarding’ hasta que un nivel tenga la ip y la envíe a nuestro server DNS
Fichero de configuración
Fichero de configuración o paquete de instalación (BIND o BIND9)
/etc/named.conf.options es un conjunto de declaraciones que usa las opciones que se encuentran en los
corchetes y que utiliza bind para configurar el servicio.
-
-
Directory: directorio de trabajo del servicio.
Puerto donde se escucha (53), direcciones ip permitimos la conexión a ese puerto.
Desde donde se permiten consultas
Se permite recursión: si llega una dirección que no sabemos resolver, la reenviamos a otro DNS del
mismo nivel o de nivel superior, en este caso es el DNS de Google. Si se pone a ‘no’ no sale a
internet.
dnsse-enable: parámetro de seguridad.
dnsse-validation: parámetro de seguridad.
Fichero de configuración de la zona de nuestro dominio
/etc/named.conf.local es un conjunto de declaraciones que usa las opciones que se encuentran en los
corchetes y que utiliza bind para configurar las zonas de los dominios. Una zona se refiere a un dominio
(uni10.es).
El fichero de configuración de zona de uni10 estaría en uni10.local.db y se encuentra en la ruta
/etc/named.conf.local
El server DNS se llama uni10 local y es de tipo ‘maestro’ y será el que maneje esa zona, reciba y resuelva
los nombres de esa zona.
also-notify: Si se modifica el fichero de zona y se quiere recibir las notificaciones de un server secundario
y donde se quiere enviar esa petición y donde se guardará.
Ficheros de zona
Contiene los registros de los dominios de la que es autoridad esa zona. Es decir, es el archivo en el cual se
encuentran los datos que resuelven las peticiones de nombres asociadas en direcciones IP.
A: Registro de dirección que especifica una dirección IP que se debe asignar a un nombre.
CNAME: Este registro es utilizado para crear un alias a un nombre del dominio.
MX: Registro Mail Exchange, que dice dónde se tiene que dirigir un correo enviado a un nombre de
espacio particular controlado para esa zona.
NS: Registro de servidor (NameServer) que indica a los demás servidores DNS, que servidores tienen
autoridad de una determinada zona.
PTR: Registro PoinTrR sirven, sobre todo, para la resolución inversa de nombres ya que reorientan las
direcciones IP hacia un nombre determinado.
SOA: Registro “Start Of Authority”, proclama información importante sobre la autoridad de determinados
servidores sobre determinados espacios de nombre. Está situado detrás de las directivas y es el primer
registro en un archivo de zona. Primer registro que se ve en la configuración en el fichero de zona.
Configura los parámetros básicos de la zona.
Ejemplo de configuración de archivo de zona
@: hace referencia a nuestra propia máquina.
Sección de autoridad: Los servidores (ns1 y ns2) que van a gestionar y resolver las peticiones de
direcciones de esas zonas (uni10.local).
Sección de registros: especifica las direcciones ip de los nombres de esos dominios.
Web server: se crea un servidor web llamado ‘intranet’ con esa dirección ip. Esto identifica a un host
dentro de la red como ‘intranet.uni10.local’ y nos redirige a esa dirección ip. El alias identifica a ese host
con www.uni10.local
IMPORTANTE: Todos los nombres de dominio deben acabar en ‘.’, es la manera
de cerrar el dominio raíz.
Instalación de cluster DNS. Información.
Dominio: uni10.local.
Servidor de nombres maestro: dns00.uni10.local. 192.168.0.14/24
Servidor de nombres esclavo: dns01.uni10.local. 192.168.0.15/24
Servidor web: intranet.uni10.local. 192.168.0.13/24
Instalación de cluster DNS. Instalación dns00.
Instalación de paquetes
sudo apt-get install bind9
sudo: permite elevar privilegios para la instalación de paquetes en modo administrador.
apt: gestos de paquetes en Ubuntu.
Install: parámetro de instalación.
-y: no hace la comprobación de la instalación
Habilitar el servicio dentro del sistema
systemctl enable bind9
systemctl: controlador de servicio dentro de Linux
Habilitar acceso a través del firewall
ufw allow bind9
Habilita el servicio de DNS a través del firewall
Una vez descargados todos los ficheros, se nos habrá creado una carpeta dentro de /etc/ denominada
bind. Aquí es donde se localizan todos los archivos que vamos a tener que modificar y añadir, por lo que,
para continuar, nos desplazaremos a dicha carpeta:
cd /etc/bind/
Aquí deberíamos ver los siguientes archivos:
Instalación de cluster DNS. Configuración dns00.
El servidor maestro es aquel dónde se realizan todos los cambios del archivo de zona. Estos cambios se
sincronizan con los servidores esclavos.
Editamos el fichero /etc/bind/named.conf.options para poder configurar el servicio DNS. Accederíamos a
la máquina dns00.uni10.local. y realizaríamos esta configuración. Se hace con el comando:
nano named.conf.options
any: puede hacer consultas y peticiones
cualquier dirección
Ahora se configuraría el archivo de zona. Vamos a crear la zona DNS para el dominio uni10.local.
Editamos el fichero /etc/bind/named.conf.local. Se hace con el comando:
nano named.conf.local
Si la ubicación del fichero uni10.localdb no está creada, se tendría que crear.
mkdir etc/bind/zones
Ahora se establece la zona inversa dentro del mismo fichero de configuración. Vamos a crear la zona
inversa DNS para el dominio uni10.local.
Editamos el fichero /etc/bind/named.conf.local
Zona directa: permite asignar un nombre a una dirección ip. Si hacemos la petición a un nombre nos
dirige a una dirección ip. Para abrir la zona:
nano etc/bind/zones/uni10.local.db
Zona inversa: Si hacemos la petición a una dirección ip nos permite saber que nombre tiene.
Recordar que la @ o espacio en blanco hace referencia a la misma máquina. En este caso el server ns2
debería poner la dirección ip. (error en la imagen)
Los parámetros de configuración son los mismos que en la zona directa. Lo único que cambia los registros
PTR que configuran los parámetros de la zona inversa. El fichero de la zona inversa se llama ‘0.168.192.inaddr-arpa’ pero le puedes poner el nombre que quieras. En el apartado de PTR lo normal es poner la
dirección entera, no el último octeto. En este caso sería 192.168.0.14, 192.168.0.15, 192.168.0.13
Una vez configurado el server, se realizan estos comandos
Reinicio del servicio:
systemctl restart bind9
Test de la nueva zona en nuestro DNS:
dig -t SOA uni10.local @192.168.0.14
dig: permite hacer consutlas DNS para ver la configuración que hemos hecho. Es como una consulta de
diagnóstico.
-t: especifica un registro que queramos consultar. En este caso SOA. Qué dominio y qué servidor
queremos hacer la consulta.
Este parámetro, el dig, nos permite ver los siguiente:
Question section: que petición realizamos al servicio dns. En este caso que nos devuelva el registro SOA
Answer section: la respuesta. En este caso el servidor maestro, correo que hemos configurado en el
fichero de zona (debería ser correo.uni10.local., el puesto en el fichero de zona) y los tiempos.
Authority section: permite ver que servidores autoritativos hay dentro de la zona. En este caso dos
servidores maestros.
Additional section: permite ver las direcciones de los servidores.
Query time: el tiempo de consulta
SERVER: el server que nos ha respondido con el puerto.
En Windows para hacer el test, se utiliza el comando nslookup.
El comando nos dice qué dirección ip tiene intranet.uni10.local. y que servidor nos responde.
Para comprobar si la zona directa funciona bien se pone el nombre y para la inversa se pone la dirección.
Instalación de cluster DNS. Configuración dns01(esclavo).
La instalación de paquetes sería los mismo que el en dns00 (maestro).
El servidor esclavo es aquel que replica los datos del servidor maestro.
Editamos el fichero /etc/bind/named.conf.options. Los parámetros pueden ser distintos al maestro.
Aparecen dos direccione de lookup porque posiblemente haya 2 interfaces de red.
Establecemos la zona directa en el servidor DNS. Editamos el fichero /etc/bind/named.conf.local
La diferencia es el tipo que sería ‘slave’. La dirección del maestro y donde se guarda.
Establecemos la zona inversa en el servidor DNS. Editamos el fichero /etc/bind/named.conf.local
Una vez configurado el server, se realizan estos comandos. Lo mismo que para el server dns00
Reinicio del servicio
systemctl restart bind9
Test de la nueva zona en nuestro DNS
dig -t SOA uni10.local @192.168.0.15
Es el mismo que para el server dns00. La única diferencia es la dirección ip a la que se hace la petición.
Ahora es la 192.168.0.15 y antes era a la 192.168.0.14
COMANDO DIG
El comando dig permite comprobar los registros de un DNS y además varias opciones, como cualquier
comando en Linux. Algunas de las más útiles son las siguientes:
-6 o -4: para realizar consultas únicamente sobre una red IPv6 o IPv4 respectivamente.
-b address[#port]: permite especificar una dirección válida desde la que consultar, y opcionalmente un
puerto de origen.
-x: permite hacer una resolución inversa sobre IPv4 (en IPv6 muestra el formato nibble bajo el dominio
IP6.ARPA.
-i: permite una resolución inversa sobre IPv6.
Búsqueda inversa de DNS
La búsqueda inversa de DNS te permite buscar el dominio y el nombre de host asociados a una dirección
IP. Para realizar una búsqueda inversa de DNS con el comando dig utiliza la opción –x seguida de la dirección
IP correspondiente. En el siguiente ejemplo, dig realizará una búsqueda inversa de DNS de la dirección IP
asociada a google.com:
dig -x 172.217.166.46
Recuerda que, si un registro PTR no está definido para una dirección IP, entonces no es posible hacer una
búsqueda inversa de DNS, ya que el registro PTR es el que apunta directamente al dominio o nombre de
host.
CONFIGURACIONES DE DNS
Configuración de las tarjetas de red
Primeo saber que interfaces tenemos. Con el comando ifconfig. Recordar que debemos tener permiso
para modificar archivos, con sudo su. Para modificar el archivo de configuración de la tarjeta de red con el
comando nano etc/netplan/50-cloud-init.yaml
En este caso se tiene asignado una dirección fija. Addresses es la dirección de la máquina, Gateway es la
puerta de enlace y name server son los dns que tiene establecidos.
DNS reenviador o caché
Resolver las peticiones web, el cliente (192.168.0.104) manda petición al router, el router al DNS
(192.168.0.14) y este DNS al DNS que tenga configurado fuera. Esto puede servir para ser mas restrictivos
a la hora de resolver algunas direcciones y que no salgan fuera.
Después de hacer la instalación y la habilitación del servicio
sudo apt-get install bind9
systemctl enable bind9
ufw allow bind9
Vamos y abrimos el archivo de configuración del servicio
cd /etc/bind/
nano named.conf.options
Guardamos el archivo, reiniciamos el servicio y comprobamos que funciona
systemctl restart bind9
systemctl status bind9
Ahora desde el cliente (192.168.0.104), que es un Windows,
comprobaríamos que el servicio dns funciona correctamente.
En propiedades de la tarjeta de red comprobaríamos que la dirección
del servicio dns (192.168.0.14) es correcta.
Ahora desde consola con nslookup ‘ejemplo.com’ resuelve el nombre y la dirección del servidor dns. En
este caso resuelve el servidor de Google (8.8.8.8) que está de recursivo, aunque la petición nos la da el
ns1.
Configuración de zona
Vamos a configurar la zona ahora, por ejemplo, uni10.local. Resolveremos la zona dentro del dns.
Utilizaremos la misma red que antes
Los pasos son igual que el anterior. Se muestra otra configuración de
named.conf.options con direcciones de red en las direcciones de
petición y recursión. En el puerto de escucha se pone la dirección del
servidor dns. Es lo mismo poner ‘any’ que la dirección de localhost y la
de toda la red.
Ahora abrimos el archivo de zona nano named.conf.local y modificamos para dejarlo como en la imagen.
Añadimos/modificamos tanto la zona directa ‘uni10.local’ como la inversa ‘0.168.192.in-addr.arpa’
Ahora abrimos el directorio etc/bind/zones y comprobamos que están los dos ficheros SOA.
Abrimos el fichero de la zona directa: nano uni10.local.db, en este caso ya está lleno.
$ORIGIN uni10.local.: nombre de la zona
$TTL: tiempo de vida
@: dirección de la propia maquina
IN SOA: registro SOA
ns1.uni10.local.: servidor maestro
correo.uni10.local.: correo del administrador. El ‘.’ Se refiere a la ‘@’. En el caso de que se quiera poner
un correo que lleve un ‘.’ en el nombre, por ejemplo, alberto.parrell.uni10.local, el ‘.’ de en medio se
representaría con el carácter de escape o contra barra.
Serial number: número de serie del servicio.
Slave DNS refresh cycle: tiempo de refresco del servidor esclavo.
Slave DNS retry cycle: tiempo de reintento del servidor esclavo.
Slave DNS expiration time: tiempo de expiración del servidor esclavo.
Mínimum caching time if resolution failed: tiempo mínimo de la caché.
Name servers //servidores autoritativos de nuestra zona
Arriba, en el registro SOA, ya se ha establecido el servidor dns (ns1), pero si tuviésemos mas que
queremos sincronizar se establecen en este apartado con el registro NS. De por sí, los nombres de
dominios ns1 y ns2 no los puede resolver el servidor dns, por eso se le asigna la dirección ip. Ns viene de
(name server) y es un estándar que se utiliza para la nomenclatura de los servidores autoritativos.
Aunque puedes llamar como quieras.
Por eso hay que asignar con el registro A los nombres con las direcciones
Po último, sería la configuración de nuestro servidor web de nuestra red (intranet.uni10.local.)
intranet: se le asigna con el registro A, la dirección dentro de la red.
www: le asignamos un alias (CNAME), para el servidor. ‘www’ es como si fuera ‘www.uni10.local’. Esto
hace si hacemos una petición a ‘intranet.uni10.local’ nos envía a la dirección 192.168.0.13 y si hacemos
‘www.uni10.local’ no envía a ‘intranet.uni10.local’ que nos envía 192.168.0.13
Abrimos ahora el fichero de la zona inversa: nano reverse.uni10.local.in
Muy parecido a la zona directa.
Diferencias:
En el apartado de name servers, faltaría poner al principio de la línea. En la primera pondría la ‘@’ para
hacer referencia a nuestro servidor y en la segunda la dirección ip 192.168.0.15 o 15
Nuevo apartado PTR: registros necesarios para que pueda resolver a la inversa.
14: se refiere a la dirección del servidor 192.168.0.14 y le asignamos la dirección de dominio
15: se refiere a la dirección del servidor 192.168.0.15 y le asignamos la dirección de dominio
13: se refiere a la dirección del servidor 192.168.0.13 y le asignamos la dirección de dominio
Una vez configurados los dos archivos de las zonas, se reinicia el servicio y se comprueba
systemctl restart bind9
systemctl status bind9
Ahora desde el cliente haríamos el nslookup intranet.uni10.local y nos resuelve la dirección correcta
(192.168.0.13) a través del server dns (192.168.0.14)
Si queremos consultar los servidores autoritativos de nuestra zona ‘uni10.local’ sería con el comando
nslookup -q=NS uni10.local
Si queremos consultar los servidores de correo de google sería con el comando
nslookup -q=MX google.es
Si queremos borrar la caché del servidor dns sería con el comando
ifconfig /flushdns
Sincronización de 2 servers DNS
Un server de zona se sincroniza con otro que sería un esclavo. En caso de caída continuaría el servicio en
el otro DNS. Es una alta disponibilidad activo/pasivo
en el archivo named.conf.options de la máquina dns00, habría que
añadir una línea para transferir la info a dns01.
allow-transfer: permite la transmisión al servidor esclavo.
allow-transfer { 192.168.0.15; }
Ahora abrimos el archivo de opciones del servidor esclavo dns01.
nano named.conf.options
Aquí habría que añadir los siguientes parámetros, el resto son iguales que el maestro:
allow-notify: poner la dirección desde se nos va a permitir las notificaciones, en este caso sería la
dirección de server maestro (192.168.0.14)
allow-new-zones: esto permite que se sincronice las zonas nuevas que se añadan en el maestro
allow-transfer: en caso de tener un tercer server esclavo, para transmitir la info
Abrimos primero el archivo de zona del server maestro dns00: nano named.conf.local y añadimos dentro
de la zona, tanto la directa como la inversa, los parámetros para que se sincronice con el esclavo.
Notify ‘yes’: para habilitar la notificación
Also-notify: donde queremos que lo notifique. En este caso la dirección del esclavo (192.168.0.15)
Por último, abrimos el archivo de zona de la maquina dns01. nano named.conf.local
Aquí cambia respecto al maestro, el tipo que es ‘slave’, la dirección del maestro y la ubicación. Tanto en la
zona directa como en la inversa.
Una vez configurados los archivos de las zonas, se reinicia el servicio y se comprueba
systemctl restart bind9
systemctl status bind9
Ahora desde el cliente, añadimos el dns esclavo en la configuración de red
El comando dig se puede utilizar para resolver direcciones y nombres. Ejemplo
dig @192.168.0.14 intranet.uni10.local
comando
dirección del servidor dns
petición
Sino se pone ningún registro en la consulta, por defecto es el registro A
Si se quiere consultar un registro en concreto se añade al final.
Quiero saber los servidores autoritativos de la zona uni10.local
dig @192.168.0.14 uni10.local NS
Quiero saber la zona inversa de uni10.local
dig @192.168.0.14 uni10.local -x (o PTR)
Quiero saber los servidores de correo del dominio Google.es
dig @192.168.0.14 google.es MX
POSIBLES PREGUNTAS DE DNS QUE PUEDE SALIR EN UN EXAMEN
Red de ejemplo.
Cliente
Server dns que resuelve loas peticiones de centro.lan
Server web: profes.centro.lan con ip 192.168.0.15
Otro server web: profes.centro.lan con ip 192.168.0.13 y con un
servicio de correo.
Un mismo dominio (profes.centro.lan) puede tener asignada
dos direcciones ip diferentes. La funcionalidad es tener
balanceo de carga.
El servicio bind implementó el balanceo de carga a partir de la
versión 4.
En este caso pondríamos en el fichero de configuración del SOA
los dos hosts con el mismo nombre
13
15
IN
IN
A
A
profes.centro.lan
profes.centro.lan
Si hacemos nslookup desde el cliente nos resuelve las 2 direcciones, pero cada vez que lanzamos la
petición nos la resuelve uno primero, hace balanceo cada petición. Una vez cada uno.
Como establecer servidores de correo
Dentro del archivo de configuración SOA añadimos la siguiente línea
mail
IN
A
192.168.0.13
Esto indica el nombre de dominio que dirección tiene
Ahora establecemos un registro para el servidor de correo. Muy importante establecer la prioridad por si
hay más de un servidor de correo para la misma zona. Indica a cuál va a ir primero.
centro.lan
IN
MX
10 mail.centro.lan
Cambiar los TTL de un registro
En este caso pondríamos en el fichero de configuración del SOA los dos hosts con diferentes TTL. Esto se
podría hacer para que se refresque el servicio.
13
15
15000
13000
IN
IN
A
A
profes.centro.lan
profes.centro.lan
Descargar