dnsmasq Man page

Resume Wikipedia de Dnsmasq

Dnsmasq est un serveur léger pour fournir les services DNS, DHCP, Bootstrap Protocol et TFTP pour un petit réseau, voire pour un poste de travail. Il permet d’offrir un service de nommage des machines du réseau interne non intégrées au service de nommage global (i.e. le service DNS d’Internet). Le service de nommage est associé au service d’adressage de telle manière que les machines dont le bail DHCP est fourni par Dnsmasq peuvent avoir automatiquement un nom DNS sur le réseau interne. Le logiciel offre un service DHCP statique ou dynamique.

Resume Wikipedia de Dnsmasq

Dnsmasq est un serveur léger pour fournir les services DNS, DHCP, Bootstrap Protocol et TFTP pour un petit réseau, voire pour un poste de travail. Il permet d’offrir un service de nommage des machines du réseau interne non intégrées au service de nommage global (i.e. le service DNS d’Internet). Le service de nommage est associé au service d’adressage de telle manière que les machines dont le bail DHCP est fourni par Dnsmasq peuvent avoir automatiquement un nom DNS sur le réseau interne. Le logiciel offre un service DHCP statique ou dynamique.

DNSMASQ(8) System Manager’s Manual DNSMASQ(8)

NAME

Dnsmasq – Un serveur DHCP et cache DNS poids-plume.

SYNOPSIS

dnsmasq [OPTION]…

DESCRIPTION

dnsmasq est un serveur à faible empreinte mémoire faisant DNS, TFTP,
PXE, annonces de routeurs et DHCP. Il offre à la fois les services DNS
et DHCP pour un réseau local (LAN).

Dnsmasq accepte les requêtes DNS et y réponds soit en utilisant un
petit cache local, soit en effectuant une requête à un serveur DNS
récursif externe (par exemple celui de votre fournisseur d’accès inter‐
net). Il charge le contenu du fichier /etc/hosts afin que les noms
locaux n’apparaissant pas dans les DNS globaux soient tout de même
résolus, et assure également la résolution de nom pour les hôtes pré‐
sents dans le service DHCP. Il peut aussi agir en temps que serveur DNS
faisant autorité pour un ou plusieurs domaines, permettant à des noms
locaux d’apparaitre dans le DNS global.

Le serveur DHCP Dnsmasq DHCP supporte les définitions d’adresses sta‐
tiques et les réseaux multiples. Il fournit par défaut un jeu raison‐
nable de paramètres DHCP, et peut être configuré pour fournir n’importe
quelle option DHCP. Il inclut un serveur TFTP sécurisé en lecture seule
permettant le démarrage via le réseau/PXE de clients DHCP et supporte
également le protocole BOOTP. Le support PXE est complet, et comprend
un mode proxy permettant de fournir des informations PXE aux clients
alors que l’allocation DHCP est effectuée par un autre serveur.

Le serveur DHCPv6 de dnsmasq possède non seulement les mêmes fonctiona‐
lités que le serveur DHCPv4, mais aussi le support des annonces de rou‐
teurs ainsi qu’une fonctionalité permettant l’addition de ressources
AAAA pour des clients utilisant DHCPv4 et la configuration IPv6 sans
état (stateless autoconfiguration). Il inclut le support d’allocations
d’adresses (à la fois en DHCPv6 et en annonces de routeurs – RA) pour
des sous-réseaux dynamiquement délégués via une délégation de préfixe
DHCPv6.

Dnsmasq est developpé pour de petits systèmes embarqués. It tends à
avoir l’empreinte mémoire la plus faible possible pour les fonctions
supportées, et permet d’exclure les fonctions inutiles du binaire com‐
pilé.

OPTIONS

Notes : Il est possible d’utiliser des options sans leur donner de
paramètre. Dans ce cas, la fonction correspondante sera désactivée. Par
exemple –pid-file= (sans paramètre après le =) désactive l’écriture du
fichier PID. Sur BSD, à moins que le logiciel ne soit compilé avec la
bibliothèque GNU getopt, la forme longue des options ne fonctionne pas
en ligne de commande; Elle est toujours supportée dans le fichier de
configuration.

–test Vérifie la syntaxe du ou des fichiers de configurations. Se ter‐
mine avec le code de retour 0 si tout est OK, ou un code diffé‐
rent de 0 dans le cas contraire. Ne démarre pas Dnsmasq.

-h, –no-hosts
Ne pas charger les noms du fichier /etc/hosts.

-H, –addn-hosts=
Fichiers d’hôtes additionnels. Lire le fichier spécifié en plus
de /etc/hosts. Si -h est spécifié, lire uniquement le fichier
spécifié. Cette option peut être répétée afin d’ajouter d’autres
fichiers. Si un répertoire est donné, lis les fichiers contenus
dans ce répertoire.

-E, –expand-hosts
Ajoute le nom de domaine aux noms simples (ne contenant pas de
point dans le nom) contenus dans le fichier /etc/hosts, de la
même façon que pour le service DHCP. Notez que cela ne
s’applique pas au nom de domaine dans les CNAME, les enregistre‐
ments PTR, TXT, etc…

-T, –local-ttl=
Lorsque Dnsmasq répond avec une information provenant du fichier
/etc/hosts ou avec un bail DHCP, il donne un temps de vie (time-
to-live) positionné à zéro, afin d’indiquer à la machine faisant
la requête que celle-ci ne doit pas être mise dans un cache.
Ceci est le comportement correct dans presque toutes les situa‐
tions. Cette option permet de spécifier la valeur de time-to-
live à retourner (en secondes). Cela permet de réduire la charge
sur le serveur, mais les clients risquent d’utiliser des données
périmées dans certains cas.

–neg-ttl=
Les réponses négatives provenant des serveurs amonts contiennent
normalement une information de durée de vie (time-to-live) dans
les enregistrements SOA, information dont dnsmasq se sert pour
mettre la réponse en cache. Si la réponse du serveur amont omet
cette information, dnsmasq ne cache pas la réponse. Cette option
permet de doner une valeur de durée de vie par défaut (en
secondes) que dnsmasq utilise pour mettre les réponses négatives
dans son cache, même en l’absence d’enregistrement SOA.

–max-ttl=
Définie la valeur de TTL maximum qui sera fournie aux clients.
La valeur maximum de TTL spécifiée sera fournie aux clients en
remplacement de la vraie valeur de TTL si cette dernière est
supérieure. La valeur réelle de TTL est cependant conservée dans
le cache afin d’éviter de saturer les serveurs DNS en amont.

–max-cache-ttl=
Définie la valeur de TTL maximum pour les entrées dans le cache

–auth-ttl=
Définie la valeur de TTL retournée pour les réponses du serveur
faisant autorité.

-k, –keep-in-foreground
Ne pas aller en tâche de fond au lancement, mais en dehors de
cela, fonctionner normalement. Ce mode est prévu pour les cas où
Dnsmasq est lancé par daemontools ou launchd.

-d, –no-daemon
Mode debug (déverminage) : ne pas aller en tâche de fond, ne pas
écrire de fichier pid, ne pas changer d’identifiant utilisateur,
générer un état complet du cache lors de la réception d’un
signal SIGUSR1, envoyer les logs sur la sortie standard d’erreur
(“stderr”) de même que dans le syslog, ne pas créer de processus
fils pour traiter les requêtes TCP. A noter que cette option est
à user pour du déverminage seulement : pour empêcher dnsmasq se
fonctionner en mode démon en production, utiliser -k.

-q, –log-queries
Enregistrer les résultats des requêtes DNS traitées par Dnsmasq
dans un fichier de traces (“logs”). Active la génération d’un
état complet du cache lors de la réception d’un signal SIGUSR1.

-8, –log-facility=
Définit la “facility” dans laquelle Dnsmasq enverra ses entrées
syslog, par défaut DAEMON ou LOCAL0 si le mode debug est activé.
Si la “facility” contient au moins un caractère “/”, alors Dns‐
masq considère qu’il s’agit d’un fichier et enverra les logs
dans le fichier correspondant à la place du syslog. Si la “faci‐
lity” est ‘-‘, alors dnsmasq envoie les logs sur la sortie
d’erreur standard stderr. (Les erreurs lors de la lecture de la
configuration vont toujours vers le syslog, mais tous les mes‐
sages postérieurs à un démarrage réussi seront exclusivement
envoyés vers le fichier de logs). Lorsque Dnsmasq est configuré
pour envoyer ses traces vers un fichier, la réception d’un
signal SIGUSR2 entraine la fermeture et réouverture du fichier.
Cela permet la rotation de fichiers de traces sans nécessiter
l’arrêt de Dnsmasq.

–log-async[=] Permet l’envoi de traces de manière asynchrone, et de manière
optionnelle, le nombre de lignes devant être mises dans la file
d’attente par Dnsmasq lorsque l’écriture vers le syslog est
lente. Dnsmasq peut envoyer ses logs de manière asynchrone :
cela lui permet de continuer à fonctionner sans être bloqué par
le syslog, et permet à syslog d’utiliser Dnsmasq pour les réso‐
lutions DNS sans risque d’interblocage. Si la file d’attente
devient pleine, Dnsmasq loggera le dépassement de file et le
nombre de messages perdus. La longueur par défaut de la file
d’attente est de 5 et une valeur saine sera comprise entre 5 et
25, avec une limite maximum imposée de 100.

-x, –pid-file=
Spécifie un fichier dans lequel stocker le numéro de processus
(pid). La valeur par défaut est /var/run/dnsmasq.pid.

-u, –user=
Spécifie l’identité (nom d’utilisateur) prise par Dnsmasq après
le démarrage. Dnsmasq doit normalement être démarré en temps que
root (“super-utilisateur”), mais abandonne ses privilèges après
le démarrage en changeant d’identité. Normalement cet utilisa‐
teur est l’utilisateur nobody (“personne”), mais il est possible
d’en définir un autre par le biais de ce paramètre.

-g, –group=
Spécifie le groupe sous lequel Dnsmasq s’exécute. Par défaut, il
s’agit du groupe “dip”, afin de faciliter l’accès au fichier
/etc/ppp/resolv.conf qui n’est en général pas en lecture par
tout le monde.

-v, –version
Imprime le numéro de version.

-p, –port= Ecoute sur le port numéro au lieu du port DNS standard
(53). Paramétrer cette valeur à zéro désactive complètement la
fonction DNS pour ne laisser actif que le DHCP ou le TFTP.

-P, –edns-packet-max=
Spécifie la taille maximum de paquet UDP EDNS.0 supporté par le
relai DNS. Le défaut est de 4096, qui est la valeur recommandée
dans la RFC5625.

-Q, –query-port=
Envoie et écoute les requêtes DNS sortantes depuis le port UDP
spécifié par , et non sur un port aléatoire.
NOTE : Cette option rends dnsmasq moins sûr contre les attaques
par usurpation DNS (“DNS spoofing”), mais cela peut permettre
d’utiliser moins de ressources et d’être plus rapide. Donner une
valeur de zéro à cette option restaure le comportement par
défaut présent dans les versions de dnsmasq inférieures à 2.43
qui consiste à n’allouer qu’un seul port alloué par le système
d’exploitation.

–min-port= Ne pas utiliser de port dont le numéro est inférieur à la valeur
donnée en paramètre pour les requêtes DNS sortantes. Dnsmasq
choisis un port source aléatoire pour les requêtes sortantes :
lorsque cette option est fournie, les ports utilisés seront tou‐
jours au dessus de la valeur spécifiée. Utile pour des systèmes
derrière des dispositifs garde-barrières (“firewalls”).

-i, –interface=
N’écouter que sur l’interface réseau spécifiée. Dnsmasq aujoute
automatiquement l’interface locale (“loopback”) à la liste des
interfaces lorsque l’option –interface est utilisée. Si aucune
option –interface ou –listen-address n’est donnée, Dnsmasq
écoutera sur toutes les interfaces disponibles sauf celle(s)
spécifiée(s) par l’option –except-interface. Les alias d’inter‐
faces IP (e-g “eth1:0”) ne peuvent être utilisés ni avec
–interface ni –except-interface. Utiliser l’option –listen-
address à la place. Un simple joker, consistant d’un ‘*’ final,
peut-être utilisé dans les options –interface et –except-
interface

-I, –except-interface=
Ne pas écouter sur l’interface spécifiée. Notez que l’ordre dans
lesquelles les options –listen-address , –interface et
–except-interface sont fournies n’importe pas, et que l’option
–except-interface l’emporte toujours sur les autres.

–auth-server=,| Active le mode DNS faisant autorité pour les requêtes arrivant
sur cette interface ou sur cette adresse. Noter que l’interface
ou l’adresse n’ont pas besoin d’être mentionées ni dans –inter‐
face ni dans –listen-address En effet, –auth-server va passer
outre ceux-ci et fournir un service DNS différent sur l’inter‐
face spécifiée. La valeur de est l’enregistrement de
type “colle” (“glue record”). Il doit correspondre dans le ser‐
vice DNS global avec un enregistrement de type A et/ou AAAA
pointant sur l’adresse sur laquelle dnsmasq écoute pour le mode
DNS faisant autorité.

-2, –no-dhcp-interface=
Ne pas fournir de service DHCP sur l’interface spécifiée, mais
fournir tout de même le service DNS.

-a, –listen-address=
Ecouter sur la ou les adresse(s) IP spécifiée(s). Les options
–interface et –listen-address peuvent-être spécifiées simulta‐
nément, auquel cas un jeu d’interfaces et d’adresses seront uti‐
lisées. Notez que si aucune option –interface n’est donnée
alors qu’une option –listen-address l’est, Dnsmasq n’écoutera
pas automatiquement sur l’interface locale (“loopback”). Pour
activer l’écoute sur l’interface locale, il est alors nécessaire
de fournir explicitement son adresse IP, 127.0.0.1 via l’option
–listen-address.

