ISC DHCP – Configuration avancée

untitled2

ISC DHCP est une implémentation Open Source du protocole DHCP (Dynamic Host Configuration Protocol), sous licence ISC License, écrite à l’origine par Ted Lem, sous contrat avec Vixie Labs, et dont le projet fut financé par l’Internet Systems Consortium (ISC).
La version 1 vit le jour en décembre 1997; elle ne comportait que la version serveur.
La version 2, de juin 1999, ajouta la partie cliente et l’agent de relais BOOTP/DHCP.
La version 3, sortie en octobre 2001 et financée par Nominum Inc., comportait de nombreux ajouts : support de la redondance pour la continuité de service, OMAPI, Dynamic DNS, le comportement conditionnel, la division des clients en classes, et bien plus encore…
La version 4, la dernière en date, sortie en décembre 2007, ajoutait enfin le support de l’IPv6 pour les parties cliente et serveur.

 
 

Objectif

 

L’objectif de cet article est l’approfondissement de la configuration d’un serveur DHCP utilisant l’implémentation ISC DHCP, sur une distribution Linux Debian Jessie 8.4 32bits.

 

Pré-requis

 

Pré-requis avant réalisation

  • Un serveur DHCP primaire (master) fonctionnel et utilisant ISC DHCP
  • Un serveur DNS master fonctionnel pour les paramètres relatifs à la mise à jour DNS dynamique
  • Un serveur DHCP secondaire (slave) fonctionnel et utilisant ISC DHCP pour les paramètres relatifs au failover
  • Packages de base supplémentaires : sudo, resolvconf
  • Domaine utilisé : opensharing.priv

 

Configuration réseau initiale

 
Configuration minimale par défaut du service ISC DHCP à l’installation :

ddns-update-style none;
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

 

Réalisation

 

Notes générales

 

Les paramètres globaux

Les paramètres globaux s’appliquent à l’ensemble de la configuration DHCP et donc à toutes les déclarations qui suivent, sauf si ces dernières comportent des paramètres de même nom, auquel cas la spécificité de ces derniers l’emporte en termes de priorité.
Ci-dessous, le paramètre deny unknown-clients ne s’applique qu’au deuxième pool car le premier se voit attribué une autre valeur prioritaire.

authoritative;
ddns-update-style standard;
update-static-leases off;
deny unknown-clients
[...]
subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		parametres specifiques au pool;
		range 192.168.1.100 192.168.1.150;
		allow unknown-clients;
		[...]
	}
	pool {
		parametres specifiques au pool;
		range 192.168.1.151 192.168.1.199;
		[...]
	}
}

 

 

Les différentes déclarations

Une déclaration est un ensemble pouvant contenir des paramètres spécifiques et d’autres déclarations.
Les valeurs des paramètres spécifiés dans une déclaration remplacent les paramètres de même non situés en amont dans la configuration.
 
Dans le fichier de configuration DHCP nommé /etc/dhcp/dhcpd.conf nous pouvons trouver plusieurs types de déclarations :

  • subnet
  • host
  • class
  • pool
  • group
  • failover
  • zone
  • shared-network

 

La déclaration subnet :

Elle spécifie le sous-réseau dont le serveur DHCP a la charge quant à l’attribution de configurations réseaux à destination de clients DHCP.
On trouvera donc un subnet par LAN/VLAN que gère ce serveur.

parametres globaux;
[...]
subnet 192.168.1.0 netmask 255.255.255.0 {
	parametres specifiques au subnet;
	[...]
	declaration {
		parametres specifiques a la declaration;
	}
	[...]
}

 

La déclaration host :

Elle déclare un hôte afin de lui spécifier une configuration particulière avec des paramètres spécifiques, comme une adresse IP fixe (paramètre fixed-address) ne faisant pas partie d’un pool d’adresses IP défini (destinées, elles, à l’allocation dynamique et non aux réservations).
Un hôte est identifié par son adresse MAC unique (paramètre hardware ethernet).
Le paramètre deny unknown-clients dans un subnet rejette les hôtes non connus, c’est à dire qu’aucune déclaration host ne les identifie.
Le nom spécifié est celui qui sera envoyé au client comme hostname, toutefois la majorité des clients DHCP n’en tiennent pas compte.
Client connu avec IP statique (réservation) :

