Dnsmasq en CentOS 7.3 – Redes PYME

Índice general de la serie: Redes de Computadoras para las PYMES: Introducción

¡Hola amigos!. Dedicamos este artículo a Dnsmasq un muy sencillo programa que brinda los servicios DNSDHCP mediante un solo software. La mejor documentación que existe sobre este software es la instalada con el propio paquete ubicada en /usr/share/doc/dnsmasq-2.66/, el archivo de configuración -lleno de ejemplos- /etc/dnsmasq.conf, y la obtenida mediante el comando man dnsmasq. También es muy saludable visitar su Sitio Oficial.

[root@dns ~]# ls -l /usr/share/doc/dnsmasq-2.66/
total 136
-rw-r--r--. 1 root root 18007 abr 17  2013 COPYING
-rw-r--r--. 1 root root 59811 nov 11 13:20 CHANGELOG
-rw-r--r--. 1 root root  5164 abr 17  2013 DBus-interface
-rw-r--r--. 1 root root  5009 abr 17  2013 doc.html
-rw-r--r--. 1 root root 25075 abr 17  2013 FAQ
-rw-r--r--. 1 root root 12019 abr 17  2013 setup.html
  • El procedimiento descrito en el post, también es válido para Debian 8 «Jessie». El archivo de configuración /etc/dnsmasq es el mismo. En Jessie, acaso solo necesario instalar su paquete dnsmasq y más nada. Lo escribo porque considero innecesario confeccionar un artículo aparte para el Dnsmasq en Debian. Por suerte, los directorios relativos a la documentación y configuración, son los mismos. 😉

El Dnsmaq es una creación de Simon Kelley <simon@thekelleys.org.uk>.

¿Qué es Dnsmasq?

El Software Libre Dnsmasq es un servidor DNS Forwarder y DHCP para las pequeñas redes de computadoras. Ejemplo típico son las Redes existentes en nuestras PYMES. Demanda pocos recursos de hardware para su funcionamiento y se puede ejecutar en diversas plataformas como Linux, BSD, Android y OS X. Se incluye en casi todos los repositorios de las distribuciones Linux y BSD.

El servidor DHCP del Dnsmasq puede arrendar direcciones IP de forma dinámica y estática, para múltiples redes con rangos diferentes de direcciones IP. Está integrado con el servidor DNS y permite que las máquinas locales que obtengan una dirección IP, aparezcan como registradas en el DNS con sus correctos registros DNS, tanto directos como inversos.

La forma de trabajo nativa del Dnsmasq de guardar en su caché los registros DNS obtenidos mediante las consultas a sus Forwarders, reduce la carga en éstos y mejora el rendimiento general de la velocidad de respuesta a las diferentes consultas DNS.

Soporta estándares modernos tales como IPv6 y DNSSEC, Arranque – Boot a través de la red con soporte para los protocolos BOOTP, TFTP, y PXE.

En el universo Linux, el Dnsmasq es muy utilizado en los servidores para Máquinas sin Disco Duro y Clientes Ligeros. En Microsoft® Windows, con el software ARDENCE®, se utiliza como servidor DHCP un equivalente -al Dnsmasq- que denominan Tellurian.

¿En cuál escenario podemos utilizar al Dnsmasq?

Si ejecutamos man dnsmasq en CentOS, obtendremos la página de ese manual en el idioma inglés. En el archivo dnsmasq.8.gz -en español- que se instala con la distribución Debian 8 «Jessie», se refleja exactamente lo siguiente:

