Ir al contenido principal

CONFIGURACION SERVIDOR DNS SECUNDARIO Y SUBDOMINIOS DNS UBUNTU SERVER 18.04

Muy buenas hoy vamos a enseñar como crear y configurar un servidor DNS con ubuntu server 18.04, realizaremos la configuración tanto del servidor maestro como del esclavo, y realizaremos las pruebas con los clientes Windows 10 y ubuntu desktop 18.04.

NOTA: TENEMOS QUE TENER EL SERVIDOR MAESTRO Y ESCLAVO EN NAT PARA DESCARGAR LOS PAQUETES, LUEGO SE CAMBIARÁ LA CONFIGURACIÓN EN RED NAT.

La estructura va a ser la siguiente:

pc.local
ns1.pc.local192.168.0.10Master DNS Server
ns2.pc.local192.168.0.20Slave DNS Server. Se encarga de las solicitudes de DNS cuando el servidor maestro deja de funcionar.

Configurar el servidor DNS en Ubuntu 18.04 / Ubuntu 16.04

Primero

sudo apt update

Asegúrese de que el servidor DNS tenga una dirección IP estática.
Para ello haz click aquí para enseñar como realizar una configuración de una IP estática.

Instalar servidor DNS

El nombre del paquete para el servidor DNS en Ubuntu es bind9 y está disponible en el repositorio base. Utilice el comando apt para instalar el paquete bind9 .

sudo apt install -y bind9 bind9utils bind9-doc dnsutils

Configurar el servidor DNS

El directorio / etc / bind / es el directorio de configuración principal del servidor DNS y contiene archivos de configuración y archivos de búsqueda de zona.

El archivo de configuración global es /etc/bind/named.conf . No debe usar este archivo para su zona DNS local, sino que puede usar el archivo /etc/bind/named.conf.local .

Crear zonas

Comencemos por crear una zona de reenvío para su dominio.

sudo nano /etc/bind/named.conf.local
Zona Directa

La siguiente es la entrada de la zona de reenvío para el dominio itzgeek.local en el archivo named.conf.local .

zone "itzgeek.local" IN { // Domain name
    
      type master; // Primary DNS

     file "/etc/bind/forward.itzgeek.local.db"; // Forward lookup file

     allow-update { none; }; // Since this is the primary DNS, it should be none.

};
Zona inversa

Las siguientes entradas son para la zona inversa en el archivo named.conf.local .

zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name, should match your network in reverse order

     type master; // Primary DNS

     file "/etc/bind/reverse.itzgeek.local.db"; //Reverse lookup file

     allow-update { none; }; //Since this is the primary DNS, it should be none.

};

Crear archivo de búsqueda de zona

Una vez que crea las zonas, puede seguir adelante y crear archivos de datos de zona que contengan registros DNS para la zona de avance y la zona de retroceso.

Archivo de búsqueda de Forward Zone

Copie las entradas de muestra en el archivo de zona llamado forward.itzgeek.local.db para la zona de avance en el directorio / etc / bind .

Tipos de registro en el archivo de zona,

SOA - Inicio de la autoridad
NS - Servidor de nombres
A - Registro A
MX - Correo para Exchange
CN - Nombre canónico

Los nombres de dominio deben terminar con un punto (.).

sudo cp /etc/bind/db.local /etc/bind/forward.itzgeek.local.db

Edite la zona.

sudo nano /etc/bind/forward.itzgeek.local.db

Actualice el contenido que se muestra a continuación.

Siempre que cambie algún registro en el archivo de búsqueda, asegúrese de actualizar el número de serie a un número aleatorio, más alto que el actual.
$TTL    604800
@       IN      SOA     ns1.itzgeek.local. root.itzgeek.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;@      IN      A       127.0.0.1
;@      IN      AAAA    ::1

;Name Server Information

@        IN      NS      ns1.itzgeek.local.

;IP address of Name Server

ns1     IN      A       192.168.0.10

;Mail Exchanger

itzgeek.local.   IN     MX   10   mail.itzgeek.local.

;A – Record HostName To Ip Address

www     IN       A      192.168.0.100
mail    IN       A      192.168.0.150

;CNAME record

ftp     IN      CNAME   www.itgeek.local.
Archivo de búsqueda de zona inversa

Copie las entradas de muestra en el archivo de zona llamado reverse.itzgeek.local.db para la zona inversa en el directorio / etc / bind y cree punteros inversos para los registros de la zona de avance anteriores.

PTR - Puntero
SOA - Inicio de autoridad

sudo cp /etc/bind/db.127 /etc/bind/reverse.itzgeek.local.db

Edite el archivo de zona inversa.

sudo nano /etc/bind/reverse.itzgeek.local.db