host printer1 {
	hardware ethernet 01:23:45:00:00:01;
	fixed-address 192.168.1.200;
	[...]
}

Client connu avec IP dynamique :

host printer1 {
	hardware ethernet 01:23:45:00:00:01;
	[...]
}

 

La déclaration class :

Les hôtes peuvent être regroupés en classes sur lesquelles s’exerceront certaines actions ou options.
Cette distinction d’hôtes s’effectuent de diverses manières, comme des conditions ou des correspondances.
Une classe peut contenir des sous-classes. De manière générale, et parce que je ne suis pas assez documenté pour cela, une subclass permet de créer une instance d’une classe, sur laquelle on pourra éventuellement agir en lui spécifiant des paramètres.
Les conditions peuvent être conjuguées avec des opérateurs or ou and.

class "name" {
	match if (cond1 or cond2 and cond3);
	parametres specifiques a la classe;
}

subnet ... {
	pool {
		parametres specifique au pool;
		[...]
		allow members of "name";
	}
}
class "name" {
	match parametreX;
	parametres specifiques a la classe;
}

subclass "name" parametreX_inst1 { parametres specifiques a l'instance; }
subclass "name" parametreX_inst2 { parametres specifiques a l'instance; }

subnet ... {
	pool {
		parametres specifique au pool;
		[...]
		allow members of "name";
	}
}
class "konica" {
	match if binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:00:20:6B";
}
OU
class "konica" {
	match if (substring(hardware, 0, 4) = 01:00:20:6B);
}
OU
class "konica" {
	match if binary-to-ascii (16,8,":",substring(hardware, 1, 3)) = "00:20:6B";
}
OU
class "konica" {
	match if (substring(hardware, 1, 3) = 00:20:6B);
}

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		parametres specifiques au pool;
		range 192.168.1.100 192.168.1.150;
		allow members of "konica";
		[...]
	}
}
class "konica" {
	match hardware;
}

subclass "konica" 1:00:20:6B:01:CB:12;
subclass "konica" 1:00:20:6B:08:05:AF;


subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		parametres specifiques au pool;
		range 192.168.1.100 192.168.1.150;
		allow members of "konica";
		[...]
	}
}
class "konica" {
	match pick-first-value (option dhcp-client-identifier, hardware);
}

subclass "konica" 1:00:20:6B:01:CB:12;
subclass "konica" 1:00:20:6B:08:05:AF;


subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		parametres specifiques au pool;
		range 192.168.1.100 192.168.1.150;
		allow members of "konica";
		[...]
	}
}

Rmq : Le préfixe 1 dans les adresses MAC signifie Ethernet (le 6 signifie Token-Ring), c’est une convention à respecter pour les identifier avec l’opérateur hardware.
 
match if binary-to-ascii (16,8,":",substring(hardware, 0, 4))
Evalue l’adresse MAC binaire (8 bits + 48bits), avec un offset de 0 octet (donc du début de l’adresse, avec le préfixe), jusqu’à 4 octets, le résultat étant coupé en groupe de 8 bits (en octets) convertit chacun en base 16 et séparés par deux points. Le résultat est une chaine de caractères.
match if (substring(hardware, 0, 4)
Evaluation plus courte consistant à récupérer 4 octets en partant du début depuis l’adresse MAC préfixée. Le résultat n’est pas une chaine de caractères.
subclass "konica" 1:00:20:6B:01:CB:12
L’hôte ayant l’adresse MAC spécifié est membre de la classe konica.
match pick-first-value (option dhcp-client-identifier, hardware)
Retourne la première valeur non nulle à partir de la liste d’arguments.
 

La déclaration pool :

Permet de déclarer un intervalle d’adresses IP auxquelles s’appliquent des droits particuliers.
Plusieurs déclarations de type pool permettent de spécifier plusieurs intervalles inclus dans le subnet en question.

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		parametres specifiques au pool;
		range 192.168.1.100 192.168.1.150;
		allow unknown-clients;
		[...]
	}
	pool {
		parametres specifiques au pool;
		range 192.168.1.151 192.168.1.199;
		deny unknown-clients;
		[...]
	}
	pool {
		parametres specifiques au pool;
		range 192.168.1.200 192.168.1.250;
		allow members of "printers";
		[...]
	}
	[...]
}

 

La déclaration group :