-z, –bind-interfaces
Sur les systèmes qui le supporte, Dnsmasq s’associe avec
l’interface joker (“wildcard”), même lorsqu’il ne doit écouter
que sur certaines interfaces. Par la suite, il rejette les
requêtes auxquelles il ne doit pas répondre. Cette situation
présente l’avantage de fonctionner même lorsque les interfaces
vont et viennent ou changent d’adresses. L’option –bind-inter‐
faces force Dnsmasq à ne réellement s’associer qu’avec les
interfaces sur lesquelles il doit écouter. L’un des seuls cas où
cette option est utile est celui où un autre serveur de nom (ou
une autre instance de Dnsmasq) tourne sur la même machine. Uti‐
liser cette option permet également d’avoir plusieurs instances
de Dnsmasq fournissant un service DHCP sur la même machine.

–bind-dynamic
Autorise un mode réseau intermédiaire entre –bind-interfaces et
le mode par défaut. Dnsmasq s’associe à une seule interface, ce
qui permet plusieurs instances de dnsmasq, mais si une interface
ou adresse apparaissent, il se mettra automatiquement à écouter
sur celles-ci (les règles de contrôle d’accès s’appliquent). De
fait, les interfaces créées dynamiquement fonctionnent de la
même façon que dans le comportement par défaut. Ce fonctionne‐
ment nécessite des APIs réseau non standard et n’est disponible
que sous Linux. Sur les autres plateformes, le fonctionnement
est celui du mode –bind-interfaces.

-y, –localise-queries
Retourne des réponses aux requêtes DNS dépendantes de l’inter‐
face sur laquelle la requête a été reçue, à partir du fichier
/etc/hosts. Si un nom dans /etc/hosts a plus d’une adresse asso‐
ciée avec lui, et qu’une des adresses au moins est dans le même
sous-réseau que l’interface sur laquelle la requête a été reçue,
alors ne retourne que la(les) adresse(s) du sous-réseau consi‐
déré. Cela permet d’avoir dans /etc/hosts un serveur avec de
multiples adresses, une pour chacune de ses interfaces, et de
fournir aux hôtes l’adresse correcte (basée sur le réseau auquel
ils sont attachés). Cette possibilité est actuellement limitée à
IPv4.

-b, –bogus-priv
Fausse résolution inverse pour les réseaux privés. Toutes les
requêtes DNS inverses pour des adresses IP privées (ie
192.168.x.x, etc…) qui ne sont pas trouvées dans /etc/hosts ou
dans le fichier de baux DHCP se voient retournées une réponse
“pas de tel domaine” (“no such domain”) au lieu d’être trans‐
mises aux serveurs de nom amont (“upstream server”).

-V, –alias=[]|[],[,] Modifie les adresses IPv4 retournées par les serveurs de nom
amont; est remplacée par . Si le
optionnel est fourni, alors toute adresse correspondant
à l’adresse / sera réécrite. Ainsi par
exemple –alias=1.2.3.0,6.7.8.0,255.255.255.0 modifiera 1.2.3.56
en 6.7.8.56 et 1.2.3.67 en 6.7.8.67. Cette fonctionnalité cor‐
respond à ce que les routeurs Cisco PIX appellent “bidouillage
DNS” (“DNS doctoring”). Si l’ancienne IP est donnée sous la
forme d’une gamme d’adresses, alors seules les adresses dans
cette gamme seront réecrites, et non le sous-réseau dans son
ensemble. Ainsi,
–alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0 fait
correspondre 192.168.0.10->192.168.0.40 à 10.0.0.10->10.0.0.40

-B, –bogus-nxdomain=
Transforme les réponses contenant l’adresse IP fournie en
réponses “pas de tel domaine” (“no such domain”). Ceci a pour
but de neutraliser la modification sournoise mise en place par
Verisign en septembre 2003, lorsqu’ils ont commencé à retourner
l’adresse d’un serveur web publicitaire en réponse aux requêtes
pour les noms de domaines non enregistrés, au lieu de la réponse
correcte “NXDOMAIN”. Cette option demande à Dnsmasq de retourner
la réponse correcte lorsqu’il constate ce comportement.
L’adresse retournée par Verisign en septembre 2003 est
64.94.110.11.

-f, –filterwin2k
Les dernières versions de windows font des requêtes DNS pério‐
diques auxquelles non seulement les serveurs DNS publics ne
peuvent donner de réponse, mais qui, de surcroît, peuvent poser
des problèmes en déclenchant des connexions intempestives pour
des liens réseaux avec des connexions “à la demande”. Fournir
cette option active le filtrage des requêtes de ce type. Les
requêtes bloquées sont les requêtes pour les entrées de type SOA
ou SRV, ainsi que les requêtes de type ANY avec des noms possé‐
dant des caractères sous-lignés (requêtes pour des serveurs
LDAP).

-r, –resolv-file=
Lis les adresses des serveurs de nom amont dans le fichier de
nom , au lieu du fichier /etc/resolv.conf. Pour le for‐
mat de ce fichier, voir dans le manuel pour resolv.conf(5) les
entrées correspondant aux serveurs de noms (nameserver). Dnsmasq
peut lire plusieurs fichiers de type resolv.conf, le premier
fichier spécifié remplace le fichier par défaut, le contenu des
suivants est rajouté dans la liste des fichiers à consulter.
Seul le fichier ayant la dernière date de modification sera
chargé en mémoire.

-R, –no-resolv
Ne pas lire le contenu du fichier /etc/resolv.conf. N’obtenir
l’adresse des serveurs de nom amont que depuis la ligne de com‐
mande ou le fichier de configuration de Dnsmasq.

-1, –enable-dbus[=] Autoriser la mise à jour de la configuration de Dnsmasq par le
biais d’appel de méthodes DBus. Il est possible par ce biais de
mettre à jour l’adresse de serveurs DNS amont (et les domaines
correspondants) et de vider le cache. Cette option nécessite que
Dnsmasq soit compilé avec le support DBus. Si un nom de service
est fourni, dnsmasq fourni un service à ce nom, plutôt qu’avec
la valeur par défaut : uk.org.thekelleys.dnsmasq

-o, –strict-order
Par défaut, Dnsmasq envoie les requêtes à n’importe lequel des
serveurs amonts dont il a connaissance tout en essayant de favo‐
riser les serveurs qu’il sait fonctionner. Cette option force
Dnsmasq à essayer d’interroger, pour chaque requête, les ser‐
veurs DNS dans leur ordre d’apparition dans le fichier
/etc/resolv.conf.

–all-servers
Par défaut, lorsque dnsmasq a plus d’un serveur amont dispo‐
nible, il n’envoie les requêtes qu’à un seul serveur. Spécifier
cette option force dnsmasq à effectuer ses requêtes à tous les
serveurs disponibles. Le résultat renvoyé au client sera celui
fournit par le premier serveur ayant répondu.

–stop-dns-rebind
Rejete (et enregistre dans le journal d’activité) les adresses
dans la gamme d’adresses IP privée (au sens RFC1918) qui pour‐
raient être renvoyées par les serveurs amonts suite à une réso‐
lution de nom. Cela bloque les attaques cherchant à détourner de
leur usage les logiciels de navigation web (‘browser’) en s’en
servant pour découvrir les machines situées sur le réseau local.

–rebind-localhost-ok
Exclue 127.0.0/8 des vérifications de réassociation DNS. Cette
gamme d’adresses est retournée par les serveurs Realtime Black‐
hole (RBL, utilisés dans la lutte contre le spam), la bloquer
peut entraîner des disfonctionnements de ces services.