LÍMITES

  • Los valores predeterminados para limites de recursos  son  generalmente conservadores,  y  apropiados  para  uso en dispositivos tipo enrutador encrustrado con procesadores lentos y poca  memoria.  En  hardware  más  capáz,  es  posible  incrementar  los  límites,  y  soportar muchos mas clientes. Lo siguiente se aplica a dnsmasq-2.37: versiones  previas  no escalaban tan bien.
  • Dnsmasq  es capaz de soportar con DNS y DHCP a por lo menos mil (1,000) clientes. Los tiempos de arriendo no deben ser muy cortos (menos de una hora).  El valor de –dns-forward-max puede ser aumentado: comience con el equivalente a el número de clientes y auméntelo si parece  lento  el DNS.  Nótese  que  el rendimiento DNS depende también de los servidores DNS upstream. El tamaño del caché DNS puede ser incrementado: el límite obligatorio es 10,000 nombres y el predeterminado (150) es muy bajo. El enviarle un SIGUSR1 a dnsmasq hace que  bitacore  información  que  es útil  para  afinar  el  tamaño  de  caché.  Ver  la  sección NOTAS para detalles.
  • El servidor TFTP incorporado es capáz de soportar varias transferencias simultáneas  de  archivos:  el  límite absoluto está relacionado con el número de file-handles permitidos a un proceso y la habilidad del  sys‐tem  call  select()  a  soportar números grandes de file-handles. Si el límite es fijado demasiado alto con –tftp-max será  de-escalado  y  el límite  real  será bitacoreado al inicio. Nótese que más transferencias son posibles cuando el mismo archivo es enviado qué cuando cada  transferencia envía un archivo diferente. Es  posible  usar dnsmasq para negar publicidad Web usando una lista de servidores de banners bien conocidos, todos resolviendose a 127.0.0.1 o 0.0.0.0  en  /etc/hosts o en un archivo hosts adicional. La lista puede ser muy larga. Dnsmasq ha sido probado exitósamente con  un  millón  de nombres.  Ese  tamaño  de archivo necesita un CPU de 1GHz y aproximadamente 60MB de RAM.

No escribí ni edité los párrafos anteriores en lo absoluto. Se reflejan tal y cual vienen en el man en español del dnsmasq 2.72 del repositorio del Debian 8.6. A partir de ellos y de la práctica en el uso de éste software, podemos inferir que es poco común -que no imposible- encontrar un escenario en nuestras redes PYMES que sobrepase la cantidad de 1000 clientes o computadoras conectadas a la LAN.

  • Dnsmasq  es capaz de soportar con DNS y DHCP a por lo menos mil (1,000) clientes.

Consideraciones al margen

Siempre me llamó la atención que el premiado software ClearOS Enterprise 5.2 SP1 utilizara el Dnsmasq -unido a su NTP– como Servidor de Infraestructura por defecto, y que lo continúe utilizando como tal -al menos hasta las versiones 7.xxx- en releases pagas que supone instalen un Active Directory® basado en Samba 4. Lástima para nosotros, los amantes del Software Libre, que la compañía ClearFoundationdejara de proveer software de esa calidad en versiones posteriores a la 5.xxx en evidentes aras de mejores ganancias monetarias. Pienso que es contraproducente para la propia compañía.

A pesar de que soy un fan de Debian –y no quiero hacer en lo absoluto una propaganda de mi elección muy personal– siempre he admirado a la Compañía Red Hat®, Inc cuyo modelo de negocios la ha ubicado como líder indiscutible del Software Libre. Además, es el Patrocinador del clon binario CentOS -software 100% libre- de su sistema operativo estrella Red Hat® Enterprise Linux – RHEL. Por algo se dice que CentOS es un RHEL sin soporte 😉

  • Tengo funcionando un Samba Clasic NT 4.0 Style Primary Domain Controller basado en el ClearOS Enterprise 5.2 SP1 desde hace mas de 4 años en la red de una empresa con clientes Windows XP, 7, 8, Windows Server 2003 y Windows server 2012 . ¿Qué hay que hacer cosquillas a un par de valores del registro de cada cliente Windows de versión superior a la XP?, es cierto. ¿Que funciona de lo mejor?, también es cierto. ¿Que el número de equipos no llega a los 100?, cierto también.

Sentido Común

  • Aunque para mi «El Sentido Común es el menos común de los sentidos», ubíquese ante todo en Sus Necesidades y luego seleccione el escenario artístico de acuerdo a lo que Usted necesita expresar y resolver según Su Propio Guión.
  • No utilice un misil transcontinental para matar un mosquito. No se complique la vida innecesariamente: comience por la solución mas sencilla. Sino resuelve con esa, eleve un punto la complejidad, y así sucesivamente.

Instalemos CentOS 7 y el Dnsmasq

Para la instalación del sistema base nos guiamos por el artículo CentOS 7 Hypervisor I y en la selección de paquetes marcamos solamente la opción de «Servidor de Infraestructura«. Los parámetros generales que utilizaremos en la confección de este artículo son los siguientes:

Nombre FQDN de la máquina virtual:  dns.desdelinux.fan
Dirección IP:                10.10.10.5

CentOS 7 instala el dnsmasq por defecto

Si Estimados Lectores, en CentOS 7 el paquete dnsmasq se instala durante la instalación de un Servidor de Infraestructura y supongo que en otras opciones también.