Permet de créer des subdivisions, des sous-ensembles, auxquels s’appliquent des paramètres spécifiques.
Une déclaration group peut inclure toutes les autres déclarations.

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	group {
		parametres specifiques au group;
		[...]
		host printer1 {
			hardware ethernet 01:23:45:00:00:01;
			fixed-address 192.168.1.200;
			[...]
		}
		host printer1 {
			hardware ethernet 01:23:45:00:00:01;
			fixed-address 192.168.1.201;
			[...]
		}
	}
}

 

La déclaration failover :

Permet de définir un failover pour la redondance du service DHCP entre un serveur master et un serveur slave.
Cette déclaration doit être sur les deux serveurs, hormis les paramètres mclt et split, spécifiques au serveur DHCP master.

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30; 
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 

La déclaration zone :

Permet de configurer la mise à jour DNS dynamique en précisant des paramètres spécifiques à une zone définie sur le serveur DNS.
On y précise par exemple la clef TSIG utilisée pour la mise à jour et permettant d’authentifier et sécuriser cette transaction.

zone opensharing.priv {
	primary 192.168.1.11;
	key "tsig-key";
}

zone 1.168.192.in-addr.arpa. {
	primary 192.168.1.11;
	key "tsig-key";
}

 

La déclaration shared-network :

Regroupe plusieurs zones subnet lorsque ceux-ci concernent le même réseau physique.
Cette déclaration ne s’utilise pas dans la majorité des cas, où un relai DHCP opère.
Le nom du shared-network est arbitraire.

parametres globaux;
[...]
shared-network opensharing {
	option domain-name "opensharing.priv";
	option domain-name-servers dns1.opensharing.priv, dns2.opensharing.priv;
	option routers 192.168.1.1;
	[...]
	subnet 192.168.1.0 netmask 255.255.255.0 {
		[...]
		range 192.168.1.100 192.168.1.150;
		allow unknown-clients;
		[...]
	}
	subnet 10.10.1.0 netmask 255.255.255.0 {
		[...]
		range 10.10.1.100 10.10.1.150;
		allow members of "wificlients";
		[...]
	}
}

 

Les inclusions

Permet d’inclure le contenu d’un fichier, de telle sorte qu’il est chargé dans la configuration DHCP comme si son contenu était directement partie intégrante de celle-ci.
Ci-dessous, la définition de la clef TSIG contenue dans le fichier /etc/bind/tsig.key est incluse dans le fichier /etc/dhcp/dhcpd.conf pour être reprise par les deux déclarations de zone.

include "/etc/bind/tsig.key";

zone opensharing.priv {
	primary 192.168.1.11;
	key "tsig-key";
}

zone 1.168.192.in-addr.arpa. {
	primary 192.168.1.11;
	key "tsig-key";
}

 

Les conditions

Il est possible de mettre en place une structure conditionnelle, comme sous n’importe quel langage de programmation comme Python ou les script Shell, respectant l’algorithmique classique : if elsif else avec les opérateurs =, not, or, and, exists, know et static.
Ceci est très peu documenté sur le net, il faut alors se tourner vers la page de manuel officielle de dhcp-eval(5).

if parametreX = "valeur1" {
	parametreY;
	parametreZ;
	[...]
} elsif parametreX = "valeur2" {
	parametreY;
	parametreZ;
	[...]
} else {
	parametreY;
	parametreZ;
	[...]
}  

Ces conditions répétitives peuvent être remplacées par un switch-case

switch (parametreX)
{
	case "valeur1":
		parametreY;
		parametreZ;
		[...]
		break;
	case "valeur2":
		parametreY;
		parametreZ;
		[...]
		break;
	default:
		parametreY;
		parametreZ;
		[...]
		break;
}

 


 

authoritative

[not] authoritative
  • Le serveur fait autorité pour délivrer des adresses IP pour l’ensemble des réseaux spécifiés par la suite.
  • Sans ce paramètre, le serveur ne peut pas envoyer de paquet DHCP de type DHCPNAK afin de signaler à un client procédant à un DHCPREQUEST que sa configuration réseau est mauvaise, que l’adresse IP demandée est utilisée par un autre ordinateur ou encore que l’adresse demandée n’appartient par aux sous-réseaux dont le serveur fait autorité.
  • Sa converse est not authoritative, signalant que le serveur ne fait pas autorité pour un sous-réseau particulier.