Actualice el contenido que se muestra a continuación.

Siempre que cambie algún registro DNS en el archivo de búsqueda, asegúrese de actualizar el número de serie a un número aleatorio, más alto que el actual.

$TTL    604800
@       IN      SOA     itzgeek.local. root.itzgeek.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;1.0.0  IN      PTR     localhost.

;Name Server Information

@       IN      NS     ns1.itzgeek.local.

;Reverse lookup for Name Server

10      IN      PTR    ns1.itzgeek.local.

;PTR Record IP address to HostName

100     IN      PTR    www.itzgeek.local.
150     IN      PTR    mail.itzgeek.local.

Compruebe la sintaxis de configuración de BIND

Utilice el comando named-checkconf para comprobar la sintaxis y los archivos named.conf * en busca de errores.

sudo named-checkconf

El comando volverá al shell si no hay errores.

Además, puede utilizar named-checkzone para comprobar los errores de sintaxis en los archivos de zona.

Zona Directa

sudo named-checkzone itzgeek.local /etc/bind/forward.itzgeek.local.db

Resultado:

zone itzgeek.local/IN: loaded serial 3
OK

Zona inversa

named-checkzone 0.168.192.in-addr.arpa /etc/bind/reverse.itzgeek.local.db

Resultado:

zone 0.168.192.in-addr.arpa/IN: loaded serial 3
OK

Reinicie el servicio de vinculación.

sudo systemctl restart bind9

Habilítelo al iniciar el sistema.

sudo systemctl enable bind9

Verifique el estado del servicio bind9.

sudo systemctl status bind9

Actualización de registro DNS

Siempre que cambie un registro DNS, no olvide cambiar el número de serie en el archivo de zona y volver a cargar la zona.

Cambie itzgeek.local & 0.168.192.in-addr.arpa con los nombres de sus zonas.

### Forward Zone ###

sudo rndc reload itzgeek.local 

### Reverse Zone ###

sudo rndc reload 0.168.192.in-addr.arpa

Verificar servidor DNS

Vaya a cualquier máquina cliente y agregue nuestra nueva dirección IP del servidor DNS en el archivo /etc/resolv.conf .

sudo nano /etc/resolv.conf

Haga una entrada como la siguiente.

nameserver 192.168.0.10

O

Lea el siguiente tutorial para configurar la IP del servidor DNS en Linux.

PULSA AQUÍ.

Utilice el comando dig para verificar la zona de avance.

dig www.itzgeek.local

Si no encuentra el comando, instale el paquete bind-utils .

Producción:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.itzgeek.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18022
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.itzgeek.local.             IN      A

;; ANSWER SECTION:
www.itzgeek.local.      604800  IN      A       192.168.0.100

;; AUTHORITY SECTION:
itzgeek.local.          604800  IN      NS      ns1.itzgeek.local.

;; ADDITIONAL SECTION:
ns1.itzgeek.local.      604800  IN      A       192.168.0.10

;; Query time: 0 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Dec 30 12:42:18 EST 2019
;; MSG SIZE  rcvd: 96

La respuesta del servidor DNS para la búsqueda directa: 192.168.0.100 como dirección IP para www.itzgeek.local .

Confirme la búsqueda inversa con el comando dig.

dig -x 192.168.0.100

Producción:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> -x 192.168.0.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37122
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;100.0.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
100.0.168.192.in-addr.arpa. 604800 IN   PTR     www.itzgeek.local.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 604800  IN      NS      ns1.itzgeek.local.

;; ADDITIONAL SECTION:
ns1.itzgeek.local.      604800  IN      A       192.168.0.10

;; Query time: 0 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Dec 30 12:43:20 EST 2019
;; MSG SIZE  rcvd: 120

La respuesta del servidor DNS para la búsqueda inversa: www.itzgeek.local como nombre para 192.168.0.100.

Este resultado confirma que ambas búsquedas de zona funcionan bien.

-------------------------------------------------------------------------------------------------

ns1.itzgeek.local is already configured as the master for the itzgeek.local domain.

READConfigure DNS Server On Ubuntu 18.04 / Ubuntu 16.04

READConfigure DNS Server On Debian 10 / Debian 9

We will now configure ns2.itzgeek.local as a slave DNS server for the itzgeek.local domain.

Configure Master Server

We need to configure BIND on the master server (ns1.itzgeek.local) to enable zone transfer to our secondary server (ns2.itzgeek.local).

Edit the /etc/named.conf.local file in ns1.itzgeek.local.

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

You would need to update the existing zones we created for itzgeek.local with the allow-transfer and also-notify parameter.