[root@dns ~]# yum info dnsmasq
Complementos cargados:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Paquetes instalados
Nombre        : dnsmasq
Arquitectura  : x86_64
Versión       : 2.66
Lanzamiento   : 21.el7
Tamaño        : 464 k
Repositorio   : installed
Desde el repositorio   : centos-base
Resumen       : A lightweight DHCP/caching DNS server
URL           : http://www.thekelleys.org.uk/dnsmasq/
Licencia      : GPLv2
Descripción :Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP
           : server. It is designed to provide DNS and, optionally, DHCP, to a
           : small network. It can serve the names of local machines which are
           : not in the global DNS. The DHCP server integrates with the DNS
           : server and allows machines with DHCP-allocated addresses to appear
           : in the DNS with names configured either in each host or in a
           : central configuration file. Dnsmasq supports static and dynamic
           : DHCP leases and BOOTP for network booting of diskless machines.

La versión del dnsmasq instalado es la 2.66, y corresponde a la versión de CentOS:

[root@dns ~]# cat /proc/version
Linux version 3.10.0-514.6.1.el7.x86_64 (builder@kbuilder.dev.centos.org)
(gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) )
#1 SMP Wed Jan 18 13:06:36 UTC 2017

Habilitemos y configuremos el dnsmasq

[root@dns ~]# nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.10.5  dns.desdelinux.fan  dns

[root@dns ~]# hostname
dns
[root@dns ~]# hostname -f
dns.desdelinux.fan