Rmq : Généralement définie comme option globale, mais peut être définie pour l’ensemble des subnets d’un shared-network (sous-réseaux partageant un même réseau physique) ou pour un subnet hors shared-network. Toutefois, cela n’aurait pas de sens de spécifier ce paramètre uniquement pour un subnet d’un shared-network et pas pour les autres sachant que l’ensemble des subnets sont liés à la même interface physique.

 


 

client-updates

allow|ignore client-updates

Voir aussi : use-host-decl-names et option domain-name

  • Si ignore, seul le serveur DHCP est autorisé à mettre à jour les enregistrements DNS. Il crée un enregistrement de type A et un enregistrement de type PTR en utilisant le nom d’hôte fourni par le client et en le concaténant au domaine défini par le paramètre option domain-name
  • Prenons l’exemple du client DHCP dont le FQDN est linux1.example.com :

    linux1.opensharing.priv		A	192.168.1.150				# zone DNS directe
    192.168.1.150			PTR	linux1.opensharing.priv			# zone DNS inverse
    
  • Si allow, le serveur DHCP ne crée qu’un enregistrement de type PTR et utilise le FQDN fourni par le client même si ce dernier n’appartient pas au domaine défini par le paramètre option domain-name
  • Par défaut, ce paramètre est à allow
    Prenons l’exemple du client DHCP dont le FQDN est linux1.example.com :

    192.168.1.150			PTR	linux1.example.com			# zone DNS inverse
    

 


 

db-time-format

db-time-format default|local
  • Définit le système d’heure utilisée pour l’affichage des baux clients dans le fichier /var/lib/dhcp/dhcpd.leases
  • L’option default utilisera le système UTC
  • L’option local utilisera l’heure système du serveur DHCP ayant attribué le bail
  • Par défaut, sa valeur est à default, donc les baux apparaissent en UTC, avec le décalage que cela implique

 


 

ddns-domainname

ddns-domainname zone

Voir aussi : ddns-rev-domainname

  • Paramètre relatif à la mise à jour dynamique du DNS
  • Définit la zone DNS directe où seront enregistrés les clients DHCP en concaténant le nom d’hôte qu’ils communiquent au serveur dans leurs messages DHCPDISCOVER ou DHCPREQUEST avec le nom de domaine défini par le paramètre option domain-name
  • Si le client ne fournit pas de hostname, le serveur en générera un par un algorithme qui lui est propre

 

subnet ... {
	[...]
	ddns-domainname "opensharing.priv"; 
	[...]
}

zone opensharing.priv {
	primary 192.168.1.11;
	key "tsig-key";
}

 


 

ddns-rev-domainname

ddns-rev-domainname reverse-zone

Voir aussi : ddns-domainname

  • Paramètre relatif à la mise à jour dynamique du DNS
  • Définit la zone DNS inverse où seront enregistrés les clients DHCP en concaténant le nom d’hôte qu’ils communiquent au serveur dans leurs messages DHCPDISCOVER ou DHCPREQUEST avec le nom de domaine défini par le paramètre option domain-name
  • Si le client ne fournit pas de hostname, le serveur en générera un par un algorithme qui lui est propre

 

subnet ... {
	[...]
	ddns-rev-domainname "in-addr.arpa";; 
	[...]
}

zone 1.168.192.in-addr.arpa. {
	primary 192.168.1.11;
	key "tsig-key";
}

Spécifie la zone de recherche inversée où devront être enregistrés les FQDN des clients DHCP de ce sous-réseau dans le cadre de la mise à jour dynamique du DNS. En fait, ce suffixe sera concaténé à l’adresse IP inversée affectée au client. Par exemple, pour un client d’IP 192.168.1.150, le bail produira la valeur :

set ddns-rev-name = "150.1.168.192.in-addr.arpa";

Donc, si nous choisissons intuitivement une valeur ddns-domainname "1.168.192.in-addr.arpa, nous obtiendrons un enregistrement PTR erroné :

set ddns-rev-name = "150.1.168.192.1.168.192.in-addr.arpa";

 

ddns-updates

ddns-updates on|off

Voir aussi : ddns-update-style

  • Active ou désactive la mise à jour dynamique pour un sous-réseau
  • N’est généralement pas utilisé globalement
  • Paramètre généralement utilisé pour désactiver la mise à jour dynamique d’un sous-réseau particulier
  • Ce paramètre pourrait être omis, s’il s’agit d’activer la mise à jour dynamique, car il est à on par défaut
  • Pour activer ou désactiver globalement les mises à jour dynamiques, utiliser le paramètre ddns-update-style

 

