DNS Server

En aquest document HackMD explicarem com crear un servidor DNS:

Participants del grup:

Josep Oriol Ferrufino: (cf21oriol.ferrufino@iesjoandaustria.org)
David Li: (cf21david.li@iesjoandaustria.org)
Nazmul Miah: (cf21nazmul.miah@iesjoandaustria.org)
Bruno Gosálvez: (cf21bruno.gosalvez@iesjoandaustria.org)

Primera parte del DNS

Primero: Actualizamos nuestra maquina

  • Sudo apt update
  • Sudo apt upgrade

Segundo: Instalamos Bind

  • sudo apt install bind9 bind9-doc resolvconf python-ply-doc

Entramos dentro del directorio

  • cd /etc/bind/

Ponemos comando ls -l para ver los archivos

Tercero: Configurar el archivo de opciones

  • sudo nano /etc/bind/named.conf.options
    Dentro del archivo escribimos lo siguiente:

    ​​​​​​  - acl "trusted" {
    ​​​​​​            10.21.73.2; #ponemos nuestra ip
    ​​​​​​            10.21.73.100; #ponemos la ip del host
    ​​​​​​  };
    ​​​​​​  
    ​​​​​​  options{
    ​​​​​​          directory "/var/cache/bind";
    ​​​​​​          
    ​​​​​​          recursion yes; #
    ​​​​​​          allow-recursion { trusted; }; 
    ​​​​​​          listen-on {10.21.73.2; };
    ​​​​​​          allow-transfer { none; };
    ​​​​​​          
    ​​​​​​          
    ​​​​​​          forwaders {
    ​​​​​​                 8.8.8.8;
    ​​​​​​                 1.1.1.1;
    ​​​​​​          };
    ​​​​​​          
    ​​​​​​          dnssec-validation auto;
    ​​​​​​          
    ​​​​​​          listen-on-v6 { any; };
    ​​​​​​  };
    

Lo guardamos y salimos

Quarto: Configuramos el archivo local

En este paso entramos dentro del archivo local
poniendo este comando.

- sudo nano /etc/bind/named.conf.local

Y dentro editamos de esta manera

​​​​    zone "dli.test" { #ponemos nuestro dominio que pondremos de esta forma -primera letra de nuestro nombre + el primero apellido + .test
​​​​    type master;
​​​​    file "/etc/bind/db.dli.test"; #aqui ponemos nuestro dominio con la nomenclatura que hemso puesto antes.
​​​​    };
​​​​    
​​​​    zone "21.10.in-addr.arpa" {
​​​​        type master;
​​​​        file "/etc/bind/zones/db.10.21";
​​​​    }

Ahora lo guardamos y salimos.

Quinta: Crear el archivo de la zona de reenvío

Acontinuacion ponemos este comando para crear el directorio donde dejaremos nuestros archivos de zona.

- sudo mkdir /etc/bind/zones

Luego seguimos con este comando para copiar a la ubicacion adecuada.

- sudo cp /etc/bind/db.local /etc/bind/db.dli.test

Una vez hecha el cambio de archivo de ubicacion entramos dentro del archivo con el siguiente comando.

**- sudo nano /etc/bind/zones/db.dli.test

Dentro del archivo cambiamos algunas cosas.

​​​​;
​​​​; BIND data file for local loopback interface
​​​​;
​​​​$TTL     604800
​​​​@        IN        SOA    server.dli.test. admin.dli.test. (
​​​​                     3          ; Serial
​​​​                604800          ; Refresh
​​​​                 86400          ; Retry
​​​​               2419200          ; Expire
​​​​                604800 )        ; Negative Cache TTL
​​​​                             
​​​​;
​​​​; name servers - NS records
​​​​    IN      NS      server.dli.test
​​​​
​​​​; name servers - A records
​​​​server.dli.test.                IN     A       10.21.73.2
​​​​
​​​​;10.21.73.0/24 - A records
​​​​client.dli.test.                IN     A       10.21.73.100

Despues de editar este archivo ahora editaremos los archivos de la zona inversa

Sexto: Crear los archivos de la zona inversa

En la zona inversa que hemos creado dentro con el archivo named.conf.local, con nuestros archivos inversa que utilizaremos el db.127 de muestra que lo copiaremos en la ubicacion del zones. Utilizamos este comando para copiar la ubicacion.

- sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.21

Despues de copiar la ubicacion a otro sitio, lo editamos con este comando.

- sudo nano /etc/bind/zones/db.10.21

​​​​-    ;
​​​​     ; BIND reverse data file for local loopback interface
​​​​     ;
​​​​     $TTL    604800
​​​​     @       IN      SOA     server.dli.test. admin.dli.test. (
​​​​                          3         ; Serial
​​​​                     604800         ; Refresh
​​​​                      86400         ; Retry
​​​​                    2419200         ; Expire
​​​​                     604800 )       ; Negative Cache TTL
​​​​    ;
​​​​    @       IN      NS      localhost.
​​​​    1.0.0   IN      PTR     localhost.
​​​​     
​​​​    ; name server
​​​​            IN      NS      server.dli.test.
​​​​    ; PTR Records
​​​​    2.71    IN      PTR     server.dli.test.  ;10.21.73.2
​​​​    00.71   IN      PTR     client.dli.test.  ;10.21.73.100

Acontinuacion tenemos que hacer una prueba para ver si lo tenemos el sintaxi haciendo de los archivos con este comando.

- sudo named-checkconf

Si te sale algun error lo corregimos, si no sale ninguno seguimos adelante.

Para saber si los archivos de zona estan correctos lo comprobamos con este comando.

Ahora despues de poner este comando vamos con los siguientes comandos para acabar de configurar servidor el DNS primario.

El comando sirve para reiniciar el bind

- sudo systemctl restart bind9

Luego escribimos lo siguiente que sirve para que el DNS primario que quedara bien configurado y listo para responder a las consultas de DNS.

**- sudo ufw allow Bind9

Segunda parte del DNS, configuraremos los clientes DNS

Septimo:

Ponemos este comando para ver la interfaz que quremos:
- ip address show to 10.21.0.0/24

Seguimos con el siguiente comando para crear un archivo en /etc/netplan que se llamarà 00-private-nameservers.yaml:

- sudo nano /etc/netplan/00-private-nameservers.yaml

En el archivo previamente creado escribimos esto:

​​​​network:
​​​​version: 2
​​​​ethernets:
​​​​    eth1:	                             #Private network interface
​​​​        nameservers:
​​​​            addresses:
​​​​            - 10.128.10.11                   # Private IP for ns1
​​​​            - 10.132.20.12		       # Private IP for ns2
​​​​            search: [ nyc3.example.com ]     # DNS zone

Despues escribimos:

- sudo netplan try

Nos saldra tres linias, con un comunicado, le damos intro y nos dirá configuracion acceptada.

​​​​Output
​​​​Warning: Stopping systemd-networkd.service, but it can still be activated by:
​​​​systemd-networkd.socket
​​​​Do you want to keep these settings?


​​​​Press ENTER before the timeout to accept the new configuration


​​​​Changes will revert in 120 seconds

Luego verificamos la resolucion de DNS del sistema para ver si se ha aplicado nuestro configuracion de DNS con el siguiente comando:

- sudo systemd-resolved status

Nos salda esto:

​​​​Output
​​​​. . .
​​​​Link 3 (eth1)
​​​​  Current Scopes: DNS
​​​​   LLMNR setting: yes
​​​​MulticastDNS setting: no
​​​​  DNSSEC setting: no
​​​​DNSSEC supported: no
​​​​     DNS Servers: ipserver
​​​​      DNS Domain: tu.dominio.com

Ya habremos configurado los servidores internos.

Para probar clientes tendremos que utiliza nslookup

​​​​$ nslookup nom.exemple.test

Nos saldra algo similar a esto:

​​​​Output
​​​​Server:     127.0.0.53
​​​​Address:    127.0.0.53#53

​​​​Non-authoritative answer:
​​​​Name:   cliente.exemple.test
​​​​Address: ipcliente

Ahora probaremos con una busqueda inversa:

​​​​ $ nslookup ip

El resultado sera algo similar a:

​​​​Output
​​​​ipserver.in-addr.arpa   name = nom.example.test.

​​​​Authoritative answers can be found from:

Como se puede observar la IP del servidor está invertida.

Conclusión:

Configurar el DNS nos permite poder referirnos a las distintas interfaces de nuestra red privada por el nombre en vez de por la dirección IP.

Webgrafia

DNS

DHCP