dns (Bind 9) en Centos 7

Se prepara en una máquina virtual un servidor Centos 7 con cuatro interfaces de red nat / puente, interna y sólo-anfitrión. Las dos primeras interfaces se dejan en configuración automática gestionados por NetworkManager de manera dinámica, el de la red interna también gestionado por NetworkManager, que es la que se utilizará para configurar el servidor DNS, pero con configuración manual de una IP estática (10.10.10.1/16). Mientras la sólo anfitrión se configurará de manera manual con una IP estática 192.168.56.101 y será la que se usará para la comunicación utilizando Putty, con el servidor. En el caso de las interfaces no gestionadas por NetworkManager, para que en el caso de reinicio del servidor se active es necesario activa el servicio network. En el caso de utilizar el servisio NetworkManager cada vez que se reinicie el servidor se debe restaurar los DNS preferidos ya que estos se pierden, son remplazados por el que obtiene, en este caso por la red NAT o Red Puente.

Para las pruebas se utilizará el propio servidor y una máquina virtual Windows 7 la que se asignará la IP 10.10.10.5 en una red interna en la red 10.10.10.0/16 configurando como dns la IP de la mv Centos (10.10.10.1).

  1. CONFIGURAR DNS DEL CLIENTE Y SERVIDOR
  2. CONFIGURAR DE SERVICIO DNS
    1. Instalar el servicio DNS (Bind 9) y comprobar su estado.
    2. Crear una Zona Primaria de búsqueda directa llamada equipo#.ga. (# es el número del equipo en el aula)
    3. Configurar los siguientes registros (creando para ello los archivos necesarios para la configuración del DNS en la ruta /etc/named/ nonmbrearquivo.db)
      1. equipo#.ga : IP do 192.168.56.101
      2. equipo#.ga : IP do 192.168.56.102
      3. www .equipo#.ga : IP do 192.168.56.103
      4. equipo#.ga : IP do 192.168.56.104
      5. equipo#.ga : alias de pop.equipo#.ga
      6. equipo#.ga : alias de http://www.equipo#.ga
    4. Zona Primaria de búsqueda inversa para cad uno de los registros anteriores
    5. Configurar manualmente dos MV para que usen como servidor de DNS el servidor montado
    6. Comprobar que funciona haciendo: ping dns1.equipo#.ga e nslookup www .equipo#.ga desde las dos máquinas
    7. Configurar en el servidor DNS los reenviadores, al equipo 8.8.8.8
    8. Hacer nslookup http://www.farodevigo.es para comprobar que reenvía la petición

DNS o Domain Name System (en español: sistema de nombres de dominio) es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada. Este sistema asocia información variada con nombres de dominios asignado a cada uno de los participantes. Su función más importante, es traducir (resolver) nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente.

El servidor DNS utiliza una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.

Servidor

Se añade la IP del servidor para resolución de nombres.

nano /etc/resolv.conf

Este archivo sirve para cambiar los servidores de DNS que el sistema utiliza para resolver nombre de dominio. Generalmente se escribe automáticamente tras una asignación de ip, mediante dhcp, pero también se puede modificar a mano

Cliente

Se utiliza una máquina virtual de W7 para comprobar la resolución de nombres e IPs desde un cliente. Se configura el adaptador de red.

CONFIGURACIÓN DE SERVICIO DNS

Instalación del servicio DNS (Bind 9) y comprobación de su estado

yum install bind bind-utils
ls -l /etc | grep named
drwxr-x---.   2 root named       6 Nov 30 20:29 named
-rw-r-----.   1 root named    1705 Mar 22  2016 named.conf
-rw-r-----.   1 root named    3923 Nov 30 20:29 named.iscdlv.key
-rw-r-----.   1 root named     931 Jun 21  2007 named.rfc1912.zones
-rw-r-----.   1 root named    1587 May 22  2017 named.root.key
-rw-r-----.   1 root named      77 Dec 21 06:32 rndc.key
ls -l /var/named/
total 16
drwxrwx---. 2 named named   23 Dec 21 06:32 data
drwxrwx---. 2 named named   60 Dec 21 06:32 dynamic
-rw-r-----. 1 root  named 2281 May 22  2017 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named    6 Nov 30 20:29 slaves

Copias de seguridad de los archivos antes de modificarlos.

cp /etc/resolv.conf /etc/resolv.conf.backup
for f in /etc/named.*; do cp -v -- "$f" "$f.orig"; done
for f in *.orig; do mv -- "$f" "${f%.orig}.backup"; done
cp  /home/dns/named.conf /home/dns/backup.named.conf
tree /etc | grep named
│ ├── named
├── named
│ ├── named.conf.backup
│ ├── named.conf.local
│ ├── named.iscdlv.key.backup
│ ├── named.rfc1912.zones.backup
│ ├── named.root.key.backup
├── named.conf
├── named.conf.backup
├── named.iscdlv.key
├── named.rfc1912.zones
├── named.root.key
│ └── named
│ ├── named
│ │ │ ├── named.service -> /etc/systemd/system/named.service
│ │ ├── named.service