[...]
ddns-update-style standard;
[...]

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
}

subnet 10.10.0.0 netmask 255.255.0.0 {
	[...]
	ddns-updates off;
	[...]
}

 


 

ddns-update-style

ddns-update-style ad-hoc|interim|standard|none

Voir aussi : ddns-updates

  • Option globale utilisée pour activer ou désactiver globalement les mises à jour dynamique du DNS pour l’ensemble des sous-réseaux dont le serveur fait autorité
  • Par défaut, ce paramètre est à none donc les mises à jour DNS sont désactivées
  • La différence entre interim et standard est ténue, l’option standard étant plus récente et préférable
  • L’option ad-hoc est obsolète
  • En résumé, utiliser l’option none pour désactiver les MAJ DNS (mais c’est la valeur par défaut, donc redondant) ou standard pour les activer

 

[...]
ddns-update-style standard;
[...]

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
}

subnet 10.10.0.0 netmask 255.255.0.0 {
	[...]
	ddns-updates off;
	[...]
}

 


 

default-lease-time

default-lease-time time

Voir aussi : max-lease-time

  • Définit la durée, en secondes, du bail par défaut attribué aux clients DHCP
  • La durée à définir varie selon les besoins : durée courte si les clients changent souvent (ex : 1800 secondes), durée longue lorsque les clients sont toujours les mêmes, en entreprise par exemple (ex : 604800 secondes)

 


 

failover peer

failover peer name
  • Paramètre de niveau pool indiquant le failover défini en amont qui sera utilisé pour la redondance du service DHCP pour le pool correspondant
  • Sa valeur est le nom du failover défini, entre guillemets doubles

 

failover peer "opensharing-failover" {
        [...]
}

subnet .... {
	pool {
		failover peer "opensharing-failover";
		[...]
	}
}

 


 

load balance max seconds

load balance max seconds time
  • Paramètre de failover appliquable au master et au slave
  • Temps au bout duquel, si un client ne reçoit pas de réponse à son message de type DHCPDISCOVER ou DHCPREQUEST par un serveur DHCP, le serveur partenaire prend le relai et traite la demande de ce client
  • Sa valeur s’exprime en secondes
  • Les valeurs conseillées sont de 3 ou 5

 

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30; 
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 


 

log-facility

log-facility facility
  • Paramètre global indiquant un fichier de log de facility local, ou personnalisée, et de severity debug
  • Inclut, par défaut, tous les niveaux de log (emergency, alert, critical, error, warning, notification, informational, debug)
  • Par défaut, les logs DHCP seront envoyés sur /var/log/syslog
  • Prend comme valeur local0 à local7 (8 facilités locales, code 16 à 23)

 

log-facility local7;

 


 

max-response-delay

max-response-delay time

Voir aussi : max-unacked-updates

  • Paramètre de failover appliquable au master et au slave
  • Temps en secondes au bout duquel si un des serveurs ne reçoit pas de réponses de son partenaire la connexion sera considérée comme interrompue
  • Une valeur de 30 secondes est une valeur cohérente

 

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30; 
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 


 

max-unacked-updates

max-response-delay time

Voir aussi : max-response-delay

  • Paramètre de failover appliquable au master et au slave
  • Nombre maximal de messages BNDUPD (un bail a été attribué et doit être synchronisé avec le partenaire) que peut envoyer un des serveurs DHCP sans recevoir d’acquittement BNDACK (accusé de réception du bail attribué) de son partenaire. Si ce nombre est dépassé, le partenaire à l’initiative des messages BNDUPD considère la connexion interrompue
  • Une valeur de 10 est une valeur cohérente

 

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30;
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 


 

mclt

