jriguera.dnsmasq
ansible-role-dnsmasq
Un rol versátil para configurar dnsmasq, creado bajo esta filosofía:
https://github.com/jriguera/ansible-role-pattern/blob/master/README.md
Este rol soporta la definición de diferentes interfaces para diferentes propósitos (dns, tftp...) y muchos parámetros de dnsmasq. También puede gestionar el archivo resolv.conf.
Compatible con Ansible 2.0, funciona con Ubuntu Trusty, Xenial y Centos 7.
Configuración
Los parámetros de configuración por defecto son:
dnsmasq_enabled_on_startup: True
# Gestionar resolvconf
dnsmasq_resolvconf: False
# Instalar desde repositorios principales o directamente desde paquetes del sistema operativo
dnsmasq_os_packages: True
# Parámetros globales, ¡se necesitan configuraciones! de lo contrario son ignorados.
dnsmasq_dhcp: True
dnsmasq_tftp: True
### resolv.conf
#dnsmasq_host_domain: local
#dnsmasq_host_search: local
dnsmasq_host_resolvers: [ "127.0.0.1" ]
# Establecer la instalación en la que dnsmasq enviará entradas del syslog, por defecto es
# DAEMON, y LOCAL0 cuando está en modo de depuración. Si el nombre del servicio contiene
# al menos un carácter '/', se toma como un nombre de archivo, y dnsmasq
# registrará en dicho archivo en lugar de en syslog. Si el servicio es '-' entonces dnsmasq
# registrará en stderr.
dnsmasq_conf_log: /var/log/dnsmasq.log
# Habilitar el registro asincrónico y opcionalmente establecer el límite en el número de
# líneas que serán encoladas por dnsmasq cuando escribir en el syslog sea lento.
#dnsmasq_conf_log_async:
dnsmasq_conf_log_dns: False
# Lista de IP o interfaces para escuchar (lista vacía para todos)
dnsmasq_conf_listen: []
# En sistemas que lo soportan, dnsmasq enlaza la dirección comodín,
# incluso cuando está escuchando solo en algunas interfaces. Luego descarta
# las solicitudes a las que no debería responder. Esto tiene la ventaja de
# funcionar incluso cuando las interfaces van y vienen y cambian de dirección.
dnsmasq_conf_bind_interfaces: 'dynamic'
### DNS
# Acepta consultas DNS solo de hosts cuya dirección está en una subred local,
# es decir, una subred para la cual existe una interfaz en el servidor.
#dnsmasq_conf_local_service: True
# Nunca reenviar nombres simples (sin un punto o parte de dominio)
dnsmasq_conf_domain_needed: True
# Habilitar código para detectar bucles de reenvío DNS; es decir, la situación donde una consulta
# enviada a uno de los servidores ascendentes eventualmente regresa como una nueva consulta al
# instancia de dnsmasq.
#dnsmasq_conf_dns_loop_detect: True
# Todas las búsquedas inversas para rangos IP privados (es decir, 192.168.x.x, etc.) que
# no se encuentran en /etc/hosts o en el archivo de arrendamientos DHCP se responden con
# "no existe tal dominio" en lugar de ser reenviadas a servidores ascendentes.
# Nunca reenviar direcciones en los espacios de direcciones no enrutados.
dnsmasq_conf_bogus_priv: True
# Si no quieres que dnsmasq lea /etc/hosts, descomenta la
# siguiente línea.
dnsmasq_conf_no_hosts: False
# Archivo adicional de hosts, formato /etc/hosts (¡es una lista!)
#dnsmasq_conf_hosts:
# - ["127.0.0.1", "localhost"]
# - ["::1", "ip6-localhost", "ip6-loopback"]
# - ["fe00::0", "ip6-localnet"]
# - ["ff00::0", "ip6-mcastprefix"]
# - ["ff02::1", "ip6-allnodes"]
# - ["ff02::2", "ip6-allrouters"]
# - ["192.168.1.10", "foo.mydomain.org", "foo" ]
dnsmasq_conf_hosts: []
# Establecer el tamaño de la memoria caché de DNS aquí.
cache-size: 1024
# Deshabilitar la memoria caché negativa. La memoria caché negativa permite a dnsmasq recordar
# respuestas "no existe tal dominio" de servidores de nombres ascendentes y responder consultas
# idénticas sin reenviarlas de nuevo.
# Las respuestas negativas de los servidores ascendentes normalmente contienen información de tiempo de vida
# en registros SOA que dnsmasq utiliza para almacenar en caché. Si este parámetro no está definido: "no-negcache".
dnsmasq_conf_negcache: 5
# Esta bandera obliga a dnsmasq a intentar cada consulta con cada servidor estrictamente en
# el orden en que aparecen en /etc/resolv.conf
dnsmasq_conf_strict_order: False
# Esta bandera obliga a dnsmasq a enviar todas las consultas a todos los servidores disponibles.
# La respuesta del servidor que responde primero será devuelta al solicitante original.
dnsmasq_conf_all_servers: False
# Si quieres que dnsmasq lea "/etc/resolv.conf" o cualquier otro archivo.
# Vacío o no definido para deshabilitar la lectura de resolv.conf
dnsmasq_conf_resolv: /etc/resolv.conf
# No sondear /etc/resolv.conf en busca de cambios.
dnsmasq_conf_no_poll: False
# si dnsmasq_conf_no_poll es False entonces /etc/resolv.conf es leído nuevamente o los
# servidores ascendentes son establecidos a través de DBus, se borra la caché de DNS.
dnsmasq_conf_clear_on_reload: True
# Especificar la dirección IP de los servidores ascendentes directamente. Establecer esta bandera no
# suprime la lectura de /etc/resolv.conf: ['localnet', '192.168.0.1']
# Ejemplo de enrutamiento de consultas PTR a servidores de nombres: esto enviará todas:
# consultas dirección->nombre para 192.168.3/24 al servidor de nombres 10.1.2.3
# ['3.168.192.in-addr.arpa', '10.1.2.3']
#dnsmasq_conf_servers:
# - [ "/google.com/", "8.8.8.8" ]
# - "8.8.4.4"
dnsmasq_conf_servers: [ "8.8.8.8", "8.8.4.4" ]
# Devuelve un registro MX apuntando a sí mismo para todas las máquinas locales: '_self'
# Registro MX apuntando al servidor dnsmasq para todas las máquinas locales: '_local' o ''
# Registro MX apuntando a "servername" para todas las máquinas locales: 'servername'
# Devuelve un registro MX llamado "maildomain.com" con destino
# "servername" y preferencia 50: [maildomain.com, servername, 50]
#dnsmasq_conf_mx: servername
#dnsmasq_conf_mx_domain: {{ hostvars['k4.ww.mens.de'].
#dnsmasq_conf_mx_pref: 1
# Agregar registros A, AAAA y PTR al DNS. Esto agrega uno o más nombres al
# DNS con registros IPv4 (A) y IPv6 (AAAA) asociados
#dnsmasq_conf_host_records:
# -[]
# Definir una zona DNS para la que dnsmasq actúa como servidor autoritativo.
#dnsmasq_conf_auth_zone: []
### DHCP
# Registrar mucha información adicional sobre transacciones DHCP.
dnsmasq_conf_log_dhcp: False
# Establecer el dominio para dnsmasq. Esto es opcional, pero si se establece, hace lo siguiente:
# 1) Permite que los hosts DHCP tengan nombres de dominio completamente calificados, siempre que
# la parte del dominio coincida con esta configuración.
# 2) Establece la opción DHCP de "dominio", configurando potencialmente el
# dominio de todos los sistemas configurados por DHCP.
# 3) Proporciona la parte del dominio para "expand-hosts".
# Si el dominio se da como "#" entonces el dominio se lee desde la primera
# directiva "search" en /etc/resolv.conf
dnsmasq_conf_domain: '#'
# Solo si dnsmasq_conf_domain está configurado, el nombre no calificado ya no se incluye
# en el DNS, solo el nombre calificado.
dnsmasq_conf_dhcp_fqdn: True
# Debe establecerse cuando dnsmasq es definitivamente el único servidor DHCP en una red.
dnsmasq_conf_dhcp_authoritative: True
# Dnsmasq está diseñado para elegir direcciones IP para clientes DHCP usando un hash
# de la dirección MAC del cliente.
dnsmasq_conf_dhcp_sequential_ip: True
# Deshabilitar la reutilización de los campos del nombre del servidor DHCP y del archivo como espacio de opción adicional.
dnsmasq_conf_dhcp_no_override: True
# Descomentar esto para habilitar el servidor DHCP integrado, necesitas
# proporcionar el rango de direcciones disponibles para arrendar y opcionalmente
# un tiempo de arrendamiento. Si tienes más de una red, necesitarás
# repetir esto para cada red en la que quieras proporcionar servicio DHCP.
#dnsmasq_conf_dhcp: []
#dnsmasq_conf_dhcp:
# - device: eth0:
# range: [192.168.1.80, 192.168.1.150, infinite]
# option: []
# ignore_names: True
# generate_names: True
# boot: []
# tftp: /var/lib/tftpboot
# Leer información de los hosts DHCP de la lista o de un archivo local especificado
#dnsmasq_conf_dhcp_hosts: []
# Suprimir completamente el uso del archivo de base de datos de arrendamientos. El archivo no será
# creado, leído ni escrito.
dnsmasq_conf_dhcp_leasefile_ro: False
# Cada vez que se crea un nuevo arrendamiento DHCP, o se destruye uno antiguo, o se completa
# la transferencia de un archivo TFTP, se ejecuta el ejecutable especificado por esta opción.
#dnsmasq_conf_dhcp_script: files/program.bin
### TFTP
# Habilitar el modo seguro de TFTP: sin esto, cualquier archivo que sea legible por el
# proceso dnsmasq bajo las reglas de control de acceso unix normales está disponible a través de TFTP.
dnsmasq_conf_tftp_secure: False
# Convertir los nombres de archivos en solicitudes TFTP a minúsculas. Esto es útil para
# solicitudes de máquinas Windows.
dnsmasq_conf_tftp_lowercase: True
# Establecer el número máximo de conexiones TFTP concurrentes permitidas.
dnsmasq_conf_tftp_max: 50
# Detener el servidor TFTP de negociar la opción "tamaño del bloque" con un cliente.
dnsmasq_conf_tftp_no_blocksize: False
Puedes sobrescribir estos parámetros por defecto como variables de rol. Consulta el ejemplo en site.yml
con vagrant y pruébalo usando vagrant up
.
Además de gestionar dnsmasq, este rol es capaz de gestionar el archivo /etc/resolv.conf
definiendo dnsmasq_resolvconf: true
y los parámetros dnsmasq_host_*
.
Autor
José Riguera López jriguera@gmail.com
Install and setup Dnsmasq server on RedHat/Debian based distributions
ansible-galaxy install jriguera.dnsmasq