–rebind-domain-ok=[]|[[//[/] Ne pas détecter ni bloquer les actions de type dns-rebind pour
ces domaines. Cette option peut prendre comme valeur soit un nom
de domaine soit plusieurs noms de domains entourés par des ‘/’,
selon une syntaxe similaire à l’option –server, c-à-d :
–rebind-domain-ok=/domaine1/domaine2/domaine3/

-n, –no-poll
Ne pas vérifier régulièrement si le fichier /etc/resolv.conf a
été modifié.

–clear-on-reload
Lorsque le fichier /etc/resolv.conf est relu, ou si les serveurs
amonts sont configurés via DBus, vider le cache DNS. Cela est
utile si les nouveaux serveurs sont susceptibles d’avoir des
données différentes de celles stockées dans le cache.

-D, –domain-needed
Indique à Dnsmasq de ne jamais transmettre en amont de requêtes
A ou AAAA pour des noms simples, c’est à dire ne comprenant ni
points ni nom de domaine. Si un nom n’est pas dans /etc/hosts ou
dans la liste des baux DHCP, alors une réponse de type “non
trouvé” est renvoyée.

-S, –local, –server=[/[]/[domaine/]][[#][@|[#]]] Spécifie directement l’adresse IP d’un serveur de nom amont.
Cette option ne supprime pas la lecture du fichier
/etc/resolv.conf : utiliser pour cela l’option -R . Si un ou
plusieurs nom(s) de domaine(s) optionnel(s) sont fournis, ce
serveur sera uniquement utilisé uniquement pour ce(s)
domaine(s), et toute requête concernant ce(s) domaine(s) sera
adressée uniquement à ce serveur. Cette option est destinée aux
serveurs de nom privés : si vous avez un serveur de nom sur
votre réseau ayant pour adresse IP 192.168.1.1 et effectuant la
résolution des noms de la forme xxx.internal.thekelleys.org.uk,
alors -S /internal.thekelleys.org.uk/192.168.1.1 enverra toutes
les requêtes pour les machines internes vers ce serveur de nom,
alors que toutes les autres requêtes seront adressées aux ser‐
veurs indiqués dans le fichier /etc/resolv.conf. Une spécifica‐
tion de nom de domaine vide, // possède le sens particulier de
“pour les noms non qualifiés uniquement”, c’est-à-dire les noms
ne possédant pas de points. Un port non standard peut être
rajouté à la suite des adresses IP en utilisant le caractère #.
Plus d’une option -S est autorisée, en répétant les domaines et
adresses IP comme requis.

Le domaine le plus spécifique l’emporte sur le domaine le moins
spécifique, ainsi : –server=/google.com/1.2.3.4 –ser‐
ver=/www.google.com/2.3.4.5 enverra les requêtes pour
*.google.com à 1.2.3.4, à l’exception des requêtes
*www.google.com, qui seront envoyées à 2.3.4.5.

L’adresse spéciale ‘#’ signifie “utiliser les serveurs stan‐
dards”, ainsi –server=/google.com/1.2.3.4 –ser‐
ver=/www.google.com/# enverra les requêtes pour *.google.com à
1.2.3.4, à l’exception des requêtes pour *www.google.com qui
seront envoyées comme d’habitude (c-à-d aux serveurs définis par
défaut).

Il est également permis de donner une option -S avec un nom de
domaine mais sans adresse IP; Cela informe Dnsmasq que le
domaine est local et qu’il doit répondre aux requêtes le concer‐
nant depuis les entrées contenues dans le fichier /etc/hosts ou
les baux DHCP, et ne doit en aucun cas transmettre les requêtes
aux serveurs amonts. local est synonyme de server (“serveur”)
afin de rendre plus claire l’utilisation de cette option pour
cet usage particulier.

Les adresses IPv6 peuvent inclure un identifiant de zone sous la
forme %interface tel que par exemple
fe80::202:a412:4512:7bbf%eth0.

La chaîne de caractères optionnelle suivant le caractère @ per‐
met de définir la source que Dnsmasq doit utiliser pour les
réponses à ce serveur de nom. Il doit s’agir d’une des adresses
IP appartenant à la machine sur laquelle tourne Dnsmasq ou sinon
la ligne sera ignorée et une erreur sera consignée dans le jour‐
nal des événements, ou alors d’un nom d’interface. Si un nom
d’interface est donné, alors les requêtes vers le serveur de nom
seront envoyées depuis cette interface; si une adresse ip est
donnée, alors l’adresse source de la requête sera l’adresse en
question. L’option query-port est ignorée pour tous les serveurs
ayant une adresse source spécifiée, mais il est possible de la
donner directement dans la spécification de l’adresse source.
Forcer les requêtes à être émises depuis une interface spéci‐
fique n’est pas possible sur toutes les plateformes supportées
par dnsmasq.

-A, –address=//[domaine/]
Spécifie une adresse IP à retourner pour toute requête pour les
domaines fournis en option. Les requêtes pour ce(s) domaine(s)
ne sont jamais transmises aux serveurs amonts et reçoivent comme
réponse l’adresse IP spécifiée qui peut être une adresse IPv4 ou
IPv6. Pour donner à la fois une adresse IPv4 et une adresse IPv6
pour un domaine, utiliser plusieurs options -A. Il faut noter
que le contenu du fichier /etc/hosts et de celui des baux DHCP
supplante ceci pour des noms individuels. Une utilisation cou‐
rante de cette option est de rediriger la totalité du domaine
doubleclick.net vers un serveur web local afin d’éviter les ban‐
nières publicitaires. La spécification de domaine fonctionne de
la même façon que –server, avec la caractéristique supplémen‐
taire que /#/ coïncide avec tout domaine. Ainsi,
–address=/#/1.2.3.4 retournera 1.2.3.4 pour toute requête
n’ayant de réponse ni dans /etc/hosts, ni dans les baux DHCP, et
n’étant pas transmise à un serveur spécifique par le biais d’une
directive –server.

–ipset=//[domaine/][,] Obtient les adresses IP des domaines spécifiés et les place dans
les groupes d’IP netfilter (ipset) indiqués. Domaines et sous-
domaines sont résolus de la même façon que pour –address. Ces
groupes d’IP doivent déjà exister. Voir ipset(8) pour plus de
détails.

-m, –mx-host=[[,],] Spécifie un enregistrement de type MX pour
retournant le nom donné dans (s’il est présent), ou
sinon le nom spécifié dans l’option –mx-target si elle est pré‐
sente. Sinon retourne le nom de la machine sur laquelle Dnsmasq
tourne. La valeur par défaut (spécifiée dans l’option –mx-tar‐
get ) est utile dans un réseau local pour rediriger les cour‐
riers électroniques vers un serveur central. La valeur de préfé‐
rence est optionnelle et vaut par défaut 1 si elle n’est pas
spécifiée. Plus d’une entrée MX peut être fournie pour un hôte
donné.

-t, –mx-target=
Spécifie la réponse par défaut fournie par Dnsmasq pour les
requêtes sur des enregistrements de type MX. Voir –mx-host. Si
–mx-target est donné mais pas de –mx-host, alors Dnsmasq
retourne comme réponse un enregistrement MX contenant le nom
d’hôte spécifié dans l’option –mx-target pour toute requête
concernant le MX de la machine sur laquelle tourne Dnsmasq.

-e, –selfmx
Définit, pour toutes les machines locales, un MX correspondant à
l’hôte considéré. Les machines locales sont celles définies dans
le fichier /etc/hosts ou dans un bail DHCP.

-L, –localmx
Définit, pour toutes les machines locales, un enregistrement MX
pointant sur l’hôte spécifié par mx-target (ou la machine sur
laquelle Dnsmasq tourne). Les machines locales sont celles défi‐
nies dans le fichier /etc/hosts ou dans un bail DHCP.

-W –srv-host=<_service>.<_proto‐ cole>.[],[[,[,[,]]]] Spécifie un enregistrement DNS de type SRV. Voir la RFC2782 pour
plus de détails. Si le champs n’est pas fourni, prends
par défaut la valeur fournie dans l’option –domain. La valeur
par défaut pour le domaine est vide et le port par défaut est 1,
alors que les poids et priorités par défaut sont 0. Attention
lorsque vous transposez des valeurs issues d’une configuration
BIND : les ports, poids et priorités sont dans un ordre diffé‐
rents. Pour un service/domaine donné, plus d’un enregistrement
SRV est autorisé et tous les enregistrements qui coïncident sont
retournés dans la réponse.

–host-record=[,….][],[] Ajoute des enregistrements A, AAAA et PTR dans le DNS. Ceci per‐
met d’ajouter un ou plusieurs noms dans le DNS et de les asso‐
cier à des enregistrements IPv4 (A) ou IPv6 (AAAA). Un nom peut
apparaître dans plus d’une entrée host-record et de fait être
associé à plus d’une adresse. Seule la première entrée créée
l’enregistrement PTR associée au nom. Ceci correspond à la même
règle que celle utilisée lors de la lecture du fichier hosts.
Les options host-record sont considérées lues avant le fichier
hosts, ainsi un nom apparaissant dans une option host-record et
dans le fichier hosts n’aura pas d’enregistrement PTR associé à
l’entrée dans le fichier hosts. A l’inverse du fichier hosts,
les noms ne sont pas étendus, même lorsque l’option expand-hosts
est activée. Les noms longs et les noms courts peuvent appa‐
raitre dans la même entrée host-record, c-à-d –host-record=lap‐
top,laptop.thekelleys.org,192.168.0.1,1234::100

-Y, –txt-record=[[,],] Définit un enregistrement DNS de type TXT. La valeur de l’enre‐
gistrement TXT est un ensemble de chaînes de caractères, donc un
nombre variable de chaînes de caractères peuvent être spéci‐
fiées, séparées par des virgules. Utilisez des guillemets pour
mettre une virgule dans une chaîne de caractères. Notez que la
longueur maximale pour une chaîne est de 255 caractères, les
chaînes plus longues étant découpées en morceaux de 255 carac‐
tères de longs.

–ptr-record=[,] Définit un enregistrement DNS de type PTR.

–naptr-record=,,,,,[,] Retourne un enregistrement de type NAPTR, tel que spécifié dans
le RFC3403.

–cname=,
Retourne un enregistrement de type CNAME qui indique que
est en réalité . Il existe des contraintes importantes
sur la valeur cible; il doit s’agir d’un nom DNS qui est connu
de dnsmasq via /etc/hosts (ou un fichier hôtes additionnel), via
DHCP, via interface–name ou par un autre –cname. Si une cible
ne satisfait pas ces critères, le CNAME est ignoré. Le C

NAME

doit être unique, mais il est autorisé d’avoir plus d’un C

NAME

pointant vers la même cible.

–dns-rr=,,[] Retourne un enregistrement DNS arbitraire. Le numéro correspond
au type d’enregistrement (qui est toujours de la classe C_IN).
La valeur de l’enregistrement est donnée dans les données hexa‐
décimales, qui peuvent être de la forme 01:23:45, 01 23
45,+012345 ou n’importe quelle combinaison.

–interface-name=,
Définit un entregistrement DNS associant le nom avec l’adresse
primaire sur l’interface donnée en argument. Cette option spéci‐
fie un enregistrement de type A pour le nom donné en argument de
la même façon que s’il était défini par une ligne de /etc/hosts,
sauf que l’adresse n’est pas constante mais dépendante de
l’interface définie. Si l’interface est inactive, non existante
ou non configurée, une réponse vide est fournie. Un enregistre‐
ment inverse (PTR) est également créé par cette option, asso‐
ciant l’adresse de l’interface avec le nom. Plus d’un nom peut
être associé à une interface donnée en répétant cette option
plusieurs fois; dans ce cas, l’enregistrement inverse pointe
vers le nom fourni dans la première instance de cette option.

–synth-domain=,[,] Créé des enregistrements A/AAAA ou PTR pour une plage
d’adresses. Les enregistrements utilisent l’adresse ainsi que
les points (ou les deux points dans le cas d’IPv6) remplacés par
des tirets.

Un exemple devrait rendre cela plus clair : La configuration
–synth-domain=thekelleys.org.uk,192.168.0.0/24,internal- permet
de retourner internal-192-168-0-56.thekelleys.org.uk lors d’une
requête sur l’adresse 192.168.0.56 et vice-versa pour la requête
inverse. La même logique s’applique pour IPv6, avec la particu‐
larité suivante : les adresses IPv6 pouvant commencer par ‘::’,
mais les noms DNS ne pouvant pas commencer par ‘-‘, si aucun
préfixe n’est donné, un zéro est ajouté en début de nom. Ainsi,
::1 devient 0–1.

La plage d’adresses peut-être de la forme , ou /

–add-mac
Ajoute l’adresse MAC du requêteur aux requêtes DNS transmises
aux serveurs amonts. Cela peut être utilisé dans un but de fil‐
trage DNS par les serveurs amonts. L’adresse MAC peut uniquement
être ajoutée si le requêteur est sur le même sous-réseau que le
serveur dnsmasq. Veuillez noter que le mécanisme utilisé pour
effectuer cela (une option EDNS0) n’est pas encore standardisée,
aussi cette fonctionalité doit être considérée comme expérimen‐
tale. Notez également qu’exposer les adresses MAC de la sorte
peut avoir des implications en termes de sécurité et de vie pri‐
vée. L’avertissement donné pour –add-subnet s’applique égale‐
ment ici.

–add-subnet[[=],] Rajoute l’adresse de sous-réseau du requêteur aux requêtes DNS
transmises aux serveurs amonts. La quantité d’adresses trans‐
mises dépend du paramètre longueur du préfixe : 32 (ou 128 dans
le cas d’IPv6) transmet la totalité de l’adresse, 0 n’en trans‐
met aucun mais marque néanmoins la requête ce qui fait qu’aucun
serveur amont ne rajoutera d’adresse client. La valeur par
défaut est zéro et pour IPv4 et pour IPv6. A noter que les ser‐
veurs amonts peuvent-être configurés pour retourner des valeurs
différentes en fonction de cette information mais que le cache
de dnsmasq n’en tient pas compte. Si une instance de dnsmasq est
configurée de telle maniêre que des valeurs différentes pour‐
raient-être rencontrés, alors le cache devrait être désactivé.

-c, –cache-size=
Définit la taille du cache de Dnsmasq. La valeur par défaut est
de 150 noms. Définir une valeur de zéro désactive le cache.

-N, –no-negcache
Désactive le “cache négatif”. Le “cache négatif” permet à Dns‐
masq de se souvenir des réponses de type “no such domain” four‐
nies par les serveurs DNS en amont et de fournir les réponses
sans avoir à re-transmettre les requêtes aux serveurs amont.

-0, –dns-forward-max=
Définit le nombre maximum de requêtes DNS simultanées. La valeur
par défaut est 150, ce qui devrait être suffisant dans la majo‐
rité des configurations. La seule situation identifiée dans
laquelle cette valeur nécessite d’être augmentée est lorsqu’un
serveur web a la résolution de nom activée pour l’enregistrement
de son journal des requêtes, ce qui peut générer un nombre
important de requêtes simultanées.

–proxy-dnssec
Un resolveur sur une machine cliente peut effectuer la valida‐
tion DNSSEC de deux façons : il peut effectuer lui-même les opé‐
rations de chiffrements sur la réponse reçue, ou il peut laisser
le serveur récursif amont faire la validation et positionner un
drapeau dans la réponse au cas où celle-ci est correcte. Dnsmasq
n’est pas un validateur DNSSEC, aussi il ne peut effectuer la
validation comme un serveur de nom récursif, cependant il peut
retransmettre les résultats de validation de ses serveurs
amonts. Cette option permet l’activation de cette fonctionalité.
Vous ne devriez utiliser cela que si vous faites confiance aux
serveurs amonts ainsi que le réseau entre vous et eux. Si vous
utilisez le premier mode DNSSEC, la validation par le resolveur
des clients, cette option n’est pas requise. Dnsmasq retourne
toujours toutes les données nécessaires par un client pour
effectuer la validation lui-même.

–auth-zone=[,[/][,[/]…..]] Définie une zone DNS pour laquelle dnsmasq agit en temps que
serveur faisant autorité. Les enregistrements DNS définis loca‐
lement et correspondant à ce domaine seront fournis. Les enre‐
gistrements A et AAAA doivent se situer dans l’un des sous-
réseaux définis, ou dans un réseau correspondant à une plage
DHCP (ce comportement peut-être désactivé par constructor-
noauth: ). Le ou les sous-réseaux sont également utilisé(s) pour
définir les domaines in-addr.arpa et ip6.arpa servant à l’inter‐
rogation DNS inverse. Si la longueur de préfixe n’est pas spéci‐
fiée, elle sera par défaut de 24 pour IPv4 et 64 pour IPv6. Dans
le cas d’IPv4, la longueur du masque de réseau devrait-être de
8, 16 ou 24, sauf si en cas de mise en place d’une délégation de
la zone in-addr.arpa conforme au RFC 2317.

–auth-soa=[,[,[,[,]]]] Spécifie les champs de l’enregistrement de type SOA (Start Of
Authority) associé à une zone pour laquelle le serveur fait
autorité. A noter que cela est optionnel, les valeurs par défaut
devant convenir à la majorité des cas.

–auth-sec-servers=[,[,…]] Spécifie un ou plusieurs serveur de nom secondaires pour une
zone pour laquelle dnsmasq fait autorité. Ces serveurs doivent-
être configurés pour récupérer auprès de dnsmasq les informa‐
tions liées à la zone au travers d’un transfert de zone, et
répondre aux requêtes pour toutes les zones pour lesquelles dns‐
masq fait autorité.

–auth-peer=[,[,…]] Spécifie la ou les adresses de serveurs secondaires autorisés à
initier des requêtes de transfert de zone (AXFR) pour les zones
pour lesquelles dnsmasq fait autorité. Si cette option n’est pas
fournie, les requêtes AXFR seront acceptées pour tous les ser‐
veurs secondaires.

–conntrack
Lis le marquage de suivi de connexion Linux associé aux requêtes
DNS entrantes et positionne la même marque au trafic amont uti‐
lisé pour répondre à ces requétes. Cela permet au trafic généré
par Dnsmasq d’étre associé aux requêtes l’ayant déclenché, ce
qui est pratique pour la gestion de la bande passante (accoun‐
ting) et le filtrage (firewall). Dnsmasq doit pour cela être
compilé avec le support conntrack, le noyau doit également
inclure conntrack et être configuré pour cela. Cette option ne
peut pas être combinée avec –query-port.

-F, –dhcp-range=[tag:

-F, –dhcp-range=[tag:

Active le serveur DHCP. Les adresses seront données dans la
plage comprise entre et et à
partir des adresses définies statiquement dans l’option dhcp-
host. Si une durée de bail est donnée, alors les baux seront
donnés pour cette durée. La durée de bail est donnée en
secondes, en minutes (exemple : 45m), en heures (exemple : 1h)
ou être la chaine de caractère “infinite” pour une durée indé‐
terminée. Si aucune valeur n’est donnée, une durée de bail par
défaut de une heure est appliquée. La valeur minimum pour un
bail DHCP est de 2 minutes.

Pour les plages IPv6, la durée de bail peut-être égale au mot-
clef “deprecated” (obsolète); Cela positionne la durée de vie
préférée envoyée dans les baux DHCP ou les annonces routeurs à
zéro, ce qui incite les clients à utiliser d’autres adresses
autant que possible, pour toute nouvelle connexion, en préalable
à la renumérotation.

Cette option peut être répétée, avec différentes adresses, pour
activer le service DHCP sur plus d’un réseau. Pour des réseaux
directement connectés (c’est-à-dire des réseaux dans lesquels la
machine sur laquelle tourne Dnsmasq possède une interface), le
masque de réseau est optionnel : Dnsmasq la déterminera à partir
de la configuration des interfaces.

Pour les réseaux pour lesquels le service DHCP se fait via un
relais DHCP (“relay agent”), Dnsmasq est incapable de déterminer
le masque par lui-même, aussi il doit être spécifié, faute de
quoi Dnsmasq essaiera de le deviner en fonction de la classe (A,
B ou C) de l’adresse réseau. L’adresse de broadcast est toujours
optionnelle.

Il est toujours possible d’avoir plus d’une plage DHCP pour un
même sous-réseau.

Pour IPv6, les paramètres sont légèrement différents : au lieu
d’un masque de réseau et d’une adresse de broadcast, il existe
une longueur de préfixe optionnelle. Si elle est omise, la
valeur par défaut est 64. À la différence d’IPv4, la longueur de
préfixe n’est pas automatiquement déduite de la configuration de
l’interface. La taille minimale pour la longueur de préfixe est
64.

Pour IPv6 (et IPv6 uniquement), il est possible de définir les
plages d’une autre façon. Dans ce cas, l’adresse de départ et
l’adresse de fin optionnelle contiennent uniquement la partie
réseau (par exemple ::1) et sont suivies par constructor:. Cela forme un modèle décrivant comment construire la
plage, à partir des adresses assignées à l’interface. Par
exemple

–dhcp-range=::1,::400,constructor:eth0

provoque la recherche d’adresses de la forme ::1 sur
eth0 et crée une plage allant de ::1 à :400. Si
une interface est assignée à plus d’un réseau, les plages cor‐
respondantes seront automatiquement créées, rendues obsolètes
puis supprimées lorsque l’adress est rendue obsolète puis sup‐
primée. Le nom de l’interface peut être spécifié avec un carac‐
tère joker ‘*’ final.

provoque la recherche d’adresses sur eth0 et crée une plage
allant de ::1 à :400. Si l’interface est assi‐
gnée à plus d’un réseau, les plages correspondantes seront res‐
pectivement automatiquement créées, rendues obsolètes et suppri‐
mées lorsque l’adresse est rendue obsolète et supprimée. Le nom
de l’interface peut être spécifié avec un caractère joker ‘*’
final. Les adresses autoconfigurées, privées ou obsolètes ne
conviennent pas.

Si une plage dhcp-range est uniquement utilisée pour du DHCP
sans-état (“stateless”) ou de l’autoconfiguration sans état
(“SLAAC”), alors l’adresse peut-être indiquée sous la forme ‘::’

–dhcp-range=::,constructor:eth0

Il existe une variante de la syntaxe constructor: qui consiste
en l’utilisation du mot-clef constructor-noauth. Voir –auth-
zone pour des explications à ce sujet.

L’identifiant de label optionnel set:

Le mot clef optionnel peut être égal à static (“sta‐
tique”) ce qui indique à Dnsmasq d’activer le service DHCP pour
le réseau spécifié, mais de ne pas activer l’allocation dyna‐
mique d’adresses IP : Seuls les hôtes possédant des adresses IP
statiques fournies via dhcp-host ou présentes dans le fichier
/etc/ethers seront alors servis par le DHCP. Il est possible
d’activer un mode “fourre-tout” en définissant un réseau sta‐
tique comportant uniquement des zéros, c’est à dire :
–dhcp=range=::,static Cela permet de retourner des réponses à
tous les paquets de type Information-request (requête d’informa‐
tion) en mode DHCPv6 sans état sur le sous-réseau configuré.

Pour IPv4, le peut est égal à proxy , auquel cas Dnsmasq
fournira un service de DHCP proxy pour le sous-réseau spécifié.
(voir pxe-prompt et pxe-service pour plus de détails).

Pour IPv6, le mode peut-être une combinaison des valeurs ra-
only, slaac, ra-names, ra-stateless, off-link.

ra-only indique à dnsmasq de n’effectuer que des annonces de
routeur (Router Advertisement, RA) sur ce sous-réseau, et de ne
pas faire de DHCP.

slaac indique à dnsmasq d’effectuer des annonces de routeur sur
ce sous-réseau et de positionner dans celles-ci le bit A, afin
que les clients utilisent des adresses SLAAC. Lorsqu’utilisé
conjointement avec une plage DHCP ou des affectations statiques
d’adresses DHCP, les clients disposeront à la fois d’adresses
DHCP assignées et d’adresses SLAAC.

ra-stateless indique à dnsmasq d’effectuer des annonces de rou‐
teur avec les bits 0 et A positionnés, et de fournir un service
DHCP sans état (“stateless”). Les clients utiliseront des
adresses SLAAC, et utiliseront DHCP pour toutes les autres
informations de configuration.

ra-names active un mode qui fourni des noms DNS aux hôtes fonc‐
tionnant en double pile (“dual stack”) et configurés pour faire
du SLAAC en IPv6. Dnsmasq utilise le bail IPv4 de l’hôte afin de
dériver le nom, le segment de réseau et l’adresse MAC et assume
que l’hôte disposera d’une adresse IPv6 calculée via l’algo‐
rithme SLAAC, sur le même segment de réseau. Un ping est envoyé
à l’adresse, et si une réponse est obtenue, un enregistrement
AAAA est rajouté dans le DNS pour cette adresse IPv6. Veuillez-
noter que cela n’arrive que pour les réseaux directement connec‐
tés (et non ceux pour lesquels DHCP se fait via relai), et ne
fonctionnera pas si un hôte utilise les “extensions de vie pri‐
vée” (“privacy extensions”). ra-names peut-être combiné avec ra-
stateless et slaac.

off-link indique à dnsmasq d’annoncer le préfixe sans le bit L
(sur lien).

-G, –dhcp-host=[][,id:|*][,set:

–dhcp-host=lap,192.168.0.199 spécifie à Dnsmasq d’allouer tou‐
jours à la machine portant le nom lap l’adresse IP
192.168.0.199.

Les adresses allouées de la sorte ne sont pas contraintes à une
plage d’adresse spécifiée par une option –dhcp-range, mais
elles se trouver dans le même sous-réseau qu’une plage dhcp-
range valide. Pour les sous-réseaux qui n’ont pas besoin
d’adresses dynamiquement allouées, utiliser le mot-clef “static”
dans la déclaration de plage d’adresses dhcp-range.

Il est possible d’utiliser des identifiants clients (appellé
“DUID client” dans le monde IPv6) plutôt que des adresses maté‐
rielles pour identifier les hôtes, en préfixant ceux-ci par
‘id:’. Ainsi, –dhcp-host=id:01:02:03:04,….. réfère à l’hôte
d’identifiant 01:02:03:04. Il est également possible de spéci‐
fier l’identifiant client sous la forme d’une chaîne de carac‐
tères, comme ceci : –dhcp-host=id:identifiantclientsousformede‐
chaine,…..

Un seul dhcp-host peut contenir une adresse IPv4, une adresse
IPv6, ou les deux en même temps. Les adresses IPv6 doivent-être
mises entre crochets comme suit : –dhcp-host=laptop,[1234::56] Les adresses IPv6 peuvent ne contenir que la partie identifiant
de client : –dhcp-host=laptop,[::56] Dans ce cas, lorsque des
plages dhcp sont définies automatiquement par le biais de
constructeurs, la partie réseau correspondante est rajoutée à
l’adresse.

A noter que pour le DHCP IPv6, l’adresse matérielle n’est pas
toujours disponible, bien que ce soit toujours le cas pour des
clients directement connectés (sur le même domaine de broadcast)
ou pour des clients utilisant des relais DHCP qui supportent la
RFC 6939.

En DHCPv4, l’option spéciale id:* signifie : “ignorer tout iden‐
tifiant client et n’utiliser que l’adresse matérielle”. Cela est
utile lorsqu’un client présente un identifiant client mais pas
les autres.

Si un nom apparaît dans /etc/hosts, l’adresse associée peut être
allouée à un bail DHCP mais seulement si une option –dhcp-host
spécifiant le nom existe par ailleurs. Seul un nom d’hôte peut-
être donné dans une option dhcp-host , mais les alias sont pos‐
sibles au travers de l’utilisation des CNAMEs. (Voir –cname ).
Le mot clef “ignore” (“ignorer”) indique à Dnsmasq de ne jamais
fournir de bail DHCP à une machine. La machine peut être spéci‐
fiée par son adresse matérielle, son identifiant client ou son
nom d’hôte. Par exemple –dhcp-host=00:20:e0:3b:13:af,ignore
Cela est utile lorsqu’un autre serveur DHCP sur le réseau doit
être utilisé par certaines machines.

Le paramètre set: permet de définir un iden‐
tifiant de réseau lorsque l’option dhcp-host est utilisée. Cela
peut servir à sélectionner des options DHCP juste pour cet hôte.
Plus d’un label peut être fourni dans une directive dhcp-host
(et dans cette seule directive). Lorsqu’une machine coïncide
avec une directive dhcp-host (ou une impliquée par /etc/ethers),
alors le label réservé “known” (“connu”) est associé. Cela per‐
met à Dnsmasq d’être configuré pour ignorer les requêtes issus
de machines inconnue
par le biais de –dhcp-ignore=tag:!known.

Les adresses ethernet (mais pas les identifiants clients)
peuvent être définies avec des octets joker, ainsi par exemple
–dhcp-host=00:20:e0:3b:13:*,ignore demande à Dnsmasq d’ignorer
une gamme d’adresses matérielles. Il est à noter que “*” doit-
être précédé d’un caractère d’échappement ou mis entre guille‐
mets lorsque spécifié en option de ligne de commande, mais pas
dans le fichier de configuration.

Les adresses matérielles coïncident en principe avec n’importe
quel type de réseau (ARP), mais il est possible de les limiter à
un seul type ARP en les précédant du type ARP (en Hexadécimal)
et de “-“. Ainsi –dhcp-host=06-00:20:e0:3b:13:af,1.2.3.4 coïn‐
cidera uniquement avec des adresses matérielles Token-Ring,
puisque le type ARP pour une adresse Token-Ring est 6.

Un cas spécial, pour IPv4, correspond à l’inclusion d’une ou
plusieurs adresses matérielles, c-à-d : –dhcp-
host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2. Cela per‐
met à une adresse IP d’être associé à plusieurs adresses maté‐
rielles, et donne à dnsmasq la permission d’abandonner un bail
DHCP attribué à l’une de ces adresses lorsqu’une autre adresse
dans la liste demande un bail. Ceci est une opération dangereuse
qui ne fonctionnera de manière fiable que si une adresse maté‐
rielle est active à un moment donné et dnsmasq n’a aucun moyen
de s’assurer de cela. Cela est utile, par exemple, pour allouer
une adresse IP stable à un laptop qui aurait à la fois une
connexion filaire et sans-fil.

–dhcp-hostsfile=
Lis les informations d’hôtes DHCP dans le fichier spécifié. Si
l’argument est un chemin vers un répertoire, lis tous les
fichiers de ce répertoire. Le fichier contient des informations
à raison d’un hôte par ligne. Le format d’une ligne est la même
que le texte fourni à la droite sur caractère “=” dans l’option
–dhcp-host. L’avantage de stocker les informations sur les
hôtes DHCP dans ce fichier est que celles-ci peuvent être modi‐
fiées sans recharger Dnsmasq; le fichier sera relu lorsque Dns‐
masq reçoit un signal SIGHUP.

–dhcp-optsfile=
Lis les informations relatives aux options DHCP dans le fichier
spécifié. Si l’argument est un chemin vers un répertoire, lis
tous les fichiers de ce répertoire. L’intérêt d’utiliser cette
option est le même que pour
–dhcp-hostsfile : le fichier spécifié sera rechargé à la
réception par dnsmasq d’un signal SIGHUP. Notez qu’il est pos‐
sible d’encoder l’information via –dhcp-boot en utilisant les
noms optionnels bootfile-name, server-ip-address et tftp-server.
Ceci permet d’inclure ces options dans un fichier “dhcp-opts‐
file”.DNSMASQ_SUPPLIED_HOST

NAME

-Z, –read-ethers
Lis les informations d’hôtes DHCP dans le fichier /etc/ethers.
Le format de /etc/ethers est une adresse matérielle suivie, soit
par un nom d’hôte, soit par une adresse IP sous la forme de 4
chiffres séparés par des points. Lorsque lu par Dnsmasq, ces
lignes ont exactement le même effet que l’option –dhcp-host
contenant les mêmes informations. /etc/ethers est relu à la
réception d’un signal SIGHUP par Dnsmasq. Les adresses IPv6 ne
sont PAS lues dans /etc/ethers.

-O, –dhcp-option=[tag:

Un traitement spécial est effectué sur les chaînes de caractères
fournies pour l’option 119, conformément à la RFC 3397. Les
chaînes de caractères ou les adresses IP sous forme de 4
chiffres séparés par des points donnés en arguments de l’option
120 sont traités conforméments à la RFC 3361. Les adresses IP
sous forme de 4 chiffres séparés par des points suivies par une
barre montante “/”, puis une taille de masque sont encodés
conforméments à la RFC 3442.

Les options IPv6 sont fournies en utilisant le mot-clef option6:
suivi par le numéro d’option ou le nom d’option. L’espace de
nommage des options IPv6 est disjint de l’espace de nommage des
options IPv4. Les adresses IPv6 en option doivent être entourées
de crochets, comme par exemple : –dhcp-option=option6:ntp-ser‐
ver,[1234::56]

Attention : aucun test n’étant fait pour vérifier que des don‐
nées d’un type adéquat sont envoyées pour un numéro d’option
donné, il est tout à fait possible de persuader Dnsmasq de géné‐
rer des paquets DHCP illégaux par une utilisation incorrecte de
cette option. Lorsque la valeur est un nombre décimal, Dnsmasq
doit déterminer la taille des données. Cela est fait en exami‐
nant le numéro de l’option et/ou la valeur, mais peut-être évité
en rajoutant un suffixe d’une lettre comme suit : b = un octet,
s = 2 octets, i = 4 octets. Cela sert essentiellement pour des
options encapsulées de classes de vendeurs (voir plus bas), pour
lesquelles Dnsmasq ne peut déterminer la taille de la valeur.
Les données d’options consistant uniquement de points et de
décimaux sont interprétées par Dnsmasq comme des adresses IP, et
envoyées comme telles. Pour forcer l’envoi sous forme de chaîne
de caractère, il est nécessaire d’utiliser des guillemets
doubles. Par exemple, l’utilisation de l’option 66 pour fournir
une adresse IP sous la forme d’une chaîne de caractères comme
nom de serveur TFTP, il est nécessaire de faire comme suit :
–dhcp-option=66,”1.2.3.4″

Les options encapsulées de classes de vendeurs peuvent-être
aussi spécifiées (pour IPv4 seulement) en utilisant –dhcp-
option : par exemple –dhcp-option=vendor:PXEClient,1,0.0.0.0
envoie l’option encapsulée de classe de vendeur “mftp-
address=0.0.0.0” à n’importe quel client dont la classe de ven‐
deur correspond à “PXEClient”. La correspondance pour les
classes de vendeur s’effectue sur des sous-chaînes de caractères
(voir –dhcp-vendorclass pour plus de détails). Si une option de
classe de vendeur (numéro 60) est envoyée par Dnsmasq, alors
cela est utilisé pour sélectionner les options encapsulées, de
préférence à toute option envoyée par le client. Il est possible
d’omettre complètement une classe de vendeur : –dhcp-
option=vendor:,1,0.0.0.0 Dans ce cas l’option encapsulée est
toujours envoyée.

En IPv4, les options peuvent-être encapsulées au sein d’autres
options : par exemple –dhcp-option=encap:175, 190, iscsi-
client0 enverra l’option 175, au sein de laquelle se trouve
l’option 190. Plusieurs options encapsulées avec le même numéro
d’option seront correctement combinées au sein d’une seule
option encapsulée. Il n’est pas possible de spécifier encap: et
vendor: au sein d’une même option dhcp.

La dernière variante pour les options encapsulées est “l’option
de Vendeur identifiant le vendeur” (“Vendor-Identifying Vendor
Options”) telle que décrite dans le RFC3925. Celles-ci sont spé‐
cifiées comme suit : –dhcp-option=vi-encap:2, 10, text Le
numéro dans la section vi-encap: est le numéro IANA de l’entre‐
prise servant à identifier cette option. Cette forme d’encapsu‐
lation est également supportée en IPv6.

L’adresse 0.0.0.0 n’est pas traitée de manière particulière
lorsque fournie dans une option encapsulée.

–dhcp-option-force=[tag:

–dhcp-no-override
(IPv4 seulement) Désactive la réutilisation des champs DHCP nom
de serveur et nom de fichier comme espace supplémentaire pour
les options. Si cela est possible, dnsmasq déplace les informa‐
tions sur le serveur de démarrage et le nom de fichier (fournis
par ‘dhcp-boot’) en dehors des champs dédiés à cet usage dans
les options DHCP. Cet espace supplémentaire est alors disponible
dans le paquet DHCP pour d’autres options, mais peut, dans
quelques rares cas, perturber des clients vieux ou défectueux.
Cette option force le comportement à l’utilisation des valeurs
“simples et sûres” afin d’éviter des problèmes dans de tels cas.

–dhcp-relay=,[,,[enterprise:,]

Associe une chaîne de classe de vendeur à un label. La plupart
des clients DHCP fournissent une “classe de vendeur” (“vendor
class”) qui représente, d’une certaine façon, le type d’hôte.
Cette option associe des classes de vendeur à des labels, de
telle sorte que des options DHCP peuvent-être fournie de manière
sélective aux différentes classes d’hôtes. Par exemple, dhcp-
vendorclass=set:printers,Hewlett-Packard JetDirect ou dhcp-ven‐
dorclass=printers,Hewlett-Packard JetDirect permet de n’allouer
des options qu’aux imprimantes HP de la manière suivante :
–dhcp-option=tag:printers,3,192.168.4.4 La chaîne de caractères
de la classe de vendeur founie en argument est cherchée en temps
que sous-chaîne de caractères au sein de la classe de vendeur
fournie par le client, de façon à permettre la recherche d’un
sous-ensemble de la chaîne de caractères (“fuzzy matching”). Le
préfixe set: est optionnel mais autorisé afin de conserver une
certaine homogénéité.

Notez qu’en IPv6 (et seulement en IPv6), les noms de classes de
vendeurs sont dans un espace de nom associé au numéro attribué à
l’entreprise par l’IANA. Ce numéro est fourni par le biais du
mot-clef enterprise: et seules les classes de vendeurs associées
au numéro spécifié seront cherchées.

-j, –dhcp-userclass=set:

-4, –dhcp-mac=set:

–dhcp-circuitid=set:

–dhcp-subscrid=set:

–dhcp-proxy[=]……
(IPv4 seulement) Un agent relai DHCP normal est uniquement uti‐
lisé pour faire suivre les éléments initiaux de l’interaction
avec le serveur DHCP. Une fois que le client est configuré, il
communique directement avec le serveur. Cela n’est pas souhai‐
table si le relais rajoute des informations supplémentaires aux
paquets DHCP, telles que celles utilisées dans dhcp-circuitid et
dhcp-remoteid. Une implémentation complète de relai peut utili‐
ser l’option serverid-override de la RFC 5107 afin de forcer le
serveur DHCP à utiliser le relai en temps que proxy complet, de
sorte que tous les paquets passent par le relai. Cette option
permet d’obtenir le même résultat pour des relais ne supportant
pas la RFC 5107. Fournie seule, elle manipule la valeur de ser‐
ver-id pour toutes les interactions via des relais. Si une liste
d’adresses IP est donnée, seules les interactions avec les
relais dont l’adresse est dans la liste seront affectées.

–dhcp-match=set:

–dhcp-match=set:efi-ia32,option:client-arch,6

spécifie le label “efi-ia32” si le numéro 6 apparaît dnas la
liste d’architectures envoyé par le client au sein de l’option
93. (se réferer au RFC 4578 pour plus de détails). Si la valeur
est un chaine de caractères, celle-ci est recherchée (correspon‐
dance en temps que sous-chaîne).

Pour la forme particulière vi-encap:, la
comparaison se fait avec les classes de vendeur “identifiant de
vendeur” (“vendor-identifying vendor classes”) pour l’entreprise
dont le numéro est fourni en option. Veuillez vous réferer à la
RFC 3925 pour plus de détail.

–tag-if=set:

-J, –dhcp-ignore=tag:

–dhcp-ignore-names[=tag:

–dhcp-generate-names=tag:

–dhcp-broadcast=[tag:

-M, –dhcp-boot=[tag:

–dhcp-sequential-ip
Dnsmasq est conçu pour choisir l’adresse IP des clients DHCP en
utilisant un hachage de l’adresse MAC du client. Cela permet en
général à l’adresse IP du client de rester stable au fil du
temps, même lorsque le client laisse expirer son bail DHCP de
temps en temps. Dans ce mode de fonctionnement par défaut, les
adresses IP sont distribuées de façon pseudo-aléatoire dans la
totalité de la plage d’adresses utilisable. Il existe des cir‐
constances (par exemples pour du déploiement de serveur) où il
est plus pratique d’allouer les adresses IP de manière séquen‐
tielle, en commençant par la plus petite adresse disponible, et
c’est ce mode de fonctionnement qui est permis par cette option.
Veuillez noter que dans ce mode séquentiel, les clients qui
laissent expirer leur bail ont beaucoup plus de chance de voir
leur adresse IP changer, aussi cette option ne devrait pas être
utilisée dans un cas général.

–pxe-service=[tag:

Ceci spécifie l’option de démarrage qui apparaitra dans un menu
de démarrage PXE. est le type du système client. Seuls des
types de services valides apparaitront dans un menu. Les types
connus sont x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI et X86-64_EFI;
D’autres types peuvent-être spécifiés sous la forme d’une valeur
entière. Le paramètre après le texte correspondant à l’entrée
dans le menu peut être un nom de fichier, auquel cas Dnsmasq
agit comme un serveur de démarrage et indique au client PXE
qu’il faut télécharger ce fichier via TFTP, soit depuis ce ser‐
veur (l’option enable-tftp doit être spécifiée pour que cela
marche), soit depuis un autre serveur TFTP si une adresse ou un
nom de serveur est fournie. Veuillez noter que le suffixe de
“couche” (en principe “.0”) est fourni par PXE et ne doit pas
être rajouté au nom de fichier. Si une valeur numérique entière
est fournir pour le type de démarrage, en remplacement du nom de
fichier, le client PXE devra chercher un service de démarrage de
ce type sur le réseau. Cette recherche peut être faite via
broadcast ou directement auprès d’un serveur si son adresse IP
ou son nom sont fournis dans l’option. Si aucun nom de fichier
n’est donné ni aucune valeur de type de service de démarrage
n’est fournie (ou qu’une valeur de 0 est donnée pour le type de
service), alors l’entrée de menu provoque l’interruption du
démarrage par le réseau et la poursuite du démarrage sur un
média local. L’adresse de serveur peut être donnée sous la forme
de nom de domaine qui est recherché dans /etc/hosts. Ce nom
peut-être associé à plusieurs adresses IP, qui dans ce cas sont
utilisées à tour de rôle (en “round-robin”).

–pxe-prompt=[tag:

Dnsmasq peut servir de “proxy-DHCP” PXE, dans le cas où un autre
serveur DHCP sur le réseau est responsable de l’allocation des
adresses IP, auquel cas Dnsmasq se contente de fournir les
informations données dans les options pxe-prompt et pxe-service
pour permettre le démarrage par le réseau. Ce mode est activé en
utilisant le mot-clef proxy dans dhcp-range.

-X, –dhcp-lease-max=
Limite Dnsmasq à un maximum de baux DHCP. Le défaut est
de 1000. Cette limite permet d’éviter des attaques de déni de
service (“DoS”) par des hôtes créant des milliers de baux et
utilisant beaucoup de mémoire dans le processus Dnsmasq.

-K, –dhcp-authoritative
Doit être spécifié lorsque dnsmasq est réellement le seul ser‐
veur DHCP sur le réseau. Pour DHCPv4, cela change le comporte‐
ment par défaut qui est celui d’un strict respect des RFC, afin
que les requêtes DHCP pour des baux inconnus par des hôtes
inconnus ne soient pas ignorées. Cela permet à de nouveaux hôtes
d’obtenir des baux sans tenir compte de fastidieuses temporisa‐
tions (“timeout”). Cela permet également à Dnsmasq de recons‐
truire sa base de données contenant les baux sans que les
clients n’aient besoin de redemander un bail, si celle-ci est
perdue. Dans le cas de DHCPv6, cela positionne la priorité des
réponses à 255 (le maximum) au lieu de 0 (le minimum).

–dhcp-alternate-port[=[,]] (IPv4 seulement) Change les ports utilisés par défaut pour le
DHCP. Si cette option est donnée seule sans argument, alors
change les ports utilisés pour le DHCP de 67 et 68 respective‐
ment à 1067 et 1068. Si un seul argument est donné, ce numéro
est utilisé pour le port serveur et ce numéro plus 1 est utilisé
pour le port client. Enfin, en fournissant deux numéros de
ports, il est possible de spécifier arbitrairement 2 ports à la
fois pour le serveur et pour le client DHCP.

-3, –bootp-dynamic[=[,]] (IPv4 seulement) Permet l’allocation dynamique d’adresses IP à
des clients BOOTP. Utiliser cette option avec précaution, une
adresse allouée à un client BOOTP étant perpétuelle, et de fait
n’est plus disponibles pour d’autres hôtes. Si aucun argument
n’est donné, alors cette option permet une allocation dynamique
dans tous les cas. Si des arguments sont spécifiés, alors
l’allocation ne se fait que lorsque tous les identifiants coïn‐
cident. Il est possible de répeter cette option avec plusieurs
jeux d’arguments.

-5, –no-ping
(IPv4 seulement) Par défaut, le serveur DHCP tente de s’assurer
qu’une adresse n’est pas utilisée avant de l’allouer à un hôte.
Cela est fait en envoyant une requête ICMP de type “echo
request” (aussi connue sous le nom de “ping”) à l’adresse en
question. Si le serveur obtient une réponse, alors l’adresse
doit déjà être utilisée et une autre est essayée. Cette option
permet de supprimer cette vérification. A utiliser avec précau‐
tion.

–log-dhcp
Traces additionnelles pour le service DHCP : enregistre toutes
les options envoyées aux clients DHCP et les labels utilisés
pour la détermination de celles-ci.

–quiet-dhcp, –quiet-dhcp6, –quiet-ra
Supprime les logs des opérations de routine des protocoles
concernés. Les erreurs et les problèmes seront toujours enregis‐
trés. L’option –log-dhcp prends le pas sur –quiet-dhcp et
quiet-dhcp6.

-l, –dhcp-leasefile=
Utilise le fichier dont le chemin est fourni pour stocker les
informations de baux DHCP.

–dhcp-duid=,
(IPv6 seulement) Spécifie le numéro d’UID de serveur persistant
que le serveur DHCPv6 doit utiliser. Cette option n’est normale‐
ment pas requise, Dnsmasq créant un DUID automatiquement lorsque
cela est nécessaire. Lorsque cette option est positionnée, elle
fournit à Dnsmasq les données nécessaires à la création d’un
DUID de type DUID-EN. Veuillez noter qu’une fois créé, le DUID
est stocké dans la base des baux, aussi changer entre un DUID
créé automatiquement et un DUID-EN et vice-versa impose de
réinitialiser la base de baux. Le numéro d’ID d’entreprise est
assigné par l’IANA, et l’uid est une chaine hexadécimale unique
à chaque serveur.

-6 –dhcp-script=
Lorsqu’un bail DHCP est créé, qu’un ancien est supprimé, ou
qu’un transfert TFTP est terminé, le fichier dont le chemin est
spécifié est exécuté. Le doit être un chemin
absolu, aucune recherche n’est effectuée via la variable d’envi‐
ronnement PATH. Les arguments fournis à celui-ci sont soit “add”
(“ajouter”), “old” (“ancien”) ou “del” (“supprimer”), suivi de
l’adresse MAC de l’hôte (ou le DUID pour IPv6) puis l’adresse IP
et le nom d’hôte si celui-ci est connu.”add” signifie qu’un bail
a été créé, “del” signifie qu’il a été supprimé, “old” notifie
que le bail existait au lancement de Dnsmasq, ou un changement
d’adresse MAC ou de nom d’hôte pour un bail existant (ou, dans
le cas où leasefile-ro est spécifié, un changement de durée de
bail ou d’identifiant d’hôte). Si l’adresse Mac est d’un type de
réseau autre qu’ethernet, il est nécessaire de la préceder du
type de réseau, par exemple “06-01:23:45:67:89:ab” pour du token
ring. Le processus est exécuté en temps que super-utilisateur
(si Dnsmasq a été lancé en temps que “root”), même si Dnsmasq
est configuré pour changer son UID pour celle d’un utilisateur
non-privilégié.

L’environnement est hérité de celui de l’invocation du processus
Dnsmasq, auquel se rajoute quelques unes ou toutes les variables
décrites ci-dessous :

Pour IPv4 et IPv6 :

DNSMASQ_DOMAIN si le nom de domaine pleinement qualifié de
l’hôte est connu, la part relative au domaine y est stockée.
(Notez que le nom d’hôte transmis comme argument au script n’est
jamais pleinement qualifié).

Si le client fournit un nom d’hôte, DNSMASQ_SUPPLIED_HOSTNAME.

Si le client fournit des classes d’utilisateur, DNS‐
MASQ_USER_CLASS0 à DNSMASQ_USER_CLASSn.

Si Dnsmasq a été compilé avec l’option HAVE_BROKEN_RTC (“horloge
RTC défectueuse”), alors la durée du bail (en secondes) est sto‐
ckée dans la variable DNSMASQ_LEASE_LENGTH, sinon la date
d’expiration du bail est toujours stocké dans la variable
d’environnement DNSMASQ_LEASE_EXPIRES. Le nombre de secondes
avant expiration est toujours stocké dans DNSMASQ_TIME_REMAI‐
NING.

Si un bail était associé à un nom d’hôte et que celui-ci est
supprimé, un évênement de type “old” est généré avec le nouveau
statut du bail, c-à-d sans nom d’hôte, et le nom initial est
fourni dans la variable d’environnement DNSMASQ_OLD_HOSTNAME.

La variable DNSMASQ_INTERFACE contient le nom de l’interface sur
laquelle la requête est arrivée; ceci n’est pas renseigné dans
le cas des actions “old” ayant lieu après un redémarrage de dns‐
masq.

La variable DNSMASQ_RELAY_ADDRESS est renseignée si le client a
utilisé un relai DHCP pour contacter Dnsmasq, si l’adresse IP du
relai est connue.

DNSMASQ_TAGS contient tous les labels fournis pendant la tran‐
saction DHCP, séparés par des espaces.

DNSMASQ_LOG_DHCP est positionné si –log-dhcp est activé.

Pour IPv4 seulement :

DNSMASQ_CLIENT_ID, si l’hôte a fourni un identifiant de client.

DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBSCRIBER_ID, DNSMASQ_REMOTE_ID si
un relai DHCP a rajouté l’une de ces options.

Si le client fournit une information de classe de vendeur, DNS‐
MASQ_VENDOR_CLASS.

Pour IPv6 seulement :

Si le client fournit une classe de vendeur (vendor-class), posi‐
tionne DNSMASQ_VENDOR_CLASS_ID avec comme contenu le numéro IANA
de l’entreprise pour la classe, et DNSMASQ_VENDOR_CLASS0..DNS‐
MASQ_VENDOR_CLASSn pour les données.

DNSMASQ_SERVER_DUID contient le DUID du serveur : cette valeur
est la même pour chaque appel au script.

DNSMASQ_IAID contenant l’IAID pour le bail. Si le bail est une
allocation temporaire, cela est préfixé par le caractère ‘T’.

DNSMASQ_MAC contient l’adresse MAC du client, si celle-ci est
connue.

A noter que le nom d’hôte fourni, la classe de vendeur ou les
données de classe d’utilisateur sont uniquement fournies pour
les actions “add” ou l’action “old” lorsqu’un hôte reprend un
bail existant, puisque ces informations ne sont pas conservées
dans la base de baux de dnsmasq.

Tous les descripteurs de fichiers sont fermés, sauf stdin,
stdout et stderr qui sont ouverts sur /dev/null (sauf en mode
déverminage).

Le script n’est pas lancé de manière concurrente : au plus une
instance du script est executée à la fois (dnsmasq attends
qu’une instance de script se termine avant de lancer la sui‐
vante). Les changements dans la base des baux nécessitant le
lancement du script sont placé en attente dans une queue jusqu’à
terminaison d’une instance du script en cours. Si cette mise en
queue fait que plusieurs changements d’états apparaissent pour
un bail donné avant que le script puisse être lancé, alors les
états les plus anciens sont supprimés et lorsque le script sera
finalement lancé, ce sera avec l’état courant du bail.

Au démarrage de Dnsmasq, le script sera invoqué pour chacun des
baux existants dans le fichier des baux. Le script sera lancé
avec l’action “del” pour les baux expirés, et “old” pour les
autres. Lorsque Dnsmasq reçoit un signal HUP, le script sera
invoqué avec une action “old” pour tous les baux existants.

Il existe deux autres actions pouvant apparaître comme argument
au script : “init” et “tftp”. D’autres sont susceptibles d’être
rajoutées dans le futur, aussi les scripts devraient-être écrits
de sorte à ignorer les actions inconnues. “init” est décrite ci-
dessous dans –leasefile-ro. L’action “tftp” est invoquée
lorsqu’un transfert de fichier TFTP s’est terminé. Ses arguments
sont la taille du fichier en octets, l’adresse à laquelle le
fichier a été envoyé, ainsi que le chemin complet du fichier.

–dhcp-luascript=
Spécifie un script écrit en Lua, devant être exécuté lorsque des
baux sont créés, détruits ou modifiés. Pour utiliser cette
option, dnsmasq doit être compilé avec avec le support de Lua.
L’interpréteur Lua est initialisé une seule fois, lorsque dns‐
masq démarre, ce qui fait que les variables globales persistent
entre les évênements liés aux baux. Le code Lua doit définir une
fonction lease et peut fournir des fonctions init et shutdown
qui sont appellées, sans arguments, lorsque dnsmasq démarre ou
s’arrête. Il peut également fournir une fonction tftp.

La fonction lease reçoit les informations détaillées dans
–dhcp-script. Il reçoit deux arguments. Le premier spécifie
l’action, qui est une chaîne de caractères contenant les valeurs
“add” (ajout), “old” (réactivation d’un bail existant) ou “del”
(suppression). Le deuxième est une table contenant des paires de
valeurs de labels. Les labels correspondent pour l’essentiel aux
valeurs d’environnement détaillées ci-dessus, ainsi le label
“domain” (domaine) contient les mêmes données que la variable
d’environnement DNSMASQ_DOMAIN. Il existe quelques labels sup‐
plémentaires contenant les données fournies comme arguments à
–dhcp-script. Ces labels sont mac_address, ip_address (pour
respectivement l’adresse MAC et l’adresse IP) et hostname (le
nom d’hôte) dans le cas d’IPv4, et client_duid, ip_address
(valeur DUID du client et adresse IP respectivement) ainsi que
hostname (le nom d’hôte) dans le cas d’IPv6.

La fonction tftp est appelée de la même façon que la fonction
“lease”, et la table contient les labels destination_address,
file_name et file_size (respectivement “adresse de destination”,
“nom de fichier” et “taille de fichier”).

–dhcp-scriptuser
Spécifie l’utilisateur sous lequel le script shell lease-change
ou le script doivent être exécutés. La valeur par défaut corres‐
pond à l’utilisateur root mais peut-être changée par le biais de
cette option.

-9, –leasefile-ro
Supprimer complètement l’usage du fichier servant de base de
donnée pour les baux DHCP. Le fichier ne sera ni créé, ni lu, ni
écrit. Change la façon dont le script de changement d’état de
bail est lancé (si celui-ci est fourni par le biais de l’option
–dhcp-script ), de sorte que la base de données de baux puisse
être complètement gérée par le script sur un stockage externe.
En addition aux actions décrites dans –dhcp-script, le script
de changement d’état de bail est appellé une fois, au lancement
de Dnsmasq, avec pour seul argument “init”. Lorsqu’appellé de la
sorte, le script doit fournir l’état de la base de baux, dans le
format de fichier de baux de Dnsmasq, sur sa sortie standard
(stdout) et retourner un code de retour de 0. Positionner cette
option provoque également une invocation du script de changement
d’état de bail à chaque changement de l’identifiant de client,
de longueur de bail ou de date d’expiration.

–bridge-interface=,[,] Traiter les requêtes DHCP (v4 et v6) et IPv6 Router Solicit
arrivant sur n’importe laquelle des interfaces comme si
elles arrivaient de l’interface . Cette option permet
à dnsmasq de fournir les service DHCP et RA sur les interfaces
ethernet non adressés et non pontés; par exemple sur un hôte de
calcul d’OpenStack où chaque telle interface est une interface
TAP à une machine virtuelle, ou lors de l’utilisation de pont
ethernet “ancien mode” sur plate-forme BSD. Chaque peut
finir avec un simple ‘*’ joker.

-s, –domain=[,[,local]] Spécifie le domaine du serveur DHCP. Le domaine peut être donné
de manière inconditionnelle (sans spécifier de gamme d’adresses
IP) ou pour des gammes d’adresses IP limitées. Cela a deux
effets; tout d’abord, le serveur DHCP retourne le domaine à tous
les hôtes le demandant, deuxièmement, cela spécifie le domaine
valide pour les hôtes DHCP configurés. Le but de cela est de
contraindre les noms d’hôte afin qu’aucun hôte sur le LAN ne
puisse fournir via DHCP un nom tel que par exemple “micro‐
soft.com” et capturer du trafic de manière illégitime. Si aucun
nom de domaine n’est spécifié, alors les noms d’hôtes avec un
nom de domaine (c-à-d un point dans le nom) seront interdits et
enregistrés dans le journal (logs). Si un suffixe est fourni,
alors les noms d’hôtes possédant un domaine sont autorisés, pour
peu que le nom de domaine coïncide avec le nom fourni. De plus,
si un suffixe est fourni, alors les noms d’hôtes ne possédant
pas de nom de domain se voient rajouter le suffixe fourni dans
l’option –domain. Ainsi, sur mon réseau, je peux configurer
–domain=thekelleys.org.uk et avoir une machine dont le nom DHCP
serait “laptop”. L’adresse IP de cette machine sera disponible à
la fois pour “laptop” et “laptop.thekelleys.org.uk”. Si la
valeur fournie pour est “#”, alors le nom de domaine
est positionné à la première valeur de la directive “search” du
fichier /etc/resolv.conf (ou équivalent).

La gamme d’adresses peut être de la forme , ou / voire une simple . Voir –dhcp-fqdn qui peut changer le comportement de dns‐
masq relatif aux domaines.

Si la gamme d’adresse est fournie sous la forme /, alors le drapeau “local” peut-être
rajouté qui a pour effect d’ajouter –local-declarations aux
requêtes DNS directes et inverses. C-à-d –domain=thekel‐
leys.org.uk,192.168.0.0/24,local est identique à –domain=the‐
kelleys.org.uk,192.168.0.0/24 –local=/thekelleys.org.uk/
–local=/0.168.192.in-addr.arpa/ La taille de réseau doit-être
de 8, 16 ou 24 pour être valide.

–dhcp-fqdn
Dans le mode par défaut, dnsmasq insère les noms non-qualifiés
des clients DHCP dans le DNS. Pour cette raison, les noms
doivent être uniques, même si deux clients ayant le même nom
sont dans deux domaines différents. Si un deuxième client DHCP
apparaît ayant le même nom qu’un client déjà existant, ce nom
est transféré au nouveau client. Si –dhcp-fqdn est spécifié, ce
comportement change : les noms non qualifiés ne sont plus rajou‐
tés dans le DNS, seuls les noms qualifiés le sont. Deux clients
DHCP avec le même nom peuvent tous les deux garder le nom, pour
peu que la partie relative au domaine soit différente (c-à-d que
les noms pleinements qualifiés diffèrent). Pour d’assurer que
tous les noms ont une partie domaine, il doit-y avoir au moins
un –domain sans gamme d’adresses de spécifié lorsque l’option
–dhcp-fqdn est configurée.

–dhcp-client-update
Normalement, lorsque dnsmasq fournit un bail DHCP, il positionne
un label dans l’option FQDN pour indiquer au client qu’il ne
doit pas tenter de faire une mise à jour DDNS avec son nom et
son adresse IP. Ceci parce que la paire Nom-IP est rajoutée
automatiquement dans la partie DNS de dnsmasq. Cette option
inhibe ce comportement ce qui est utile, par exemple, pour per‐
mettre aux clients Windows de la mise à jour de serveurs Active
Directory. Voir la RFC 4702 pour plus de détails.

–enable-ra
Active la fonctionalité d’annonces routeurs IPv6 (“IPv6 Router
Advertisement”). DHCPv6 ne gère pas la configuration complète du
réseau de la même façon que DHCPv4. La découverte de routeurs et
la découverte (éventuelle) de préfixes pour la création autonome
d’adresse sont gérées par un protocole différent. Lorsque DHCP
est utilisé, seul un sous-ensemble de tout ceci est nécessaire
et dnsmasq est à même de le gérer, en utilisant la configuration
DHCP présente pour fournir la majorité des données. Lorsque les
annonces routeurs (RA pour “Router Advertisement”) sont acti‐
vées, dnsmasq va annoncer un préfixe pour chaque dhcp-range et,
par défaut, fournir comme valeur de routeur et de DNS récursif
la valeur d’adresse link-local appropriée parmi celles de la
machine sur laquelle tourne dnsmasq. Par défaut, les bits “mana‐
ged address” sont positionnés, et le bit “use SLAAC” (“utiliser
SLAAC”) est réinitialisé. Cela peut-être changé pour des sous-
réseaux donnés par le biais du mot clef de mode décris dans
–dhcp-range. Les paramètres DNS du RFC6106 sont inclus dans les
annonces. Par défaut, l’adresse link-local appropriée parmi
celles de la machine sur laquelle tourne dnsmasq est spécifiée
comme DNS récursif. Si elles sont fournies, les options dns-ser‐
ver et domain-search sont utilisées respectivement pour RDNSS et
DNSSL.

–ra-param=,[high|low],[[],] Configure pour une interface donnée des valeurs pour les
annonces routeurs différentes des valeurs par défaut. La valeur
par défaut du champ priorité pour le routeur peut-être changée
de “medium” (moyen) à “high” (haute) ou “low” (basse). Par
exemple : –ra-param=eth0,high. Un intervalle (en secondes)
entre les annonces routeur peut-être fourni par : –ra-
param=eth0,60. La durée de vie de la route peut-être changée ou
mise à zéro, auquel cas le routeur peut annoncer les préfixes
mais pas de route : –ra-parm=eth0,0,0 (une valeur de zéro pour
l’intervalle signifie qu’il garde la valeur par défaut). Ces
trois paramètres peuvent-être configurés en une fois : –ra-
param=low,60,1200 La valeur pour l’interface peut inclure un
caractère joker.

–enable-tftp[=[,]] Active la fonction serveur TFTP. Celui-ci est de manière délibé‐
rée limité aux fonctions nécessaires au démarrage par le réseau
(“net-boot”) d’un client. Seul un accès en lecture est possible;
les extensions tsize et blksize sont supportées (tsize est
seulement supporté en mode octet). Sans argument optionel, le
service TFTP est fourni sur les mêmes interfaces que le service
DHCP. Si une liste d’interfaces est fournie, cela définit les
interfaces sur lesquelles le service TFTP sera activé.

–tftp-root=[,] Les fichiers à fournir dans les transferts TFTP seront cherchés
en prenant le répertoire fourni comme racine. Lorsque cela est
fourni, les chemins TFTP incluant “..” sont rejetés, afin d’évi‐
ter que les clients ne puissent sortir de la racine spécifiée.
Les chemins absolus (commençant par “/”) sont autorisés, mais
ils doivent être à la racine TFTP fournie. Si l’option interface
est spécifiée, le répertoire n’est utilisé que pour les requêtes
TFTP reçues sur cette interface.

–tftp-unique-root
Ajouter l’adresse IP du client TFTP en temps qu’élément de che‐
min, à la suite de la racine tftp (adresse sous forme de 4
chiffres séparés par des points). Uniquement valable si une
racine TFTP est spécifiée et si le répertoire correspond existe.
Ainsi, si la valeur pour tftp-root est “/tftp” et que le client
d’adresse IP 1.2.3.4 requiert le fichier “monfichier”, alors le
chemin effective résultant sera “/tftp/1.2.3.4/monfichier” si
/tftp/1.2.3.4 existe, ou “/tftp/monfichier” dans le cas
contraire.

–tftp-secure
Active le mode TFTP sécurisé : sans cela, tout fichier lisible
par Dnsmasq est disponible via TFTP (les règles de contrôle
d’accès unix habituelles s’appliquent). Lorsque l’option –tftp-
secure est spécifiée, seuls les fichiers possédés par l’utilisa‐
teur sous lequel tourne le processus Dnsmasq sont accessibles.
Si Dnsmasq est exécuté en temps que super-utilisateur (“root”),
des règles différentes s’appliquent : –tftp-secure n’a aucun
effet, mais seuls les fichiers ayant un droit de lecture pour
tout le monde sont accessibles. Il n’est pas recommandé d’exécu‐
ter Dnsmasq sous l’utilisateur “root” lorsque le service TFTP
est activé, et il est formellement déconseillé de le faire sans
fournir l’option –tftp-root. Sans cela, en effet, l’accès de
tous les fichiers du serveur pour lequel le droit de lecture
pour tout le monde est positionné (“world-readable”) devient
possible par n’importe quel hôte sur le réseau.

–tftp-lowercase
Converti les noms de fichiers des requêtes TFTP en minuscules.
Cela est utile pour les requêtes effectuées depuis les machines
Windows, dont les systèmes de fichiers sont insensibles à la
casse et pour lesquels la détermination de la casse est parfois
un peu aléatoire. A noter que le serveur tftp de dnsmasq
converti systématiquement les “\” en “/” dans les noms de
fichiers.

–tftp-max=
Définit le nombre maximum de connexions TFTP simultanées autori‐
sées. La valeur par défaut est de 50. Lorsqu’un grand nombre de
connexions TFTP est spécifié, il se peut que la limite de nombre
de descripteurs de fichiers par processus soit atteinte. Dnsmasq
nécessite quelques descripteurs de fichiers, ainsi qu’un des‐
cripteur de fichier pour chaque connexion TFTP simultanée et
pour chacun des fichiers devant être fournis. De fait, servir le
même fichier à n clients ne nécessitera qu’environ n + 10 des‐
cripteurs de fichiers, alors que fournir des fichiers tous dif‐
férents à n clients utilisera environ (2*n) + 10 descripteurs.
Si elle est donnée, l’option –tftp-port-range peut affecter le
nombre maximum de connexions concurrentes.

–tftp-no-blocksize
Empêche le serveur TFTP de négocier l’option “blocksize” (taille
de bloc) avec les clients. Certains clients buggés spécifient
cette option mais se comportent ensuite de manière incorrecte si
celle-ci est accordée.

–tftp-port-range=,
Un serveur TFTP écoute sur le port prédéfini 69 (“well-known
port”) pour l’initiation de la connexion, mais utilise également
un port dynamiquement alloué pour chaque connexion. Normalement,
ces ports sont alloués par le système d’exploitation, mais cette
option permet de spécifier une gamme de ports à utiliser pour
les transferts TFTP. Cela peut-être utile si TFTP doit traverser
un dispositif garde-barrière (“firewall”). La valeur de début
pour la plage de port ne peut-être inférieure à 1025 sauf si
dnsmasq tourne en temps que super-utilisateur (“root”). Le
nombre de connexions TFTP concurrentes est limitée par la taille
de la gamme de ports ainsi spécifiée.

–tftp-port-range=,
Un serveur TFTP écoute sur un numéro de port bien connu (69)
pour l’initiation de la connexion, et alloue dynamiquement un
port pour chaque connexion. Ces numéros de ports sont en prin‐
cipe alloués par le système d’exploitation, mais cette option
permet de spécifier une gamme de ports à utiliser pour les
transferts TFTP. Cela peut-être utile lorsque ceux-ci doivent
traverser un dispositif garde-barrière (“firewall”). Le début de
la plage ne peut-être inférieur à 1024 à moins que Dnsmasq ne
fonctionne en temps que super-utilisateur (“root”). Le nombre
maximal de connexions TFTP concurrentes est limitée par la
taille de la plage de ports ainsi définie.

-C, –conf-file=
Spécifie un fichier de configuration différent. L’option “conf-
file” est également autorisée dans des fichiers de configura‐
tion, ce qui permet l’inclusion de multiples fichiers de confi‐
guration. L’utilisation de “-” comme nom de fichier permet la
lecture par dnsmasq de sa configuration sur l’entrée standard
stdin.

-7, –conf-dir=[,…] Lis tous les fichiers du répertoire spécifié et les traite comme
des fichiers de configuration. Si des extensions sont données,
tout fichier finissant par ces extensions seront ignorés. Tout
fichier dont le nom se termine en ~ ou commence par ., ainsi que
ceux commençant ou se terminant par # seront systématiquement
ignorés. Cette option peut être donnée en ligne de commande ou
dans un fichier de configuration.

FICHIER DE CONFIGURATION
Au démarrage, Dnsmasq lis /etc/dnsmasq.conf, si ce fichier existe. (Sur
FreeBSD, ce fichier est /usr/local/etc/dnsmasq.conf ) (voir cependant
les options -C et -7 ). Le format de ce fichier consiste en une option
par ligne, exactement comme les options longues détaillées dans la sec‐
tion OPTIONS, mais sans être précédées par “–“. Les lignes commençant
par # sont des commentaires et sont ignorées. Pour les options qui ne
peuvent-être spécifiées qu’une seule fois, celle du fichier de configu‐
ration prends le pas sur celle fournie en ligne de commande. Il est
possible d’utiliser des guillemets afin d’éviter que les “,”,”:”,”.” et
“#” ne soit interprêtés, et il est possible d’utiliser les séquences
d’échappement suivantes : \\ \” \t \e \b \r et \n. Elles correspondent
respectivement à la barre oblique descendante (“anti-slash”), guille‐
mets doubles, tabulation, caractère d’échappement (“escape”), suppres‐
sion (“backspace”), retour (“return”) et nouvelle ligne (“newline”).

NOTES
A la réception d’un signal SIGHUP, Dnsmasq vide son cache et recharge
les fichiers /etc/hosts et /etc/ethers ainsi que tout autre fichier
spécifié par les options –dhcp-hostsfile , –dhcp-optsfile ou –addn-
hosts. Le script de changement de bail est appellé pour chaque bail
DHCP existant. Si l’option –no-poll est positionnée, alors le fichier
/etc/resolv.conf est également rechargé. SIGHUP ne provoque PAS de
rechargement du fichier de configuration.

A la réception d’un signal SIGUSR1, Dnsmasq écrit des statistiques dans
les traces système. Les informations fournies sont : la taille du
cache, le nombre de noms ayant été supprimés du cache avant expiration
afin de faire de la place pour les nouveaux noms, ainsi que le nombre
total d’entrées ayant été insérées dans le cache. Pour chaque serveur
amont, il fournit le nomnbre de requêtes transmises ainsi que le nombre
de requêtes ayant résulté par une erreur. Lorsque Dnsmasq a été lancé
via –no-daemon ou lorsque la traçabilité maximale a été activée ( -q
), la totalité du contenu du cache est de surcroît fournie.

A la réception d’un signal SIGUSR2 et lorsqu’il enregistre directement
ses traces dans un fichier (voir –log-facility ), alors Dnsmasq ferme
et re-rouvre le fichier de traces. Il faut noter que pendant cette opé‐
ration Dnsmasq ne s’exécute pas en temps que “root”. Lorsqu’il créé un
fichier de traces pour la première fois, Dnsmasq change le propriétaire
du fichier afin de le faire appartenir à l’utilisateur non “root” sous
lequel Dnsmasq s’exécute. Le logiciel de rotation de fichiers de trace
logrotate doit être configuré pour créer un nouveau fichier avec un
propriétaire identique au fichier existant avant d’envoyer le signal
SIGUSR2. Si une requête DNS TCP est en cours, l’ancien fichier de
traces reste ouvert dans le processus fils qui traite la requête TCP et
il peut y être écrit. Il existe cependant une limite de 150 secondes
après laquelle tous les processus traitant des requêtes TCP expirent :
pour cette raison, il est préférable de ne pas configurer la compres‐
sion des fichiers de traces venant juste de faire l’objet d’une rota‐
tion. Dans le cas de l’utilisation du logiciel logrotate, les options
requises sont create et delaycompress.

Dnsmasq est un logiciel de transmission de requêtes DNS : il n’est pas
capable d’effectuer une résolution de nom récursive en partant des ser‐
veurs DNS racine, mais transmet de telles requêtes à un serveur DNS
amont capable de telles recherches récursives, ce qui est typiquement
le cas d’un serveur DNS de FAI. Par défaut, Dnsmasq lis
/etc/resolv.conf pour découvrir les adresses IP des serveurs DNS amonts
à utiliser, puisque cette information est en général stockée à cet
endroit. A moins que l’option –no-poll ne soit utilisée, Dnsmasq véri‐
fie la date de modification du fichier /etc/resolv.conf (ou l’équi‐
valent si –resolv-file est utilisé), et le relis lorsqu’il change.
Cela permet de définir les serveurs DNS amont de manière dynamique
lorsque PPP ou DHCP sont utilisés, puisque ces protocoles fournissent
cette information. L’absence du fichier /etc/resolv.conf ne conduit pas
à une erreur, puisqu’il peut très bien ne pas être créé avant qu’une
connexion PPP ne soit établie. Dans ce cas, Dnsmasq vérifie régulière‐
ment pour voir si un fichier /etc/resolv.conf est créé. Dnsmasq peut
être configuré pour lire plus d’un fichier resolv.conf. Cela est utile
sur un ordinateur portable où PPP et DHCP peuvent-être utilisés : Dns‐
masq peut alors être configuré pour lire à la fois /etc/ppp/resolv.conf
et /etc/dhcpc/resolv.conf et utilisera le contenu du fichier ayant
changé en dernier, ce qui permet de passer automatiquement de serveurs
DNS à d’autres.

Les serveurs amonts peuvent aussi être spécifiés sur la ligne de com‐
mande ou dans un fichier de configuration. Ces spécifications de ser‐
veurs peuvent éventuellement se voir adjoindre d’un nom de domaine qui
précise à Dnsmasq quel serveur utiliser pour trouver les noms d’un
domaine donné.

Pour configurer Dnsmasq afin qu’il se comporte comme un cache pour la
machine sur laquelle il tourne, mettre “nameserver 127.0.0.1” dans le
fichier /etc/resolv.conf afin de forcer les processus locaux à envoyer
leurs requêtes à Dnsmasq. Ensuite, spécifier les serveurs DNS amont
soit en les fournissant directement à Dnsmasq via l’option –server ou
alors en mettant leurs adresses dans un autre fichier, par exemple
/etc/resolv.dnsmasq et en lançant Dnsmasq avec l’option -r
/etc/resolv.dnsmasq. Cette deuxième technique permet la mise-à-jour
dynamique des addresses de serveurs DNS amont par le biais de PPP ou
DHCP.

Les adresses dans /etc/hosts prennent le dessus sur celles fournies par
le serveur DNS amont, ainsi “macompagnie.com 1.2.3.4” dans /etc/hosts
assure que les requêtes pour “macompagnie.com” retourneront toujours
1.2.3.4, même si une requête au serveur DNS amont retournerait une
adresse différente. Il y a une exception à ceci : si le DNS amont
contient un CNAME qui pointe vers un nom présent dans /etc/hosts, alors
la recherche du CNAME via Dnsmasq fournira l’adresse DNS amont. Pour
contourner cela, il suffit de mettre l’entrée correspondant au C

NAME

dans /etc/hosts.

le système de label fonctionne comme suit : pour chaque requête DHCP,
dnsmasq associe un ensemble de labels obtenus à partir des lignes de la
configuration incluant set:

Le label “bootp” est associé aux requêtes BOOTP, un label dont le nom
est le nom de l’interface sur laquelle la requête est arrivée.

Pour les lignes de configuration comportant des éléments tag:

Lors de la sélection d’une option, une étiquette spécifiée par dhcp-
range passe après les autres étiquettes, ce qui permet de facilement
remplacer des option génériques pour des hôtes spécifiques, ainsi :
dhcp-range=set:interface1,…… dhcp-host=set:monhote,….. dhcp-
option=tag:interface1,option:nis-domain,”domaine1″ dhcp-option=tag:mon‐
hote,option:nis-domain,”domaine2″ va positionner l’option NIS-domain à
domaine1 pour les hôtes dans la plage d’adresse, sauf pour monhote pour
lequel cette valeur sera domaine2.

Veuillez noter que pour dhcp-range , les éléments tag:

Ce système a évolué d’un système plus ancien et aux possibilités plus
limitées, et pour des raisons de compatibilité “net:” peut être utilisé
à la place de “tag:” et “set:” peut-être omis (à l’exception de dhcp-
host, où “net:” peut-être utilisé à la place de “set:”). Pour les mêmes
raisons, ‘#’ peut-être utilisé à la place de ‘!’ pour indiquer la néga‐
tion.

Le serveur DHCP intégré dans Dnsmasq fonctionne également en temps que
serveur BOOTP, pour peu que l’adresse MAC et l’adresse IP des clients
soient fournies, que ce soit par le biais de l’option dhcp-host ou dans
le fichier /etc/ethers , et que l’option dhcp-range soit présente afin
d’activer le serveur DHCP pour un réseau donné (L’option –bootp-dyna‐
mic supprime la nécessité des associations statiques). Le paramètre
“filename” (nom de fichier) de la requête BOOTP est utilisé comme
label, ainsi que le label “bootp”, permettant un certain contrôle sur
les options retournées aux différentes classes d’hôtes.

CONFIGURATION EN TEMPS QUE SERVEUR FAISANT AUTORITÉ
Configurer dnsmasq pour agir en temps que serveur DNS faisant autorité
est compliqué par le fait que cela implique la configuration de ser‐
veurs DNS externes pour mettre en place la délégation. Seront présentés
ci-dessous trois scénarios de complexité croissante. Le pré-requis pour
chacun de ces scénarios est l’existence d’une adresse IP globalement
disponible, d’un enregistrement de type A ou AAAA pointant vers cette
adresse, ainsi que d’un serveur DNS externe capable d’effectuer la
délégation de la zone en question. Pour la première partie de ces
explications, nous allons appeller serveur.exemple.com l’enregistrement
A (ou AAAA) de l’adresse globalement accessible, et notre.zone.com la
zone pour laquelle dnsmasq fait autorité.

La configuration la plus simple consiste en deux lignes de configura‐
tion, sous la forme :
auth-server=serveur.exemple.com,eth0
auth-zone=notre.zone.com,1.2.3.0/24

ainsi que deux enregistrements dans le DNS externe :

serveur.exemple.com A 192.0.43.10
notre.zone.com NS serveur.exemple.com

eth0 est l’interface réseau externe sur laquelle dnsmasq écoute, dont
l’adresse IP (globalement accessible) est 192.0.43.10.

A noter que l’adresse IP externe peut parfaitement être dynamique (par
exemple attribuée par un FAI via DHCP ou PPP). Dans ce cas, l’enregis‐
trement de type A doit être lié à cet enregistrement dynamique par
l’une ou l’autre des techniques habituelles de système DNS dynamique.

Un exemple plus complexe mais en pratique plus utile correspond au cas
où l’adresse IP globalement accessible se trouve dans la zone pour
laquelle dnsmasq fait autorité, le plus souvent à la racine. Dans ce
cas nous avons :

auth-server=notre.zone.com,eth0
auth-zone=notre.zone.com,1.2.3.0/24

notre.zone.com A 1.2.3.4
notre.zone.com NS our.zone.com

L’enregistrement A pour notre.zone.com est dorénavant un enregistrement
“colle” qui résoud le problème de poule et d’oeuf consistant à trouver
l’adresse IP du serveur de nom pour notre.zone.com lorsque l’enregis‐
trement se trouve dans la zone en question. Il s’agit du seul rôle de
cet enregistrement : comme dnsmasq fait désormais autorité pour
notre.zone.com, il doit également fournir cet enregistrement. Si
l’adresse externe est statique, cela peut-être réalisé par le biais
d’une entrée dans /etc/hosts ou via un –host-record.

auth-server=notre.zone.com,eth0
host-record=notre.zone.com,1.2.3.4
auth-zone=notre.zone.com,1.2.3.0/24

Si l’adresse externe est dynamique, l’adresse associée à notre.zone.com
doit être dérivée de l’interface correspondante. Cela peut être fait en
utilisant interface-name Sous la forme :

auth-server=notre.zone.com,eth0
interface-name=notre.zone.com,eth0
auth-zone=notre.zone.com,1.2.3.0/24

La configuration finale rajoute à cette base un serveur DNS secondaire.
Il s’agit d’un autre serveur DNS qui apprend les données DNS de la zone
en effectuant un transfert de zone, et qui joue le rôle de serveur de
secours au cas où le serveur principal devenait inaccessible. La confi‐
guration de ce serveur secondaire sort du cadre de cette page de
manuel. Les éléments de configuration à rajouter dans dnsmasq sont les
simples :

auth-sec-servers=secondaire.monfai.com

et

notre.zone.com NS secondaire.monfai.com

L’addition d’une option auth-sec-servers active les transferts de zone
dans dnsmasq, ce qui permet au serveur secondaire de venir collecter
les données DNS. Si vous souhaitez restreindre l’accès à ces données à
des hôtes spécifiques, vous pouvez le faire via :

auth-peer=

Dnsmasq joue le rôle de serveur faisant autorité pour les domaines in-
addr.arpa et ip6.arpa associés aux sous-réseaux définis dans la décla‐
ration de zone auth-zone, ce qui fait que les requêtes DNS inversées
(de l’adresse vers le nom) peuvent-simplement être configurées avec un
enregistrement NS adéquat. Par exemple, comme nous définissons plus
haut les adresses 1.2.3.0/24 :
3.2.1.in-addr.arpa NS notre.zone.com

Veuillez noter que pour l’instant, les zones inverses ne sont pas dis‐
ponibles dans les transferts de zone, donc il est inutile de configurer
de serveur secondaire pour la résolution inverse.

Lorsque dnsmasq est configuré en temps que serveur faisant autorité,
les données suivantes sont utilisées pour peupler la zone considérée :

–mx-host, –srv-host, –dns-rr, –txt-record, –naptr-record , pour
autant que les noms des enregistrements se trouvent dans la zone en
question.

–cname pour peu que le nom soit dans le domaine. Si la cible du C

NAME

n’est pas pleinement qualifiée, alors elle est qualifiée avec le nom de
la zone pour laquelle le serveur fait autorité.

Les adresses IPv4 et IPv6 extraites de /etc/hosts (et –addn-hosts )
ainsi que les options –host-record fournissant des adresses situées
dans l’un des sous-réseaux spécifiés dans –auth-zone.

Adresses spécifiées par –interface-name. Dans ce cas, l’adresse n’est
pas limitée à l’un des sous-réseaux donné dans –auth-zone.

Les adresses de baux DHCP, si l’adresse est située dans l’un des sous-
réseaux de –auth-zone OU dans une plage DHCP construite. Dans le mode
par défaut, où le bail DHCP a un nom non qualifié, et éventuellement
pour un nom qualifié construit via –domain , alors le nom dans la zone
faisant autorité est construit à partir du nom non qualifié et du nom
de domaine de la zone. Cela peut on non être égal celui fourni par
–domain. Si l’option –dhcp-fqdn est fournie, alors les noms pleineme‐
net qualifiés associés aux baux DHCP sont utilisés, dès lors qu’ils
correspondent au nom de domaine associé à la zone.

CODES DE SORTIE
0 – Dnsmasq s’est correctement lancé en tâche de fond, ou alors s’est
correctement terminé si le lancement en tâche de fond n’a pas été
activé.

1 – Un problème de configuration a été détecté.

2 – Un problème est survenu avec un accès réseau (adresse déjà utili‐
sée, tentative d’utiliser un port privilégié sans les permissions
nécessaires).

3 – Un problème est survenu avec une opération sur un système de
fichier (fichier ou répertoire manquant, permissions).

4 – Impossibilité d’allouer de la mémoire.

5 – Autre problème.

11 ou plus – un code de retour différent de 0 a été reçu lors de
l’appel au processus “init” du script des bails. Le code de retour de
Dnsmasq correspond au code de retour du script plus 10.

LIMITES
Les valeurs par défaut pour les limites de ressources de Dnsmasq sont
en général conservatrices et appropriées pour des utilisations embar‐
quées sur des machines de type routeur ayant des processeurs lents et
une mémoire limitée. Sur du matériel plus performant, il est possible
d’augmenter les limites et de gérer plus de clients. Les remarques sui‐
vantes s’appliquent à Dnsmasq version 2.37 et ultérieur : les versions
précédentes ne montaient pas en charge aussi bien.

Dnsmasq est capable de gérer le DNS et DHCP pour au moins un millier de
clients. Pour cela, la durée des bail ne doit pas être très courte
(moins d’une heure). La valeur de –dns-forward-max peut-être augmentée
: commencer par la rendre égale au nombre de clients et l’augmenter si
le DNS semble lent. Noter que la performance du DNS dépends également
de la performance des serveurs amonts. La taille du cache DNS peut-
être augmentée : la limite en dur est de 10000 entrées et la valeur par
défaut (150) est très basse. Envoyer un signal SIGUSR1 à Dnsmasq le
fait émettre des informations utiles pour paramétrer la taille de
cache. Voir la section NOTES pour plus de détails.

Le serveur TFTP intégré est capable de plusieurs transferts de fichiers
simultanés : La limite absolue est liée au nombre maximal de descrip‐
teurs de fichiers alloué à un processus et à la capacité de l’appel
système select() à gérer un grand nombre de HANDLE de fichier. Si la
limite est fixée trop haut par le biais de –tftp-max elle sera réduite
et la limite actuelle sera enregistrée au démarrage. Il faut noter que
plus de transferts sont possible lorsque le même fichier est transmis
au lieu d’avoir un fichier différent pour chaque transfert.

Il est possible d’utiliser Dnsmasq pour bloquer la publicité sur la
toile en associant des serveurs de publicité bien connus à l’adresse
127.0.0.1 ou 0.0.0.0 par le biais du fichier /etc/hosts ou d’un fichier
d’hôte additionnel. Cette liste peut-être très longue, Dnsmasq ayant
été testé avec succès avec un million de noms. Cette taille de fichier
nécessite un processeur à 1 Ghz et environ 60 Mo de RAM.

INTERNATIONALISATION
Dnsmasq peut être compilé pour supporter l’internationalisation. Pour
cela, les cibles “all-i18n” et “install-i18n” doivent être données à
make, en lieu et place des cibles standards “all” et “install”. Lorsque
compilé avec le support de l’internationalisation, dnsmasq supporte les
noms de domaines internationalisés (“internationalised domain names” ou
IDN), et les messages de traces (“logs”) sont écrits dans la langue
locale. Les noms de domaines dans /etc/hosts, /etc/ethers et /etc/dns‐
masq.conf contenant des caractères non-ASCII seront transformés selon
la représentation punycode interne aux DNS. Veuillez noter que dnsmasq
détermine la langue pour les messages ainsi que le jeu de caractères
susceptible d’être utilisé dans les fichiers de configuration à partir
de la variable d’environnement LANG. Ceci devrait être configuré à la
valeur par défaut du système par les scripts démarrant dnsmasq. Lorsque
les fichiers de configuration sont édités, veuillez faire attention à
le faire en utilisant la valeur de locale par défaut du système et non
une valeur spécifique à l’utilisateur, puisque dnsmasq n’a aucun moyen
de déterminer directement la valeur de jeu de caractère utilisé, et
assume de ce fait qu’il s’agit de la valeur par défaut du système.

FICHIERS
/etc/dnsmasq.conf

/usr/local/etc/dnsmasq.conf /var/run/dnsmasq/resolv.conf
/etc/ppp/resolv.conf /etc/dhcpc/resolv.conf

/etc/resolv.conf

/etc/hosts

/etc/ethers

/var/lib/misc/dnsmasq.leases

/var/db/dnsmasq.leases

/var/run/dnsmasq.pid

VOIR AUSSI
hosts(5), resolver(5)

AUTEUR
Cette page de manuel a été écrite par Simon Kelley .

La traduction dans un français bancal a été commise par Gildas Le Nadan
<3ntr0p13@gmail.com> : Toute révision/correction permettant de corriger
orthographe ou grammaire mais surtout les éventuelles fautes de sens
sera la bienvenue!

DNSMASQ(8)

Ils en parlent aussi

DNSmasq Installation & Configuration | SF-Xpt’s Blog
Using Hostapd with dnsmasq to create Virtual Wifi Access Point in …
Dnsmasq for Home User | Mohan43u’s Blog
Configure SCAN DNS for RAC 11G RAC 12C using dnsmasq in …
Setting up dnsmasq with Ubuntu 10.04 for home networking | The …
DNSCrypt + DNSMasq sur ArchLinux/Manjaro – Memo Linux