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.local | 192.168.0.10 | Master DNS Server |
ns2.pc.local | 192.168.0.20 | Slave 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.
$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.
$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.
READ: Configure DNS Server On Ubuntu 18.04 / Ubuntu 16.04
READ: Configure 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
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.
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
Publicar un comentario