mclt time
  • Paramètre de DHCP failover propre au serveur master
  • Temps pendant lequel, suite à la défaillance d’un serveur DHCP et après son retour à un état fonctionnel, son partenaire assure malgré tout seul le rôle de serveur DHCP
  • Ce temps démarre au moment où le serveur défaillant, après son retour à la normale, a reçu de son partenaire une copie complète de la base de données (synchronisation) des baux attribués. Ce temps de basculement, transitoire, permet de s’assurer que les baux attribués par le serveur fonctionnel pendant la défaillance de son partenaire ont expiré
  • Ce paramètre signifie Maximum Client Lead Time et doit apparaitre uniquement dans la configuration du serveur DHCP master et non celle du slave
  • Ce paramètre prend pour valeur un temps en secondes. Une valeur cohérente sera comprise généralement entre 1800 s (30 min) et 3600 s (1h). Sa valeur doit être supérieure à default-lease-time

 

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30;
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 


 

option domain-name

option domain-name name

Voir aussi : option domain-name-servers, option subnet-mask et option routeurs

  • Définit le domaine par défaut qui sera attribué aux clients

 

subnet 192.168.1.0 netmask 255.255.255.0 {
        [...]
	option subnet-mask 255.255.255.0;
	option routers 192.168.1.1;
	option domain-name "opensharing.priv";
	option domain-name-servers dns1.opensharing.priv, dns2.opensharing.priv;
	[...]
}

 


 

option domain-name-servers

option domain-name-servers name(s)

Voir aussi : option domain-name, option subnet-mask et option routeurs

  • Définit les serveurs de noms par défaut qui seront attribués aux clients

 

subnet 192.168.1.0 netmask 255.255.255.0 {
        [...]
	option subnet-mask 255.255.255.0;
	option routers 192.168.1.1;
	option domain-name "opensharing.priv";
	option domain-name-servers dns1.opensharing.priv, dns2.opensharing.priv;
	[...]
}

 


 

option host-name

option host-name hostname

Voir aussi : use-host-decl-names

  • Spécifie, dans une déclaration de type host, le nom d’hôte qui devra être envoyé au client DHCP
  • Cette option est, la plupart du temps, ignorée par les clients
  • Pour un enregistrement statique, il est préférable d’enregistrer manuellement cet hôte dans le DNS via l’utilitaire nsupdate et d’utiliser l’option ignore client-updates

 

subnet ... {
        [...]
	group {
		[...]
		host printer1 {
			hardware ethernet 01:23:45:00:00:01;
			fixed-address 192.168.1.200;
			option host-name "printer1";
			[...]
		}
	}
}

 


 

option routers

option routers IP

Voir aussi : option domain-name, option domain-name-servers et option subnet-mask

  • Définit la passerelle par défaut qui sera attribuée aux clients

 

subnet 192.168.1.0 netmask 255.255.255.0 {
        [...]
	option subnet-mask 255.255.255.0;
	option routers 192.168.1.1;
	option domain-name "opensharing.priv";
	option domain-name-servers dns1.opensharing.priv, dns2.opensharing.priv;
	[...]
}

 


 

option subnet-mask

option subnet-mask IP

Voir aussi : option domain-name, option domain-name-servers et option routers

  • Définit le masque de sous-réseau par défaut qui sera attribué aux clients

 

subnet 192.168.1.0 netmask 255.255.255.0 {
        [...]
	option subnet-mask 255.255.255.0;
	option routers 192.168.1.1;
	option domain-name "opensharing.priv";
	option domain-name-servers dns1.opensharing.priv, dns2.opensharing.priv;
	[...]
}

 


 

range

range intervalle
  • Paramètre de déclaration pool
  • Définit l’intervalle d’adresses IP attribuables aux clients DHCP : première IP -> dernière IP
  • Ces IP représentent une portion du sous-réseau dans lequel la déclaration pool est incluse

 

subnet 192.168.1.0 netmask 255.255.255.0 {
	[...]
	pool {
		range 192.168.1.100 192.168.1.150;
		[...]
	}
}

 


 

split

split indice
  • Paramètre de DHCP failover propre au serveur master
  • Valeur désignant la répartition de charge dans la redondance entre le master et le slave
  • Ce paramètre prend une valeur comprise entre 0 et 255, sachant que 128 correspond à une répartition équitable entre le master et le slave
  • Si cette valeur est supérieure à 128 alors le master aura une charge supérieure que le slave dans l’attribution de baux des clients

 

failover peer "opensharing-failover" {
        primary;
        address 192.168.1.11;
        port 647;
        peer address 192.168.1.12;
        peer port 647;
        max-response-delay 30;
        max-unacked-updates 10; 
        load balance max seconds 3;
        mclt 1800;
        split 128;
}

 


 