Se comprueba el estado del servicio.

service named status
Redirecting to /bin/systemctl status named.service
named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor prese t: disabled)
Active: inactive (dead)
service named start
Redirecting to /bin/systemctl start named.service
service named status
Redirecting to /bin/systemctl status named.service
named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-12-21 06:32:23 CET; 7s ago
Process: 10542 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
Process: 10540 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Main PID: 10545 (named)
CGroup: /system.slice/named.service
└─10545 /usr/sbin/named -u named -c /etc/named.conf
Dec 21 06:32:23 localhost.localdomain named[10545]: command channel listening on ::1#953
Dec 21 06:32:23 localhost.localdomain named[10545]: managed-keys-zone: loaded serial 0
Dec 21 06:32:23 localhost.localdomain systemd[1]: Started Berkeley Internet Name Domain (DNS).
Dec 21 06:32:23 localhost.localdomain named[10545]: zone 0.in-addr.arpa/IN: loaded serial 0
Dec 21 06:32:23 localhost.localdomain named[10545]: zone 1.0.0.127.in-addr.arpa/IN: loaded s... 0
Dec 21 06:32:23 localhost.localdomain named[10545]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0... 0
Dec 21 06:32:23 localhost.localdomain named[10545]: zone localhost/IN: loaded serial 0
Dec 21 06:32:23 localhost.localdomain named[10545]: zone localhost.localdomain/IN: loaded se... 0
Dec 21 06:32:23 localhost.localdomain named[10545]: all zones loaded
Dec 21 06:32:23 localhost.localdomain named[10545]: running
Hint: Some lines were ellipsized, use -l to show in full.

Se abren los puertos necesarios para establecer el servicio DNS.

firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd –reload
netstat -antu | grep -w 53
tcp 0 0 10.10.10.1:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.56.101:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp6 0 0 ::1:53 :::* LISTEN
udp 0 0 10.10.10.1:53 0.0.0.0:*
udp 0 0 192.168.56.101:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp6 0 0 ::1:53 :::*

Se edita el archivo de configuración del servicio y se indica la IP en el que el servidor estará escuchando las peticiones, se indicará que permitirá las consultas y se indica la ruta a los ficheros de configuración de las zonas que servirá.

nano /etc/named.conf
// named.conf
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
        listen-on port 53 { 127.0.0.1; 192.168.56.101; 10.10.10.1; };
•  listen-on — Especifica la interfaz de red en la cual named escucha por solicitudes. Por defecto, todas las interfaces son usadas. Usando esta directiva en un servidor DNS que también actúa como una gateway, BIND se puede configurar para sólo contestar solicitudes que se originan desde algunas de las redes. En este ejemplo, solamente son aceptadas las peticiones que llegan desde la interfaz de red sirviendo a las redes privada (192.168.56.0; 10.10.10.0;). 
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.56.0/24; 10.10.10.0/16; };
// allow-query — Especifica cuáles hosts tienen permitido consultar el servidor de nombres. Por defecto, todos los hosts tienen derecho a consultar. Una lista de control de acceso, o una colección de direcciones IP o redes se puede usar aquí para sólo permitir a hosts // particulares hacer consultas al servidor de nombres.
         /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        auth-nxdomain yes;
        */
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
// se añade la directiva para que se cargue el archivo de configuración de las zonas
include "/etc/named/named.conf.local";

Creación de una Zona Primaria de búsqueda directa llamada equipo#.ga.

Se crea el archivo de configuración de las zonas directas e inversa.

nano /etc/named/named.conf.local
zone "prueba.local" {
type master;
file "/etc/named/zones/prueba.local.forward.db"; # zone file path
};
zone "equipo14.ga" {
type master;
 file "/etc/named/zones/equipo14.ga.forward.db"; # zone file path
};
chmod 640 /etc/named/named.conf.local

Configuración en la zona de los siguientes registros (creando para ello los archivos necesarios para la configuración del DNS en la ruta /etc/named/ <nombre>.db)

equipo#.ga : IP do 192.168.56.101
equipo#.ga : IP do 192.168.56.102
www .equipo#.ga : IP do 192.168.56.103
equipo#.ga : IP do 192.168.56.104
equipo#.ga : alias de pop.equipo#.ga
equipo#.ga : alias de http://www.equipo#.ga

Se crea un directorio donde se crearan los archivos de zona de búsqueda directa e inversa.

mkdir /etc/named/zones

Se crea el archivo de zona de búsqueda directa.

