Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

isc-dhcp-server pousser des routes statiques

Aucune réponse
Avatar
Droopy191
Bonjour,

Ne pouvant pas ajouter des routes statiques sur ma passerelle ( une
freebox), je tente de fournir les routes statiques additionelles au
niveau de mon serveur dhcp.

contexte: Debian jessie avec isc-dhcp-server qui marche très bien par
ailleurs
http://thomasjaehnel.com/blog/2010/01/pushing-routes-via-dhcp.html

réseau 192.168.10.0/24 et passerelle par défaut 192.168.10.1
et un réseau de destination 192.16.2.0/24 avec une passerelle de routage
sur 192.168.10.10
J'ajoute l'option seule suivante
option static-routes 192.168.2.0 192.168.10.10;

Ca marche correctement sur un client Debian strech avec networkmanager.
La route est bien ajoutée dans la table de routage.



Par contre, pas moyen d'y arriver sur un client sous jessie avec
dhclient, ou un client sous Windows 7.

avec cette config:

option static-routes 192.168.2.0 192.168.10.10;

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

option rfc3442-classless-static-routes 24, 192, 168, 2, 0, 192, 168, 10,
10, 0, 192, 168, 10, 1 ;
option ms-classless-static-routes 24, 192, 168, 2, 192, 168, 10, 10 ;


le client windows me renvoie
"Configuration IP de Windows

Une erreur s'est produite lors du
eau local : Données non valides."


Je doit mal comprendre la syntaxe...
Merci pour votre aide.


cdlt

--
DR

4 réponses

Avatar
Benoit Izac
Bonjour,

Le 05/01/2016 à 21:17, Droopy a écrit dans le message
<568c24e2$0$3881$ :

option static-routes 192.168.2.0 192.168.10.10;

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

option rfc3442-classless-static-routes 24, 192, 168, 2, 0, 192, 168,


^^^
Le zéro est en trop car tu a un masque sur 24 bits (3 octets).

10, 10, 0, 192, 168, 10, 1 ;



Tu indiques ici une route par défaut via 192.168.10.1

option ms-classless-static-routes 24, 192, 168, 2, 192, 168, 10, 10 ;



Là par contre ça me semble correct : utiliser 192.168.10.10 pour joindre
192.168.2.0/24.

Ce qui est étrange c'est que ça devrait fonctionner avec Microsoft
(option code 249) mais pas avec Linux (option code 121)

Sinon, tu devrais virer
option static-routes 192.168.2.0 192.168.10.10;
car c'était utilisé du temps où les réseaux avaient des classes.

La définition des options est décrite dans dhcp-options(5) sous
« DEFINING NEW OPTIONS ».

La syntaxe pour les routes statiques sans classe est décrite dans le RFC
<http://www.ietf.org/rfc/rfc3442.txt>.

Un trace tcpdump ou wireshark aiderait pour savoir ce qui est réellement
envoyé au client.

--
Benoit Izac
Avatar
Droopy191
Le 06/01/2016 19:44, Benoit Izac a écrit :
Bonjour,


Bonjour,

Le 05/01/2016 à 21:17, Droopy a écrit dans le message
<568c24e2$0$3881$ :

option rfc3442-classless-static-routes 24, 192, 168, 2, 0, 192, 168,


^^^
Le zéro est en trop car tu a un masque sur 24 bits (3 octets).


Ok c'était bien l'erreur de syntaxe
J'avais compris optionnel dans la doc trouvée

10, 10, 0, 192, 168, 10, 1 ;



Tu indiques ici une route par défaut via 192.168.10.1


oui,
car sans ca, sous Debian, dhclient perds la route par défaut ( donnée
par ailleurs par le dhcp ).
Mais networkmanager peut faire sans !



Sinon, tu devrais virer
option static-routes 192.168.2.0 192.168.10.10;
car c'était utilisé du temps où les réseaux avaient des classes.


ok, et validé cela marche en effet sans cela


Un trace tcpdump ou wireshark aiderait pour savoir ce qui est réellement
envoyé au client.



Pas encore suffisamment à l'aise avec ces outils pour faire du débogage ;)


Voici ce que retiens et que j'ai pu testé
Ce semble cependant un peu aléatoire en fonction du client dhcp

# options pour route statique clients DHCP linux et Windows > 7
# vers réseau 192.168.2.0/24 -> 24, 192, 168, 2,
# Il faut préciser(répéter ) la passerelle par défaut pour éviter
l'écrasement de celle-ci pour linux avec dhclient
# ici -> 0, 192, 168, 10, 1 ;
option rfc3442-classless-static-routes code 121 = array of integer 8;
option rfc3442-classless-static-routes 24, 192, 168, 2, 192, 168, 10,
10, 0, 192, 168, 10, 1 ;


# config spécifique aux clients MS windows XP et Vista
option ms-classless-static-routes code 249 = array of integer 8;
option ms-classless-static-routes 24, 192, 168, 2, 192, 168, 10, 10, 0,
192, 168, 10, 1 ;



Merci pour votre aide.

--
DR
Avatar
Benoit Izac
Bonjour,

Le 07/01/2016 à 15:00, Droopy a écrit dans le message
<568e6f94$0$650$ :

Une trace tcpdump ou wireshark aiderait pour savoir ce qui est
réellement envoyé au client.



Pas encore suffisamment à l'aise avec ces outils pour faire du
débogage ;)



Ça vaut le coup d'investir un peu de temps car ils sont utiles quelque
soit le protocole. Wireshark est assez simple à prendre en main, il
suffit de lancer la capture sur une ou plusieurs interfaces, de filtrer
sur le protocole DHCP et de regarder les trames d'échange entre le
serveur et le client. Si le serveur n'a pas d'interface graphique, il
faut effectuer une capture avec :
tcpdump -i eth0 -s0 -w /tmp/capture
puis d'envoyer /tmp/capture sur une machine avec Wireshark pour la lire
et l'analyser.

Voici ce que retiens et que j'ai pu testé
Ce semble cependant un peu aléatoire en fonction du client dhcp



Peux-tu préciser ce que tu entends pas « aléatoire » ?

--
Benoit Izac
Avatar
Droopy191
Le 08/01/2016 17:00, Benoit Izac a écrit :
Bonjour,

Le 07/01/2016 à 15:00, Droopy a écrit dans le message
<568e6f94$0$650$ :

Une trace tcpdump ou wireshark aiderait pour savoir ce qui est
réellement envoyé au client.



Pas encore suffisamment à l'aise avec ces outils pour faire du
débogage ;)



Ça vaut le coup d'investir un peu de temps car ils sont utiles quelque
soit le protocole. Wireshark est assez simple à prendre en main, il
suffit de lancer la capture sur une ou plusieurs interfaces, de filtrer
sur le protocole DHCP et de regarder les trames d'échange entre le
serveur et le client. Si le serveur n'a pas d'interface graphique, il
faut effectuer une capture avec :
tcpdump -i eth0 -s0 -w /tmp/capture
puis d'envoyer /tmp/capture sur une machine avec Wireshark pour la lire
et l'analyser.



Oui, certaines machines sans écrans.
Merci pour le conseil

Voici ce que retiens et que j'ai pu testé
Ce semble cependant un peu aléatoire en fonction du client dhcp



Peux-tu préciser ce que tu entends pas « aléatoire » ?




J'ai fait qq essais supplémentaires rapides sur du live cd: debian live
, installeur, par ex, et les routes n'étaient pas prise en compte.



--
DR