Ceci est une ancienne révision du document !
DHCP
Ressources utiles:
- recap code d'option: https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml
- recap code d'option dnsmasq: https://github.com/imp/dnsmasq/blob/770bce967cfc9967273d0acfb3ea018fb7b17522/src/dhcp-common.c
- recap code d'option isc-dhcp-server: man dhcp-options
Tester un serveur DHCP
- test simple, comme un client standard:
dhclient -d -1 -pf /dev/null -lf /dev/null -sf /usr/bin/env <interface>
- test en changeant les options demandée:
- d'abord créer un fichier de conf basé sur
/etc/dhcp/dhclient.conf
- puis lancer
dhclient -d -1 -pf /dev/null -lf /dev/null -sf /usr/bin/env -cf <mon_dhclient.conf> <interface>
Exemple de fichier dhclient.conf:
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; # definition d'une encapsulation option space Connexio-all; option Connexio-all.contact-rcs code 3 = boolean; option Connexio-all.cfg-server-address code 2 = string; # redefinition de vendor-encapsulated-options avec celle definit ci dessus option vendor-encapsulated-options code 43 = encapsulate Connexio-all; option vlan-id code 132 = unsigned integer 16; send host-name = gethostname(); # se faire passer pour un telephone VoIP send vendor-class-identifier = "AastraIPPhone"; # soit ne rien demander de particulier (request;) #request; # soit demander specifiquement les options suivantes (les options non demandees risque d'etre ignoree par le serveur) request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, vlan-id, vendor-encapsulated-options; # pour alleger l'appel a dhclient (on peut enlever le -sf /usr/bin/env si on definit la ligne suivante) script "/usr/bin/env";
Config dnsmasq
- reconnaitre les hotes:
- sur l'adresse mac:
dhcp-mac=set:ip_phone,00:08:5d:*:*:*
- sur la vendor-class:
dhcp-vendorclass=set:ip_phone,AastraIPPhone
- appliquer une option dhcp en fonction d'une etiquette:
- avec le numero:
dhcp-option=tag:ip_phone,132,103
- avec le nom de l'option:
dhcp-option=tag:ip_phone,option:tftp-server,1.2.3.4
- options encapsulées:
- cas particulier de l'option 43
vendor-encapsulated-options
:dhcp-option=vendor:AastraIPPhone,3,0
→ option 43, sous option 3 valeur 0 seulement pour les client avec unvendorclass
(option 60) contenant la chaine “AastraIPPhone” - cas générique:
dhcp-option=encap:43,3,0
→ option 43, sous option 3, valeur 0 pour tout le monde (on peut preciser une autre option que 43) - cas generique + tag: equivalent de
vendor:
:dhcp-option=tag:ip_phone,encap:43,3,0
→ meme chose qu'au dessus mais seulement pour les tagip_phone
c'est a dire ceux dont levendroclass
contient “AastraIPPhone”