The allow-transfer will let you transfer zones from the master to a slave server and also-notify help us to notify a slave server when there has a change in zones at the master server.

Forward Zone

zone "itzgeek.local" IN { // Domain name

     type master; // Primary DNS

     file "/etc/bind/forward.itzgeek.local.db"; // Forward lookup file

     allow-transfer  { 192.168.0.20; }; //Allow Transfer of zone from the master server

     also-notify { 192.168.0.20; }; //Notify slave for zone changes

};

Reverse Zone

zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name, should match your network in reverse order

     type master; // Primary DNS

     file "/etc/bind/reverse.itzgeek.local.db"; //Reverse lookup file

     allow-transfer  { 192.168.0.20; }; //Allow Transfer of zone from the master server

     also-notify { 192.168.0.20; }; //Notify slave for zone changes

};

Restart the DNS service at ns1.itzgeek.local.

sudo systemctl restart bind9

Configure Slave Server

Make sure you install the following packages on the slave server.

sudo apt-get install -y bind9 bind9utils bind9-doc dnsutils

It is the time to add a slave zone declaration on the slave server (ns2.itzgeek.local). Edit /etc/bind/named.conf.local file.

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

Forward Zone

Add the slave zone like below.

zone "itzgeek.local" IN { //Domain name 

     type slave; //Secondary Slave DNS

     file "/var/cache/bind/forward.itzgeek.local.db"; //Forward Zone Cache file

     masters { 192.168.0.10; }; //Master Server IP

};

Reverse Zone

Add the slave zone like below.

zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name. Should match your network in reverse order

     type slave; // Secondary/Slave DNS

     file "/var/cache/bind/reverse.itzgeek.local.db"; //Reverse Zone Cache file

     masters { 192.168.0.10; }; //Master Server IP

};

Restart DNS service at ns2.itzgeek.local

ADVERTISEMENT

sudo systemctl restart bind9

Wait for a few minutes, and you would start to see something like below in /var/log/syslog file.

Jan  4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: Transfer started.
Jan  4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: connected using 192.168.0.20#54333
Jan  4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: transferred serial 3
Jan  4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer status: success
Jan  4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 8 records, 228 bytes, 0.004 secs (57000 bytes/sec)
Jan  4 23:18:49 ns2 named[2637]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
Jan  4 23:18:49 ns2 named[2637]: resolver priming query complete
Jan  4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: Transfer started.
Jan  4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: connected using 192.168.0.20#55105
Jan  4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: transferred serial 3
Jan  4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer status: success
Jan  4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 6 records, 210 bytes, 0.007 secs (30000 bytes/sec)
Jan  4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 3)

DNS Record Update

While modifying records of any zone on the master server, make sure you update the serial number to some random number, higher than current. Also, run the following command on the master server to reload the zone so that the slave zone gets the updated records.

Change itzgeek.local & 0.168.192.in-addr.arpa with your zone names.

### Forward Zone ###

sudo rndc reload itzgeek.local 

### Reverse Zone ###

sudo rndc reload 0.168.192.in-addr.arpa

Verify Slave DNS Server

On the client machine, add a slave DNS server IP Address in /etc/resolv.conf file.

sudo nano /etc/resolv.conf

Add an additional DNS entry like below along with existing entries.

nameserver 192.168.0.20

OR

Read the below tutorial to set DNS server IP in Linux.

READ: How to Set DNS IP address in CentOS / Fedora

READ: How to Set DNS IP address in Ubuntu / Debian – ifupdown

READ: How To Set DNS IP Address in Ubuntu 18.04 – Netplan

You can either use nslookup or dig command to verify the DNS server.

Use the dig command to verify the forward lookup along with @<dnsserver> in case you are unable to make an entry in /etc/resolv.conf.

Verify lookup for www.itzgeek.local using ns2.itzgeek.local (192.168.0.20)

dig www.itzgeek.local @192.168.0.20

Output:

; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local @192.168.0.20
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29076
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 0ff4fbeabbfe6d45cf28f0e85e11725b14943fb073203e78 (good)
;; QUESTION SECTION:
;www.itzgeek.local.             IN      A

;; ANSWER SECTION:
www.itzgeek.local.      604800  IN      A       192.168.0.100

;; AUTHORITY SECTION:
itzgeek.local.          604800  IN      NS      ns1.itzgeek.local.

;; ADDITIONAL SECTION:
ns1.itzgeek.local.      604800  IN      A       192.168.0.10

;; Query time: 0 msec
;; SERVER: 192.168.0.20#53(192.168.0.20)
;; WHEN: Sun Jan 05 10:51:26 IST 2020
;; MSG SIZE  rcvd: 124

Now, you can see that the slave server answers DNS queries.

Comentarios