Dnsmasq : configuration particulière pour certains appareils

Bonjour,

Dans le cadre de mon travail, j’ai un serveur DHCP opéré par dnsmasq.
Nous avons plusieurs réseaux et chaque réseau est équipé d’un relais DHCP qui transfère les requêtes vers ce serveur DHCP.
Dans les réseaux qui ne sont pas sur le siège, nous avons deux routeurs : un qui permet d’accéder aux réseaux internes et l’autre à Internet. J’ai donc mis en place des routes statiques poussées par l’option DHCP idoine :

dhcp-range=ant1, 10.33.57.1, 10.33.57.149, 255.255.255.0, 30m
dhcp-option=ant1, option:router, 10.33.57.250
dhcp-option=ant1, option:classless-static-route, 10.33.50.0/24, 10.33.57.252, 10.33.51.0/24, 10.33.57.252, 10.33.52.0/24, 10.33.57.252, 10.33.53.0/24, 10.33.57.252, 10.33.54.0/24, 10.33.57.252, 10.33.59.0/24, 10.33.57.252, 10.33.60.0/24, 10.33.57.252, 10.200.20.0/24, 10.33.57.252
dhcp-option=ant1, 252, "\n"

Le problème, c’est que certains périphériques ne prennent pas en charge l’option classless-static-route. J’ai donc mis en place une exception pour l’imprimante :

dhcp-option=ant1-prt, option:router, 10.33.57.252
dhcp-option=ant1-prt, 252, "\n"

dhcp-host=set:ant1-prt, prt-ant1, 10.33.57.151

C’est une imprimante qui n’a pas besoin d’accéder à Internet, sa route par défaut est donc le routeur du réseau interne.

Cette configuration fonctionne très bien, mais nous avons acheté de nouveaux matériels qui ne gèrent pas non plus l’option classless-static-route et qui ont également besoin d’accéder au réseau interne, mais pas à Internet. Ce sont des Wyses de Dell.
Ces appareils sont facilement identifiables car il sont un identifiant constructeur dans leur adresse matérielle et et une classe de vendeur : wyse-1000.
Pour le moment, j’ai réussi à faire correspondre des paramètres différents en mettant les adresses matérielles des machines concernées :

dhcp-option=ant1-wyse, option:router, 10.33.57.252
dhcp-option=ant1-wyse, 165, "wms.example.com:443"
dhcp-option=ant1-wyse, 166, "wms.example.com:1883"
dhcp-option=ant1-wyse, 167, "TRUE"
dhcp-option=ant1-wyse, 199, "iden-wyse-wms-ant1"
dhcp-option=ant1-wyse, 252, "\n"

dhcp-host=set:ant1-wyse, b0:7b:25:00:00:01,b0:7b:2500:00:02,64:bc:58:00:00:01,b0:7b:25:00:00:03

Mais, comme vous pouvez le remarquer, c’est un peu chiant (et je n’en ai que quatre là, en vrai, il y en a une cinquantaine et les utilisateur n’ont pour interdiction de connecter leur machine où ils veulent, et ces machines ont des stations d’accueil et une carte Wifi, ce que j’ai fait, en vrai, trois adresses par machine).

J’ai déjà essayé plusieurs itérations pour prendre globalement tous les matériels concernés, mais soit aucun appareil ne se retrouve avec la configuation pour les Wyses, soit tous l’ont. J’ai même eu une itération où tous les appareils de tous les réseaux avaient les paramètres des Wyses de cette antennes.
La configuration évidente

dhcp-host=set:ant1-wyse, b0:7b:25:*

ne fonctionne pas sans que je ne sache vraiment pourquoi.

Quelqu’un a une idée ?

Bonjour,
Pourquoi fait tu faire du routage global complexe pour les postes de travail, imprimantes etc…
Peut etre pourrait tu metrre ton routeur interne comme routeur par défaut, puis c’est le routeur interne qui ensuite se charge de router vers internet ou de router en central.

Un host doit toujrosu avoir un routage le plus simple possible, et laisser faire le routage complexe par un routeur. L’avantage, ça te simplifie la configuration des postes d’une part, et tu n’as qu’un seul endroit ou les routages complexes sont déployés, et c’est ainsi plus simple à maintenir.
Et ça donne une meilleure résilience aux évolutions.

