jriguera.dnsmasq
ansible-role-dnsmasq
Eine vielseitige Rolle zur Einrichtung von dnsmasq, entworfen nach dieser Philosophie:
https://github.com/jriguera/ansible-role-pattern/blob/master/README.md
Diese Rolle unterstützt die Definition verschiedener Schnittstellen für verschiedene Zwecke (dns, tftp ...) und viele dnsmasq-Parameter. Außerdem kann sie die Datei resolv.conf verwalten.
Ansible 2.0, funktioniert mit Ubuntu Trusty, Xenial und CentOS 7
Konfiguration
Standardkonfigurationsparameter sind:
dnsmasq_enabled_on_startup: True
# Verwalte resolvconf
dnsmasq_resolvconf: False
# Installiere aus Upstream-Repositories oder direkt aus Betriebssystempaketen
dnsmasq_os_packages: True
# Globale Parameter, Einstellungen sind erforderlich! Andernfalls werden sie ignoriert!
dnsmasq_dhcp: True
dnsmasq_tftp: True
### resolv.conf
#dnsmasq_host_domain: local
#dnsmasq_host_search: local
dnsmasq_host_resolvers: [ "127.0.0.1" ]
# Lege die Facility fest, an die dnsmasq syslog-Einträge sendet; dies ist standardmäßig
# DAEMON und auf LOCAL0, wenn der Debug-Modus aktiv ist. Wenn die angegebene Facility
# mindestens ein '/'-Zeichen enthält, wird sie als Datei interpretiert, in die dnsmasq
# anstelle von syslog protokolliert. Wenn die Facility '-' ist, protokolliert dnsmasq
# auf stderr.
dnsmasq_conf_log: /var/log/dnsmasq.log
# Aktiviere asynchrones Logging und optional die Limite für die Anzahl der
# Zeilen, die von dnsmasq in der Warteschlange gehalten werden, wenn das Schreiben in den
# syslog langsam ist.
#dnsmasq_conf_log_async:
dnsmasq_conf_log_dns: False
# Liste von IP-Adressen oder Schnittstellen, die gehört werden sollen (leere Liste für alle)
dnsmasq_conf_listen: []
# Auf Systemen, die es unterstützen, bindet dnsmasq die Wildcard-Adresse,
# auch wenn es nur auf einigen Schnittstellen lauscht. Anfragen, auf die
# nicht geantwortet werden sollte, werden dann verworfen. Das hat den Vorteil,
# dass es funktioniert, auch wenn Schnittstellen kommen und gehen und sich die Adressen ändern.
dnsmasq_conf_bind_interfaces: 'dynamic'
### DNS
# Akzeptiere DNS-Abfragen nur von Hosts, deren Adresse sich im lokalen Subnetz befindet,
# d.h. ein Subnetz, für das eine Schnittstelle auf dem Server vorhanden ist.
#dnsmasq_conf_local_service: True
# Leite niemals einfache Namen (ohne Punkt oder Domain-Teil) weiter
dnsmasq_conf_domain_needed: True
# Aktiviere Code zur Erkennung von DNS-Weiterleitungsschleifen; d.h. die Situation,
# in der eine Abfrage an einen der Upstream-Server schließlich als neue Abfrage
# an die dnsmasq-Instanz zurückgegeben wird.
#dnsmasq_conf_dns_loop_detect: True
# Alle Rückwärtsabfragen für private IP-Bereiche (d.h. 192.168.x.x usw.), die
# nicht in /etc/hosts oder der DHCP-Leasdatei gefunden werden, werden mit
# "no such domain" beantwortet, anstatt nach oben weitergeleitet zu werden.
# Niemals Adressen in den nicht gerouteten Adressräumen weiterleiten.
dnsmasq_conf_bogus_priv: True
# Wenn du nicht möchtest, dass dnsmasq /etc/hosts liest, entkommentiere die
# folgende Zeile.
dnsmasq_conf_no_hosts: False
# Zusätzliche Hosts-Datei, Format /etc/hosts (das ist eine Liste!)
#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: []
# Setze hier die Größe des DNS-Speicherzwischens.
cache-size: 1024
# Deaktiviere negatives Caching. Negatives Caching ermöglicht es dnsmasq,
# "no such domain"-Antworten von Upstream-Namensservern zu speichern und identische
# Abfragen zu beantworten, ohne sie erneut weiterzuleiten.
# Negative Antworten von Upstream-Servern enthalten normalerweise Informationen zur
# verbleibenden Zeit in SOA-Datensätzen, die dnsmasq zum Caching verwendet. Wenn dieser Parameter
# nicht definiert ist: "no-negcache".
dnsmasq_conf_negcache: 5
# Dieses Flag zwingt dnsmasq, jede Abfrage strikt in der Reihenfolge,
# wie sie in /etc/resolv.conf erscheinen, mit jedem Server zu versuchen.
dnsmasq_conf_strict_order: False
# Dieses Flag zwingt dnsmasq, alle Abfragen an alle verfügbaren Server zu senden.
# Die Antwort vom Server, der zuerst antwortet, wird an den ursprünglichen Anfrager zurückgegeben.
dnsmasq_conf_all_servers: False
# Wenn du möchtest, dass dnsmasq "/etc/resolv.conf" oder eine andere Datei liest.
# Leer oder nicht definiert, um das Lesen von resolv.conf zu deaktivieren
dnsmasq_conf_resolv: /etc/resolv.conf
# Überwache /etc/resolv.conf nicht auf Änderungen.
dnsmasq_conf_no_poll: False
# Wenn dnsmasq_conf_no_poll False ist, wird /etc/resolv.conf neu gelesen oder die
# Upstream-Server werden über DBus gesetzt, lösche den DNS-Cache.
dnsmasq_conf_clear_on_reload: True
# Gib die IP-Adresse von Upstream-Servern direkt an. Diese Option unterdrückt nicht
# das Lesen von /etc/resolv.conf: ['localnet', '192.168.0.1']
# Beispiel für die Weiterleitung von PTR-Abfragen an Namensserver: dies sendet alle:
# adresse->name-Abfragen für 192.168.3/24 zu Namensserver 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" ]
# Gib einen MX-Eintrag zurück, der auf sich selbst für alle lokalen Maschinen zeigt: '_self'
# MX-Eintrag, der auf den dnsmasq-Server für alle lokalen Maschinen zeigt: '_local' oder ''
# MX-Eintrag, der auf "servername" für alle lokalen Maschinen zeigt: 'servername'
# Gib einen MX-Eintrag namens "maildomain.com" mit Ziel
# "servername" und Priorität 50 zurück: [maildomain.com, servername, 50]
#dnsmasq_conf_mx: servername
#dnsmasq_conf_mx_domain: {{ hostvars['k4.ww.mens.de'].
#dnsmasq_conf_mx_pref: 1
# Füge A-, AAAA- und PTR-Einträge zum DNS hinzu. Dies fügt einen oder mehrere Namen zum
# DNS mit zugehörigen IPv4 (A) und IPv6 (AAAA) Einträgen hinzu.
#dnsmasq_conf_host_records:
# -[]
# Definiere eine DNS-Zone, für die dnsmasq als autorisierter Server agiert.
#dnsmasq_conf_auth_zone: []
### DHCP
# Protokolliere viele zusätzliche Informationen über DHCP-Transaktionen.
dnsmasq_conf_log_dhcp: False
# Setze die Domain für dnsmasq. Dies ist optional, aber wenn sie gesetzt ist,
# macht es Folgendes.
# 1) Erlaubt DHCP-Hosts, vollständig qualifizierte Domainnamen zu haben, solange
# der Domainteil mit dieser Einstellung übereinstimmt.
# 2) Setzt die "domain" DHCP-Option und setzt damit potenziell die
# Domain aller per DHCP konfigurierten Systeme
# 3) Bietet den Domainteil für "expand-hosts"
# Wenn die Domain als "#" angegeben wird, wird die Domain aus der ersten
# "search"-Direktive in /etc/resolv.conf gelesen.
dnsmasq_conf_domain: '#'
# Nur wenn dnsmasq_conf_domain gesetzt ist, wird der unqualifizierte Name nicht länger
# im DNS gespeichert, nur der qualifizierte Name.
dnsmasq_conf_dhcp_fqdn: True
# Sollte gesetzt werden, wenn dnsmasq definitiv der einzige DHCP-Server in einem Netzwerk ist.
dnsmasq_conf_dhcp_authoritative: True
# Dnsmasq ist so konzipiert, dass es IP-Adressen für DHCP-Clients mithilfe eines Hashs
# der MAC-Adresse des Clients wählt.
dnsmasq_conf_dhcp_sequential_ip: True
# Deaktiviere die Wiederverwendung der DHCP-Servernamen- und Dateinamenfelder als zusätzlichen
# Optionsraum.
dnsmasq_conf_dhcp_no_override: True
# Entkommentiere dies, um den integrierten DHCP-Server zu aktivieren, du musst
# den Bereich der verfügbaren Adressen angeben und optional
# eine Leasingzeit. Wenn du mehr als ein Netzwerk hast, musst du
# das für jedes Netzwerk wiederholen, in dem du DHCP
# bereitstellen möchtest.
#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
# Lese DHCP-Hostinformationen aus der Liste oder aus einer angegebenen lokalen Datei
#dnsmasq_conf_dhcp_hosts: []
# Völlig unterdrücke die Verwendung der Lease-Datenbankdatei. Die Datei wird nicht
# erstellt, gelesen oder geschrieben.
dnsmasq_conf_dhcp_leasefile_ro: False
# Jedes Mal, wenn ein neuer DHCP-Lease erstellt wird, ein alter gelöscht wird oder ein TFTP-Datei
# Übertragung abgeschlossen ist, wird das durch diese Option angegebene ausführbare Programm ausgeführt.
#dnsmasq_conf_dhcp_script: files/program.bin
### TFTP
# Aktiviere den sicheren TFTP-Modus: Ohne dies ist jede Datei, die vom
# dnsmasq-Prozess unter normalen Unix-Zugriffskontrollregeln lesbar ist, über TFTP verfügbar.
dnsmasq_conf_tftp_secure: False
# Konvertiere Dateinamen in TFTP-Anfragen in Kleinbuchstaben. Dies ist nützlich für
# Anfragen von Windows-Maschinen.
dnsmasq_conf_tftp_lowercase: True
# Setze die maximale Anzahl gleichzeitiger TFTP-Verbindungen.
dnsmasq_conf_tftp_max: 50
# Verhindere, dass der TFTP-Server die Option "blocksize" mit einem Client verhandelt.
dnsmasq_conf_tftp_no_blocksize: False
Du kannst diese Standardparameter als Rollenvariablen überschreiben. Sieh dir das Beispiel in site.yml
mit Vagrant an und teste es mit vagrant up
.
Neben der Verwaltung von dnsmasq ist diese Rolle auch in der Lage, die Datei /etc/resolv.conf
zu verwalten, indem die Parameter dnsmasq_resolvconf: true
und dnsmasq_host_*
definiert werden.
Autor
José Riguera López jriguera@gmail.com
Install and setup Dnsmasq server on RedHat/Debian based distributions
ansible-galaxy install jriguera.dnsmasq