nano equipo14.ga.forward,db
$TTL 1d
@ IN SOA equipo14.ga.hostmaster.equipo14.ga. (
17010100 ;serial(yymmddxx)
10800 ;refresh 3 horas
3600 ;retry 1 hora
3600000 ;expire 1000 horas. Entre 2 semanas (1209600 s) a 4 semanas (2419200 s).
86400 );minimum 24 horas / negative caching time to live
; nombre del servidor – registros NS
@ IN NS dns1.equipo14.ga.
@ IN NS dns2.equipo14.ga.
; nombre del servidor - registros A 
dns1 IN A 192.168.56.101
dns2 IN A 192.168.56.102
; 10.10.10.0/24 - registros A 
www IN A 192.168.56.103
pop IN A 192.168.56.104
imap IN CNAME pop
ww3 IN CNAME www

Creación de la Zona Primaria de búsqueda inversa

Se crea el archivo de zona de búsqueda inversa.

nano /etc/named/named.conf.local
zone "prueba.local" {
type master;
file "/etc/named/zones/prueba.local.forward.db"; # zone file path
};
zone "10.10.10.in-addr.arpa" {
type master;
file "/etc/named/zones/ prueba.local.reverse.db "; # 10.10.10.0/16 subnet
};
zone "equipo14.ga" {
type master;
file "/etc/named/zones/equipo14.ga.forward.db"; # zone file path
};
zone "56.162.192.in-addr.arpa" {
 type master;
file "/etc/named/zones/ equipo14.ga.reverse.db "; # 192.168.56.0/24 subnet
 };
nano equipo14.ga.reverse.db
$TTL 86500
@ IN SOA equipo14.ga root.equipo14.ga (
2 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns1.
@ IN NS dns2.
;Reverse lookup for Name Server
101 IN PTR dns1.equipo14.ga.
102 IN PTR dns2.equipo14.ga.
;PTR Record IP address to HostName
103 IN PTR www.equipo14.ga.
104 IN PTR pop.equipo14.ga.
chgrp named –R /etc/named*
chmod 610 /etc/named
chmod 640 –R /etc/named/*
chmod 610 /etc/named/zones
ls -l /etc | grep named
drwx--x---. 3 root named 162 Dec 31 20:58 named
-rwxr-----. 1 root named 1887 Dec 28 14:52 named.conf
-rwxr-----. 1 root named 3923 Nov 30 20:29 named.iscdlv.key
-rwxr-----. 1 root named 931 Dec 27 21:54 named.rfc1912.zones
-rwxr-----. 1 root named 1587 May 22 2017 named.root.key
-rw-r-----. 1 root named 77 Dec 21 06:32 rndc.key
tree -p -g /etc/named
/etc/named
├── [-rwxr----- named ] named.conf.backup
├── [-rwxr----- named ] named.conf.local
├── [-rwxr----- named ] named.iscdlv.key.backup
├── [-rwxr----- named ] named.rfc1912.zones.backup
├── [-rwxr----- named ] named.root.key.backup
└── [drwx--x--- named ] zones
 ├── [-rw-r----- named ] equipo14.ga.forward.db
 ├── [-rw-r----- named ] equipo14.ga.reverse.db
├── [-rw-r----- named ] prueba.local.forward.db
└── [-rw-r----- named ] prueba.local.reverse.db
1 directory, 9 files
named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones

Se comprueba la configuración de los archivos de las zonas.

named-checkzone equipo14.ga /etc/named/zones/equipo14.ga.forward.db
zone prueba.local/IN: loaded serial 2
OK
named-checkzone 56.168.192.in-addr.arpa /etc/named/zones/
equipo14.ga.reverse.db
zone 56.168.192.in-addr.arpa/IN: loaded serial 2
OK

En casos de modificaciones en los archivos de configuración reiniciar el servicio y eliminar la cache.

rndc reload
systemctl restart named

Comprobar que funciona el servicio DNS
Se hace ping dns1.equipo#.ga e nslookup www .equipo#.ga desde las dos máquinas.
Desde el Servidor Centos.
Desde el cliente W7.

Configurar en el servidor DNS los reenviadores, al equipo 8.8.8
Respuesta a la petición de resolución de nombres desde el propio servidor.

nano /etc/named.conf
// named.conf
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { 127.0.0.1; 192.168.56.101; 10.10.10.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.56.0/24; 10.10.10.1/16; };
 forwarders {
 8.8.8.8;
};

Comprobación del reenvío de la petición de resolución
Se hace nslookup http://www.farodevigo.es para comprobar que reenvía la petición.
Respuesta a la petición desde el Servidor
Respuesta a la petición de resolución desde el cliente W7.

Referencias:

http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-bind-namedconf.html
https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-centos-7
http://www.peerwisdom.org/2013/05/15/dns-understanding-the-soa-record/
https://www.techinformant.in/dns-server-configuration-on-rhelcentos-7/
https://www.techinformant.in/dns-server-configuration-on-rhelcentos-7/2/
https://www.tecmint.com/configure-network-interface-in-rhel-centos-7-0/
https://www.youtube.com/watch?v=iktrnk3Nd2E
https://www.youtube.com/watch?v=PS0UppB3-fg
http://www.zytrax.com/books/dns/ch7/queries.html
http://www.zytrax.com/books/dns/ch6/reverse-map.html

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s