Non, car je n’ai pas la main sur ce routeur, je ne peux pas lui indiquer quoi faire des paquets à destination de l’Internet. C’est à cause de ça que je me retrouve avec deux routeurs sur ces antennes.

Le second routeur (i.e.: internet) est dans ton périmètre? tu as la main dessus?
Auquel cas, c’est lui que tu utilise comme routeur par défaut dans ce cas ou tu es obligé de passer par l’interne avant d’aller sur internet?

Ben, en fait, oui, mais c’est un peu plus compliqué.
Ce routeur est en place pour donner un accès à Internet. Pour ce faire, il passe par le routeur qui donne accès au réseau interne.
En vrai, les Wyses sont actuellement en production et leur connexion passe par ce routeur, ce qui pose problème quand celui-ci ne fonctionne pas.

De tout façon, ma question ne concerne pas l’infrastructure du réseau, mais la configuration de dnsmasq.

Ce qui est en fait le moyen de contourner le fait que tu ne peux pas faire le travail normalement au niveau de la couche fonctionnelle réseau.

À la base, j’ai accepté ce boulot parce que l’infra réseau était une plaie, et j’adore les défis.
Aujourd’hui, le réseau est un peu plus classique, il y a des petites bizarreries de genre qui traînent encore ça et là et avec lesquelles le service informatique doit composer.

Là, le but, c’est d’éviter qu’un routeur qui utilise un autre routeur qui sert à autre chose ne serve de routeur pour ce qui est déjà fait par l’autre routeur. Plus c’est simple, moins ça déconne.
Avec ce que j’ai à disposition, les configurations que je veux faire sont les plus simples et évitent d’avoir un SPoF totalement inutile (et qui pose déjà problème).

Voilà où j’en suis.

1 J'aime

Bonjour,

Le fichier de configuration exemple pour dnsmasq.conf semble montrer la mise en place d’un jeu / set de machines selon l’option vendorclass fournie par le client :

dnsmasq.conf.example
( chercher « dhcp-vendorclass=set:red,Linux » )

Est-ce que c’est quelque-chose que tu pourrais utiliser ?

Le serveur DHCP de l’ISC semble plus flexible que dnsmasq pour faire ce genre de choses mais je suis confiant sur le fait que cela reste possible avec dnsmasq.

Question pour la curiosité : il y a un serveur DHCP sur chaque site géographique ou est-ce qu’il y a un serveur DHCP principal sur un seul site géographique vers lequel les requêtes des clients sont toutes poussées au travers de VPN ?


AnonymousCoward

Ben, en fait, je ne pensais pas que c’était une bonne idée, mais je viens de comprendre comment fonctionne dnsmasq en lisant un peu plus le manuel.
Voici donc la configuration que je fais maintenant.
En global, en haut du fichier de configuration, je définis

dhcp-vendorclass=set:wyse,	wyse-1000

et pour l’antenne en particulier

dhcp-range=ant1, 10.33.57.1, 10.33.57.149, 255.255.255.0, 30m
dhcp-option=ant1, option:router, 10.33.57.250
dhcp-option=ant1, option:classless-static-route, 10.33.50.0/24, 10.33.57.252, 10.33.51.0/24, 10.33.57.252, 10.33.52.0/24, 10.33.57.252, 10.33.53.0/24, 10.33.57.252, 10.33.54.0/24, 10.33.57.252, 10.33.59.0/24, 10.33.57.252, 10.33.60.0/24, 10.33.57.252, 10.200.20.0/24, 10.33.57.252
dhcp-option=ant1-intonly, option:router, 10.33.57.252
dhcp-option=ant1-wyse, 165, "wms.example.com:443"
dhcp-option=ant1-wyse, 166, "wms.example.com:1883"
dhcp-option=ant1-wyse, 167, "TRUE"
dhcp-option=ant1-wyse, 199, "iden-wyse-wms-ant1"

dhcp-host=set:ant1-intonly,		prt-ant1,					10.33.57.151

tag-if=set:ant1-wyse, set:ant1-intonly, tag:wyse, tag:ant1

En fait, les Wyses ont une étiquette wyse, et celles de l’antenne ant1 se retrouvent avec la route en interne seule avec l’étiquette ant1-intonly et la configuration Wyse avec l’étiquette ant1-wyse.

Merci à @Zargos et @AnonymousCoward pour leur aide.

1 J'aime