update-static-leases

update-static-leases on|off

Voir aussi : fixed-address

  • Active ou désactive la mise à jour dynamique des enregistrements à adresse IP fixe (réservation DHCP)
  • Par défaut, sa valeur est à off
  • Si désactivé, les enregistrements fixes doivent être ajoutés manuellement ou via nsupdate si les mises à jour dynamiques sont activées pour les autres enregistrements (ddns-update-style standard ou interim)
  • Il n’est pas recommandé de les activer
  • Si activé, le paramètre ddns-update-style doit être à standard ou interim

 


 

use-host-decl-names

use-host-decl-names true|false

Voir aussi : option host-name

  • Spécifie, dans une déclaration de type group, que le nom d’hôte déclaré après la directive host sera envoyé au client DHCP
  • Cette option est, la plupart du temps, ignorée par les clients
  • Pour un enregistrement statique, il est préférable d’enregistrer manuellement cet hôte dans le DNS via l’utilitaire nsupdate et d’utiliser l’option ignore client-updates

 

subnet ... {
        [...]
	group {
		[...]
		use-host-decl-names true;
		[...]
		host printer1 {
			hardware ethernet 01:23:45:00:00:01;
			fixed-address 192.168.1.200;
			[...]
		}
	}
}

 


 

Pour aller plus loin

 

Cas où le service DHCP utilise plusieurs interfaces (NIC)

 

Le service DHCP sert plusieurs LAN/VLAN en utilisant une interface par LAN/VLAN.

  • eth0 pour LAN2/VLAN2
  • eth1 pour LAN3/VLAN3
  • eth2 pour LAN3/VLAN3

 

Fichier /etc/network/interfaces :
# LAN2/VLAN2
allow-hotplug eth0
iface eth0 inet static
	address 192.168.1.11
	netmask 255.255.255.0
	[...]

# LAN3/VLAN3
allow-hotplug eth1
iface eth1 inet static
	address 10.10.10.11
	netmask 255.255.0.0
	[...]

# LAN4/VLAN4
allow-hotplug eth2
iface eth2 inet static
	address 172.16.1.11
	netmask 255.255.255.0
	[...]
Fichier /etc/default/isc-dhcp-server :
INTERFACES="eth0 eth1 eth2"
Fichier /etc/dhcp/dhcpd.conf :
# LAN2/VLAN2
subnet 192.168.1.0 netmask 255.255.255.0 {
        parametres
	[...]
}

# LAN3/VLAN3
subnet 10.10.0.0 netmask 255.255.0.0 {
        parametres
	[...]
}

# LAN4/VLAN4
subnet 172.16.1.0 netmask 255.255.255.0 {
        parametres
	[...]
}

 

Cas où certaines interfaces ne sont pas utilisées par le service DHCP

Si une des interfaces n’est pas utilisée par le service DHCP, alors il faut la retirer du fichier /etc/default/isc-dhcp-server

INTERFACES="eth1 eth2"

Par exemple, ci-dessus, nous avons retiré l’interface eth0.
Le fichier /etc/dhcp/dhcpd.conf contient alors un subnet par interface utilisée par le service DHCP

# LAN3/VLAN3 eth1
subnet 10.10.0.0 netmask 255.255.0.0 {
        parametres
	[...]
}

# LAN4/VLAN4 eth2
subnet 172.16.1.0 netmask 255.255.255.0 {
        parametres
	[...]
}

Toutefois, on peut laisser toutes les interfaces dans le fichier /etc/default/isc-dhcp-server, mais il faut alors inclure un subnet vide dans le fichier /etc/dhcp/dhcp.conf :

INTERFACES="eth0 eth1 eth2"
# LAN2/VLAN2 eth0
subnet 192.168.1.0 netmask 255.255.255.0 {}

# LAN3/VLAN3 eth1
subnet 10.10.0.0 netmask 255.255.0.0 {
        parametres
	[...]
}

# LAN4/VLAN4 eth2
subnet 172.16.1.0 netmask 255.255.255.0 {
        parametres
	[...]
}

 


 

Aller encore plus loin

Pour continuer à explorer la configuration de ISC DHCP, voir les articles suivants :

 

Annexes

PAPLxx : fait référence à un sujet développé dans la section Pour aller plus loin
 
 

Références

 

Fermer le menu
%d blogueurs aiment cette page :