[root@dns ~]# systemctl enable dnsmasq
[root@dns ~]# systemctl start dnsmasq
[root@dns ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2017-02-18 11:47:19 EST; 4s ago
 Main PID: 1179 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─1179 /usr/sbin/dnsmasq -k

feb 18 11:47:19 dns systemd[1]: Started DNS caching server..
feb 18 11:47:19 dns systemd[1]: Starting DNS caching server....
feb 18 11:47:19 dns dnsmasq[1179]: started, version 2.66 cachesize 150
feb 18 11:47:19 dns dnsmasq[1179]: compile time options: IPv6 GNU-getopt DB...th
feb 18 11:47:19 dns dnsmasq[1179]: reading /etc/resolv.conf
feb 18 11:47:19 dns dnsmasq[1179]: ignoring nameserver 127.0.0.1 - local in...ce
feb 18 11:47:19 dns dnsmasq[1179]: read /etc/hosts - 3 addresses
Hint: Some lines were ellipsized, use -l to show in full.

No olvidar el paso siguiente:

[root@dns ~]# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.original

Direcciones IP fijas

Con el Dnsmasq, las direcciones de los servidores o equipos que requieran de una IP fija -tanto IPv4 como IPv6- se declaran en el archivo /etc/hosts:

[root@dns ~]# nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# Servidores
10.10.10.1      sysadmin.desdelinux.fan         sysadmin
10.10.10.3  ad-dc.desdelinux.fan            ad-dc
10.10.10.4      fileserver.desdelinux.fan       fileserver
10.10.10.5  dns.desdelinux.fan          dns
10.10.10.6  proxyweb.desdelinux.fan         proxyweb
10.10.10.7  blog.desdelinux.fan         blog
10.10.10.8  ftpserver.desdelinux.fan        ftpserver
10.10.10.9  mail.desdelinux.fan         mail

Creemos el archivo /etc/dnsmasq.conf

[root@dns ~]# nano /etc/dnsmasq.conf
# -------------------------------------------------------------------
# O P C I O N E S   G E N E R A L E S
# -------------------------------------------------------------------
domain-needed   # No pasar nombres sin la parte del dominio
bogus-priv  # No pasar direcciones en el espacio no enrutado
expand-hosts    # Adiciona automaticamente el dominio al host
interface=eth0  # Interface. OJO con la Interface
# except-interface=eth1 # NO escuchar por esta NIC
strict-order    # Orden en que consulta el archivo /etc/resolv.conf

# Incluya muchas mas opciones de configuración
# mediante un archivo o ubicando los archivos
# de configuración adicionales en un directorio
# conf-file=/etc/dnsmasq.more.conf
conf-dir=/etc/dnsmasq.d

# Relativos al Nombre del Dominio
domain=desdelinux.fan   # Nombre del dominio

# El Servidor de Tiempo es 10.10.10.1
address=/time.windows.com/10.10.10.1

# Envía una opción vacía del valor WPAD. Se requiere para que 
# se comporten bien los clientes Windos 7 y posteriores. ;-)
dhcp-option=252,"\n"

# Archivo donde declararemos los HOSTS que serán "baneados"
addn-hosts=/etc/banner_add_hosts

# -------------------------------------------------------------------
# R E G I S T R O S   C N A M E    M X    T X T
# -------------------------------------------------------------------
# Este tipo de registro requiere de una entrada
# en el archivo /etc/hosts
# ej: 10.10.0.7 blog.desdelinux.fan blog
# cname=ALIAS,REAL_NAME
cname=www.desdelinux.fan,blog.desdelinux.fan

# REGISTROS MX
# Devuelve un registro MX con el nombre "desdelinux.fan" con destino
# al equipo mail.desdelinux.fan y prioridad de 10
mx-host=desdelinux.fan,mail.desdelinux.fan,10

# El destino por defecto para los registros MX que se creen
# utilizando la opción localmx será:
mx-target=mail.desdelinux.fan

# Devuelve un registro MX apuntando al mx-target para TODAS
# las máquinas locales
localmx

# Registros TXT. Podemos declarar también un registro SPF
txt-record=desdelinux.fan,"v=spf1 a -all"
txt-record=desdelinux.fan,"DesdeLinux, su Blog dedicado al Software Libre"

# -------------------------------------------------------------------

# -------------------------------------------------------------------
# R A N G O   Y   S U S   O P C I O N E S
# -------------------------------------------------------------------
# Rango IPv4 y tiempo de arrendamiento
# De la 1 a la 29 son para los Servidores y otras necesidades
dhcp-range=10.10.10.30,10.10.10.250,8h

dhcp-lease-max=222      # Cantidad máxima de direcciones a arrendar
                        # por defecto son 150
# Rango IPV6
# dhcp-range=1234::, ra-only

# Opciones para el RANGO
# O P C I O N E S
dhcp-option=1,255.255.255.0 # NETMASK
dhcp-option=3,10.10.10.253  # ROUTER GATEWAY
dhcp-option=6,10.10.10.5    # DNS Servers
dhcp-option=15,desdelinux.fan   # DNS Domain Name
dhcp-option=19,1        # option ip-forwarding ON
dhcp-option=28,10.10.10.255 # BROADCAST
dhcp-option=42,10.10.10.1   # NTP
# dhcp-option=40,DCH        # NIS Domain Name
# dhcp-option=41,10.10.10.5 # NIS Server
# SERVIDOR WINS SAMBA4 EXTERNO  #
# dhcp-option=44,10.10.10.5 # WINS
# dhcp-option=45,10.10.10.5 # Datagramas NetBIOS
# SERVIDOR WINS SAMBA4 EXTERNO  #
# dhcp-option=46,8      # Nodo NetBIOS
# dhcp-option=73,10.10.10.3 # Finger Server

dhcp-authoritative              # DHCP Autoritario en la subnet
# -------------------------------------------------------------------

# -------------------------------------------------------------------
# L O G G I N G   A L    /var/log/messages
# -------------------------------------------------------------------
log-queries

# F I N   del archivo /etc/dnsmasq.conf
# -------------------------------------------------------------------

Comprobemos la sintaxis y reiniciemos el servicio

[root@dns ~]# dnsmasq --test
dnsmasq: syntax check OK.
[root@dns ~]# systemctl restart dnsmasq
[root@dns ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2017-02-18 12:48:05 EST; 5s ago
 Main PID: 1288 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─1288 /usr/sbin/dnsmasq -k

feb 18 12:48:05 dns systemd[1]: Started DNS caching server..
feb 18 12:48:05 dns systemd[1]: Starting DNS caching server....
feb 18 12:48:05 dns dnsmasq[1288]: started, version 2.66 cachesize 150
feb 18 12:48:05 dns dnsmasq[1288]: compile time options: IPv6 GNU-getopt DB...th
feb 18 12:48:05 dns dnsmasq-dhcp[1288]: DHCP, IP range 10.10.10.30 -- 10.10....h
feb 18 12:48:05 dns dnsmasq[1288]: reading /etc/resolv.conf
feb 18 12:48:05 dns dnsmasq[1288]: ignoring nameserver 127.0.0.1 - local in...ce
feb 18 12:48:05 dns dnsmasq[1288]: read /etc/hosts - 11 addresses
feb 18 12:48:05 dns dnsmasq[1288]: failed to load names from /etc/banner_ad...ry
Hint: Some lines were ellipsized, use -l to show in full.

Observemos que en la salida anterior el systemctl status dnsmasq nos devuelve el error:

feb 18 12:48:05 dns dnsmasq[1288]: failed to load names from /etc/banner_ad...ry

quejándose de que no encuentra el archivo /etc/banner_add_hosts.

[root@dns ~]# touch /etc/banner_add_hosts
[root@dns ~]# systemctl restart dnsmasq.service 
[root@dns ~]# systemctl restart dnsmasq.service 
[root@dns ~]# systemctl status dnsmasq.service 
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2017-02-18 12:54:26 EST; 7s ago
 Main PID: 1394 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─1394 /usr/sbin/dnsmasq -k

feb 18 12:54:26 dns systemd[1]: Started DNS caching server..
feb 18 12:54:26 dns systemd[1]: Starting DNS caching server....
feb 18 12:54:26 dns dnsmasq[1394]: started, version 2.66 cachesize 150
feb 18 12:54:26 dns dnsmasq[1394]: compile time options: IPv6 GNU-getopt DB...th
feb 18 12:54:26 dns dnsmasq-dhcp[1394]: DHCP, IP range 10.10.10.30 -- 10.10....h
feb 18 12:54:26 dns dnsmasq[1394]: reading /etc/resolv.conf
feb 18 12:54:26 dns dnsmasq[1394]: ignoring nameserver 127.0.0.1 - local in...ce
feb 18 12:54:26 dns dnsmasq[1394]: read /etc/hosts - 11 addresses
feb 18 12:54:26 dns dnsmasq[1394]: read /etc/banner_add_hosts - 0 addresses
Hint: Some lines were ellipsized, use -l to show in full.

Y ya tenemos los servicios DNS y DHCP en ejecución.

Importante

  • Si modificamos el archivo /etc/dnsmasq.conf debemos reiniciar el servicio para que los cambios tengan efecto.
  • Si modificamos el archivo /etc/hosts para eliminar, modificar o adicionar una IP fija con su correspondiente nombre del host, debemos reiniciar el servicio para que los cambios tengan efecto.
  • systemctl reload dnsmasq.service no se puede utilizar con éste servicio.

Abrimos los puertos necesarios en el Firewall

En el artículo de mi amigo y colega Luigys Toro –aka lagarto– «Cómo abrir puertos en el Firewall de Centos 7» se explica muy bien el procedimiento que debemos seguir para abrir los puertos en el Firewall que CentOS instala por defecto. Aun no se como aplicar las reglas del contexto Selinux al servicio dnsmasq en CentOS. Si alguien lo conoce, favor de iluminarnos.

Los archivos /etc/protocols y /etc/services son una muy buen guía para saber cuales puertos necesitamos abrir para que funcionen bien los servicios DNS y DHCP que brinda el Dnsmasq.

[root@dns ~]# firewall-cmd --get-active-zones
public
  interfaces: eth0

Servicio domain o Servidor de Nombre de Dominio (dns). Protocolo swipe «IP with Encryption»

[root@dns ~]# firewall-cmd --zone=public --add-port=53/tcp --permanent
success

[root@dns ~]# firewall-cmd --zone=public --add-port=53/udp --permanent
success

Servicio bootps o BOOTP server (dhcp). Protocolo ippc «Internet Pluribus Packet Core»

[root@dns ~]# firewall-cmd --zone=public --add-port=67/tcp --permanent
success

[root@dns ~]# firewall-cmd --zone=public --add-port=67/udp --permanent
success

[root@dns ~]# firewall-cmd --reload
success

[root@dns ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 53/udp 67/tcp 53/tcp 67/udp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

Importante

  • Si vamos a brindar los servicios de arrendamiento de direcciones IPv6, también debemos abrir los puertos dhcpv6-server 547/tcp y dhcpv6-server 547/udp.

Comprobaciones

Comprobemos mediante varias consultas DNS como está funcionando nuestro flamante Dnsmasq recién instalado. Para ello seleccionamos el conocido equipo sysadmin.desdelinux.fan, y desde ese equipo, que está conectado a la LAN ejecutaremos varias consultas, no sin antes comprobar que está bien configurado el archivo /etc/resolv.conf:

buzz@sysadmin:~$ cat /etc/resolv.conf 
# Generated by NetworkManager
search desdelinux.fan
nameserver 10.10.10.5

La configuración del archivo /etc/resolv.conf es correcta. Empecemos las consultas

buzz@sysadmin:~$ host dns
dns.desdelinux.fan has address 10.10.10.5
Host dns.desdelinux.fan not found: 5(REFUSED)
dns.desdelinux.fan mail is handled by 1 mail.desdelinux.fan.

Con la configuración propuesta, podemos desechar la salida del comando host sin opciones cuando del Dnsmasq se trata, al devolver líneas como la siguiente:

Host dns.desdelinux.fan not found: 5(REFUSED)

Sino deseamos ese tipo de salida, debemos utilizar el comando host con las opciones -t A, -t CNAME, -t NS, -t SOA, -t SIG, -t AXFR. Consulte man host para más información:

buzz@sysadmin:~$ host -t A dns.desdelinux.fan
dns.desdelinux.fan has address 10.10.10.5

[root@dns ~]#  host -t A dns
dns.desdelinux.fan has address 10.10.10.5

buzz@sysadmin:~$ dig dns

buzz@sysadmin:~$ host 10.10.10.5
5.10.10.10.in-addr.arpa domain name pointer dns.desdelinux.fan.

Dnsmasq no está concebido para un esquema Maestro – Esclavo

buzz@sysadmin:~$ host -t AXFR desdelinux.fan
Trying "desdelinux.fan"
Host desdelinux.fan not found: 5(REFUSED)
; Transfer failed.

Tampoco está concebido para devolver registros NS y SOA

buzz@sysadmin:~$ host -t NS desdelinux.fan
Host desdelinux.fan not found: 5(REFUSED)

buzz@sysadmin:~$ host -t SOA desdelinux.fan
Host desdelinux.fan not found: 5(REFUSED)

buzz@sysadmin:~$ dig IN SOA desdelinux.fan
buzz@sysadmin:~$ dig IN NS desdelinux.fan

Si soporta los registro MX, CNAME, y TXT

buzz@sysadmin:~$ host -t A www
www.desdelinux.fan is an alias for blog.desdelinux.fan.
blog.desdelinux.fan has address 10.10.10.7
buzz@sysadmin:~$ host -t MX desdelinux.fan
desdelinux.fan mail is handled by 10 mail.desdelinux.fan.

buzz@sysadmin:~$ host -t CNAME www
www.desdelinux.fan is an alias for blog.desdelinux.fan.

buzz@sysadmin:~$ host -t A blog.desdelinux.fan
blog.desdelinux.fan has address 10.10.10.7

buzz@sysadmin:~$ host -t TXT desdelinux.fan
desdelinux.fan descriptive text "DesdeLinux, su Blog dedicado al Software Libre"
desdelinux.fan descriptive text "v=spf1 a -all"

Consultas sobre registros PTR

buzz@sysadmin:~$ host -t PTR 10.10.10.7
7.10.10.10.in-addr.arpa domain name pointer blog.desdelinux.fan.

buzz@sysadmin:~$ host 10.10.10.7
7.10.10.10.in-addr.arpa domain name pointer blog.desdelinux.fan.

Clientes Microsoft® Windows

Muy saludable es ejecutar en una consola del servidor dns.desdelinux.fan el comando journalctl -f ANTES de encender una máquina el que cual se ejecute un sistema operativo Microsoft® Windows, para ver la enorme cantidad de consultas DNS a diferentes sitios que efectúa. De verdad que es muy entretenido. 😉

Si queremos evitar que las consultas relativas a algunos de esos sitios, viajen hacia los servidores Raíces – Root Servers o hacia los Forwarders que declaremos en el archivo /etc/resolv.conf, podemos hacer buen uso del archivo /etc/banner_add_host, llenándolo con tantos sitios necesitemos declarar. Ejemplo:

[root@dns ~]# nano /etc/banner_add_hosts
127.0.0.1   windowsupdate.com
127.0.0.1   ctldl.windowsupdate.com
127.0.0.1   ocsp.verisign.com
127.0.0.1   csc3-2010-crl.verisign.com
127.0.0.1   www.msftncsi.com
127.0.0.1   ipv6.msftncsi.com
127.0.0.1   teredo.ipv6.microsoft.com
127.0.0.1   ds.download.windowsupdate.com
127.0.0.1   download.microsoft.com
127.0.0.1   fe2.update.microsoft.com
127.0.0.1   crl.microsoft.com
127.0.0.1   www.download.windowsupdate.com
127.0.0.1   win8.ipv6.microsoft.com
127.0.0.1   spynet.microsoft.com
127.0.0.1   spynet1.microsoft.com
127.0.0.1   spynet2.microsoft.com
127.0.0.1   spynet3.microsoft.com
127.0.0.1   spynet4.microsoft.com
127.0.0.1   spynet5.microsoft.com
127.0.0.1   office15client.microsoft.com
127.0.0.1   addons.mozilla.org
127.0.0.1   crl.verisign.com

[root@dns ~]# dnsmasq --test
dnsmasq: syntax check OK.

[root@dns ~]# systemctl restart dnsmasq.service 
[root@dns ~]# systemctl status dnsmasq.service

[root@dns ~]# host -t A spynet4.microsoft.com
spynet4.microsoft.com has address 127.0.0.1

[root@dns ~]# host -t A www.download.windowsupdate.com
www.download.windowsupdate.com has address 127.0.0.1
  • El formato del archivo /etc/banner_add_hosts es igual al del archivo /etc/hosts. Recordemos que la lista de los dominios a «banear» puede ser tan larga como necesitemos, acorde a lo expresado en el acápite LÍMITES de éste artículo.

Para comprobar desde el cliente seven.desdelinux.fan que arendó la dirección IP:

buzz@sysadmin:~$ host -t A seven
seven.desdelinux.fan has address 10.10.10.115

ejecutamos en el propio cliente Windows el comando cmd:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\buzz>nslookup
Default Server:  dns.desdelinux.fan
Address:  10.10.10.5

> dns
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    dns.desdelinux.fan
Address:  10.10.10.5

> ftpserver
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    ftpserver.desdelinux.fan
Address:  10.10.10.8

> www
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    blog.desdelinux.fan
Address:  10.10.10.7
Aliases:  www.desdelinux.fan

> mail
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    mail.desdelinux.fan
Address:  10.10.10.9

> sysadmin
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    sysadmin.desdelinux.fan
Address:  10.10.10.1

> www.download.windowsupdate.com
Server:  dns.desdelinux.fan
Address:  10.10.10.5

Name:    www.download.windowsupdate.com
Address:  127.0.0.1

> quit

C:\Users\buzz>

Resumen

Hasta aquí hemos visto unas pocas características principales del Dnsmasq. Sugiero lean y estudien los archivos mencionados en el primer párrafo de éste artículo, si desean conocer mas sobre sobre éste magnífico -y sorprendente- programa. Mediante su uso podemos facilitarnos la vida grandemente.

Por el año 2014 leí el artículo «How To: Samba4 AD PDC + Windows XP, Vista and 7«. El creador del artículo declara sin sonrojo alguno: «I hate bind, so it’s dnsmasq to the rescue» (Sic) que mas o menos quiere decir «Yo odio el BIND, de forma que el Dnsmasq sale al rescate«. Que conste que esa frase no la digo yo.

De paso les comento que, en ese artículo el Autor no deja claro el origen de algunos registros DNS y en términos generales no es una buena guía para implementar un Active Directory® basado en Samba 4. Si me llamó la atención su fanática preferencia por el Dnsmasq.

Para nada odio al BIND. Lo demuestran mis cuatro -4- artículos anteriores:

Como he escrito en ocasiones anteriores, casi nunca recomiendo, sino que sugiero. En el caso del Dnsmasq si recomiendo su uso en las Redes PYMES.

Próxima entrega

La próxima entrega –creo, pienso– la dedicaré a la integración del Dnsmasq con un Microsoft® Active Directory®. Será un buen punto de entrada para un artículo –muy– posterior que versará sobre cómo hacer un AD-DC con Samba 4 y el Dnsmasq.


12 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Joan Hernandez dijo

    Muy buenos días salvaje!!! Corroboro todo lo que dices y verdaderamente que el funcionamiento de esa red hasta la actualidad no da de que quejarse. Ya no soy más sysadmin de esa red, pues sabes los problemas que tuve… pero mientras estuve al frente de esa red y hasta la actualidad que me comunico con el que está al frente de ella no da de que quejarse. Mis mejores experiencias con ClearOS y DNSmasq.

  2.   federico dijo

    Amigo Joan, Gracias por tu ayuda al corroborar lo que escribí sobre la empresa con ClearOS.

  3.   dhunter dijo

    Del dnsmasq lo que más me gusta es lo versátil que puede ser, en un solo fichero configuras DNS y DHCP. Sobre el rendimiento no tengo quejas, hace un tiempo apagé un servidor 2003R2 que hacía de DC, varios clientes Linux de municipios lejanos quedaron «colgados» y como no tenía manera de modificarles las preferencias DNS lo que hice fue levantar un Jessie con esa ip y dnsmasq haciendo caché al nuevo DNS, todo ok.
    Muy buen artículo Fico, mis saludos.

    1.    federico dijo

      ¿Qué te parece lo del conservador límite de atender hasta 1000 equipos?. Tengo posibilidad de comprobar el dato con un amigo que se dedica a ofrecer servicios de un sitio web «Cautivo» mediante WiFi, y hace poco le dio el servicio -con BIND + Isc-dhcp- a mas de 1000 móviles en el Teatro Karl Marx. Me contrató para que le hiciera un servidor con el menor consumo de recursos posibles, para ese trabajo.

      1.    dhunter dijo

        Hay que tener claro que esos llamados «límites» fueron medidos hace unos cuantos años y con hardware bastante inferior a la norma actual, tanto el dnsmasq como los clientes han evolucionado bastante, estoy bastante confiado que aguantará la carga de esos usuarios. Siempre documentate y bloquea las mil y una consultas que hace Android tratando de telefonear a casa, jeje. Saludos

  4.   federico dijo

    Tendré muy en cuenta tus consejos, dhunter. Gracias nuevamente

  5.   IWO dijo

    Como ya viene siendo habitual en esta serie de PYMES, este post sobre «DNSMASQ» es otro gran articulo que nos obsequia el autor a los sysadmins para desarrollarnos técnica y teóricamente.
    En mi caso personal conocía vagamente sobre el dnsmasq ya que le había dado prioridad al DNS (Bind) y al DHCP como dos servicios independientes. Para mi es GENIAL! lo del dnsmasq de permitir configurar ambos en un solo servicio (a través del archivo /etc/dnsmasq.conf).
    Buenísimo! que sea capaz de soportar con DNS y DHCP a por lo menos 1,000) clientes sin afectar su rendimiento.
    Muy bueno también el TIP de como evitar las consultas relativas a los Root Servers o hacia los Forwarders utilizando el archivo /etc/banner_add_host en donde insertamos los «N» sitios que necesitemos declarar como si fueran «localhosts».
    Por ultimo y como viene siendo común en el autor con su sección de la «Próxima entrega» ahora nos piensa entregar otra joyita «la integración del Dnsmasq con un Microsoft® Active Directory®».
    Vaya que ya lo estamos esperando con ansia.

  6.   Zodiac dijo

    Estuve ocupado y no pude seguir tus artículos. Me he perdido algunos. Cada nuevo escrito tuyo es una agradable sorpresa que encierra nuevas enseñanzas. Continúa así, amigo fico

  7.   crespo88 dijo

    Dnsmasq, soy testigo de su funcionamiento a diario, es lo máximo. Siempre te dije y te insistí sobre la integración del bind9 y el isc-dhcp-server (solución que me gusta mucho, pues intentándola tantas veces aprendí y vi y adquirí lo poco que sé sobre dns y dhcp, VIIII, pude ver lo que Microsoft no te deja observar, lo que ellos no desean que aprendas y te mantienen en un cuarto oscuro y encerrado, realmente son servicios de los cuales se hablaba como si fueran monstruos y son buena gente, se puede tratar con ellos la verdad), y gracias a ello te viste obligado a superarte aún más, de hecho ya estamos viendo todos los resultados de dicho esfuerzo y te agradecemos la calidad de tus posts.
    Este en lo particular está súper, no le quito crédito al resto, POR SUPUESTO QUE NO, NI PENSARLO; pero es que gracias a ti conocí al ya amigo dnsmasq y la red de mi Residencia vive más que feliz de encontrarse con nuestro nuevo colega creado por Simon Kelley. Las gracias para el también.

  8.   federico dijo

    IWO: No vas a esperar mucho por el próximo post. No lo he terminado aun por que estoy muy ocupado con mi trabajo diario. El tiempo… Pero seguro lo tendrás para la próxima semana.

  9.   federico dijo

    Crespo88: No puedo agregar mas nada a tu completo comentario. Y ya estoy corto de tiempo pues a las 7 pm me quedo sin navegación 😉
    ¡Mil Gracias!.

  10.   cesareli dijo

    Hola, FICO. Muy bien artículo.
    Me gustaría saber cómo implementar dnsmasq en un baremetal (HP Proliant gen 8) que aloja máquinas virtuales KVM.
    ¿La configuración de dnsmasq debería hacerla en el host o en una de las VM’s que funcione de servidor dnsmasq?
    Estoy hecho un lío.
    Saludos.