« DHCP : Mise à jour dynamique du DNS » : différence entre les versions

De Adadov.net wiki
(by SublimeText.Mediawiker)
 
(21 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{EnCours|auteur=Adadov}}
{{ArticleHead|Adadov}}
{{Auteur|Adadov}}
__TOC__
Le serveur DHCP est un élément indispensable de tout réseau informatique aujourd'hui. Il permet d'adresser dynamiquement tous les équipements actifs du réseau qui possèdent un client DHCP (en gros n'importe quel équipement de nos jours).
Le serveur DHCP est un élément indispensable de tout réseau informatique aujourd'hui. Il permet d'adresser dynamiquement tous les équipements actifs du réseau qui possèdent un client DHCP (en gros n'importe quel équipement de nos jours).


Ligne 25 : Ligne 23 :
Pour le moment les clients qui possèdent plusieurs interfaces sont gérés très difficilement, c'est à dire que seule la première interface qui fait sa requête DHCP obtiendra une entrée DNS, les autres obtiendront ... une erreur (et une IP). Il est prévu que dans de futurs versions ces cas soient gérés correctement.
Pour le moment les clients qui possèdent plusieurs interfaces sont gérés très difficilement, c'est à dire que seule la première interface qui fait sa requête DHCP obtiendra une entrée DNS, les autres obtiendront ... une erreur (et une IP). Il est prévu que dans de futurs versions ces cas soient gérés correctement.


== Configuration du serveur DHCP ==
== Création de la clé TSIG ==
 
Voici les parties qui nous intéressent dans le fichier de configuration du serveur DHCP {{fname|dhcpd.conf}} :
 
<file>
key DHCP_UPDATER {
algorithm HMAC-MD5;
        secret <LACLEVIENTICI>;
};
 
subnet 192.168.0.0 netmask 255.255.255.0 {
[...]
domain-name "exemple.loc";
ddns-updates on;
ignore client-updates;
default-lease-time 86400;
}
 
ddns-update-style interim;
 
zone exemple.loc. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
 
zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
</file>
 
=== Création de la clé TSIG ===


Afin de sécuriser les mises à jour, une clé {{abbr|TSIG|Transaction SIGnature}} sera utilisée (Pour plus d'infos : [[Wikipedia:TSIG]]).
Afin de sécuriser les mises à jour, une clé {{abbr|TSIG|Transaction SIGnature}} sera utilisée (Pour plus d'infos : [[Wikipedia:TSIG]]).
Ligne 62 : Ligne 29 :
Pour la générer :
Pour la générer :


{{LxTerm|user=root|text=dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER}}
{{LxTerm|user=root|text=tsig-keygen -a hmac-sha512 DHCP_UPDATER}}
{{AlTable
{{AlTable
|cols=2|row1header=yes|class=wikitable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col1align=center|col1width=175px
|col2width=250px|col2style=padding-left:10px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
|style1.2=padding-left:0.2em
| Paramètre
| Paramètre
| Description
| Description
| '''-a'''
| '''-a''' hmac-sha512
| Algorithme à utiliser
| Algorithme à utiliser
| '''-b'''
| DHCP_UPDATER
| Taille de la clé
| '''-n'''
| Type de propriétaire
| '''DHCP_UPDATER'''
| Nom de la clé
| Nom de la clé
}}
}}
Ligne 84 : Ligne 47 :


Le fichier en ''.private'' se présente comme ceci :
Le fichier en ''.private'' se présente comme ceci :
<file>
<syntaxhighlight lang=text>
Private-key-format: v1.2
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Algorithm: 157 (HMAC_SHA512)
Key: WoY0txiBiG+ZK22RjJN6AQ==
Key: WoY0txiBiG+ZK22RjJN6AQ==
Bits: AAA=
Bits: AAA=
</file>
</syntaxhighlight>


La ligne qui nous intéresse est celle qui commence par ''Key:'', la clé est tout le reste de la ligne.
La ligne qui nous intéresse est celle qui commence par ''Key:'', la clé est tout le reste de la ligne.


Et le bloc qui sera intégré dans la configuration se présente comme ceci :
Et le bloc qui sera intégré dans la configuration se présente comme ceci :
<file>
<syntaxhighlight lang=text>
key DHCP_UPDATER {
key DHCP_UPDATER {
algorithm HMAC-MD5;
algorithm HMAC-SHA512;
    secret <LACLEVIENTICI>;
secret <LACLEVIENTICI>;
};
};
</file>
</syntaxhighlight>


{{AlTable
{{AlTable
|cols=2|row1header=yes|class=wikitable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col1align=center|col1width=175px
|col2width=250px|col2style=padding-left:10px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
|style1.2=padding-left:0.2em
| Paramètre
| Paramètre
| Description
| Description
| '''key DHCP_UPDATER'''
| '''key''' DHCP_UPDATER
| Nom que l'on souhaite donner à la clé
| Nom que l'on souhaite donner à la clé
| '''algorithm HMAC-MD5'''
| '''algorithm''' HMAC-SHA512
| C'est l'algorithme utilisé pour générer la clé
| C'est l'algorithme utilisé pour générer la clé
| '''secret <LACLEVIENTICI>'''
| '''secret''' <LACLEVIENTICI>
| C'est la clé
| C'est la clé
}}
}}
== Configuration du serveur DHCP ==
Voici les parties qui nous intéressent dans le fichier de configuration du serveur DHCP {{fname|dhcpd.conf}}
<syntaxhighlight lang=text>
key DHCP_UPDATER {
algorithm HMAC-SHA512;
secret <LACLEVIENTICI>;
};
subnet 192.168.0.0 netmask 255.255.255.0 {
[...]
domain-name "exemple.loc";
ddns-updates on;
ignore client-updates;
default-lease-time 86400;
}
ddns-update-style interim;
zone exemple.loc. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
</syntaxhighlight>


=== Paramètrage du subnet ===
=== Paramètrage du subnet ===
Ligne 120 : Ligne 113 :
Pour chaque subnet il va falloir configurer quelques informations, ce qui permet d'activer ou non les mises à jour dynamique en fonction du subnet.
Pour chaque subnet il va falloir configurer quelques informations, ce qui permet d'activer ou non les mises à jour dynamique en fonction du subnet.


<file>
<syntaxhighlight lang=text>
subnet 192.168.0.0 netmask 255.255.255.0 {
subnet 192.168.0.0 netmask 255.255.255.0 {
[...]
[...]
Ligne 128 : Ligne 121 :
default-lease-time 86400;
default-lease-time 86400;
}
}
</file>
</syntaxhighlight>


{{AlTable
{{AlTable
|cols=2|row1header=yes|class=wikitable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col1align=center|col1width=175px
|col2width=250px|col2style=padding-left:10px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
|style1.2=padding-left:0.2em
| Paramètre
| Paramètre
| Description
| Description
| '''ddns-update'''
| '''ddns-update''' yes
| Active la mise à jour dynamique du DNS pour les clients de ce subnet
| Active la mise à jour dynamique du DNS pour les clients de ce subnet
| '''ignore client-updates'''
| '''ignore''' client-updates
| Désactive la prise en compte des demandes de mise à jour faites par le client
| Désactive la prise en compte des demandes de mise à jour faites par le client
| '''default-lease-time'''
| '''default-lease-time''' 86400
| C'est la durée par défaut du bail, elle n'est pas liée à la mise à jour dynamique mais nous sera utile pour le configuration du DNS
| C'est la durée par défaut du bail, elle n'est pas liée à la mise à jour dynamique mais nous sera utile pour le configuration du DNS
| '''domain-name'''
| '''domain-name''' exemple.loc
| Cette option n'est pas non plus liée à la mise à jour dynamique mais elle permettra de sélectionner la zone à mettre à jour
| Cette option n'est pas non plus liée à la mise à jour dynamique mais elle permettra de sélectionner la zone à mettre à jour
}}
}}
Ligne 149 : Ligne 142 :
=== Configuration de la mise à jour dynamique ===
=== Configuration de la mise à jour dynamique ===


<file>
<syntaxhighlight lang=text>
ddns-update-style interim;
ddns-update-style interim;
</file>
</syntaxhighlight>


{{AlTable
{{AlTable
|cols=2|row1header=yes|class=wikitable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col1align=center|col1width=175px
|col2width=250px|col2style=padding-left:10px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
|style1.2=padding-left:0.2em
| Paramètre
| Paramètre
Ligne 168 : Ligne 161 :
Pour finir il ne nous reste plus qu'à ajouter les informations pour joindre le serveur DNS de chaque zone à mettre à jour.
Pour finir il ne nous reste plus qu'à ajouter les informations pour joindre le serveur DNS de chaque zone à mettre à jour.


<file>
<syntaxhighlight lang=text>
zone exemple.loc. {
zone exemple.loc. {
primary 127.0.0.1;
primary 127.0.0.1;
Ligne 178 : Ligne 171 :
key DHCP_UPDATER;
key DHCP_UPDATER;
}
}
</file>
</syntaxhighlight>


{{AlTable
{{AlTable
|cols=2|row1header=yes|class=wikitable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col1align=center|col1width=175px
|col2width=250px|col2style=padding-left:10px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
|style1.2=padding-left:0.2em
| Paramètre
| Paramètre
| Description
| Description
| '''zone exemple.loc.'''
| '''zone''' exemple.loc.
| C'est le nom de la zone concernée au format DNS.
| C'est le nom de la zone concernée au format DNS.
| '''primary 127.0.0.1'''
| '''primary''' 127.0.0.1
| C'est l'adresse IP du serveur DNS
| C'est l'adresse IP du serveur DNS
| '''key DHCP_UPDATER'''
| '''key''' DHCP_UPDATER
| C'est le nom du bloc qui contient la clé TSIG à utiliser, ici DHCP_UPDATER
| C'est le nom du bloc qui contient la clé TSIG à utiliser, ici DHCP_UPDATER
}}
}}
Ligne 197 : Ligne 190 :
== Configuration du serveur DNS ==
== Configuration du serveur DNS ==


[[Category:SysAdmin|DHCP]]
La mise à jour du DNS quant à elle, est bien plus simple et rapide. La seule chose qu'il faut faire c'est, pour chacune des zones que le DHCP devra mettre à jour, autoriser notre clé générée plus haut à mettre à jour.
[[Category:Networking|DHCP]]
 
=== Ajout de la clé TSIG ===
 
Le bloc a ajouter dans la configuration est exactement le même que pour le DHCP, celui qui a eu cette idée est un génie !!
 
<syntaxhighlight lang=text>
key DHCP_UPDATER {
algorithm HMAC-SHA512;
secret <LACLEVIENTICI>;
};
</syntaxhighlight>
 
Pour plus d'infos reportez vous à la [[DHCP_:_Mise_à_jour_dynamique_du_DNS#Création_de_la_clé_TSIG|configuration du DHCP]].
 
=== Configuration des zones ===
 
{{Warn|On peut aussi utiliser des ACL pour les droits, mais on ne peut pas mélanger droits simples et ACL}}
 
<syntaxhighlight lang=text>
zone "exemple.loc" IN {
type master;
file "data/exemple.loc.zone";
allow-update { key DHCP_UPDATER; };
};
 
zone "0.168.192.in-addr.arpa" IN {
type master;
file "data/reverse.zone";
allow-update { key DHCP_UPDATER; };
};
</syntaxhighlight>
 
{{AlTable
|cols=2|row1header=yes|class=wikitable|fullwidth=yes
|col1align=center|col1width=175px
|col2width=450px|col2style=padding-left:10px
|style1.2=padding-left:0.2em
| Paramètre
| Description
| '''allow-update''' { key DHCP_UPDATER; }
| On spécifie qu'on autorise la mise à jour via une clé et le nom qu'on lui a donnée dans la configuration
}}
 
[[Catégorie:DHCP-DNS]]

Dernière version du 8 août 2023 à 18:18

Ecrit Par : Adadov

Le serveur DHCP est un élément indispensable de tout réseau informatique aujourd'hui. Il permet d'adresser dynamiquement tous les équipements actifs du réseau qui possèdent un client DHCP (en gros n'importe quel équipement de nos jours).

L'adressage dynamique montre par contre vite ses limites quand on souhaite retrouver ses équipements. C'est là que plusieurs solutions s'offrent à nous.

  • La réservation d'adresse qui permet de fixer pour un équipement donné une adresse qui ne changera donc jamais
  • La mise à jour automatique du DNS qui permet de s'assurer que le nom de l'équipement client est ajouté par le serveur DHCP lui même dans le DNS, avec l'adresse IP qui lui est attribué.

Présentation[modifier | modifier le wikicode]

La mise à jour automatique du DNS permet d'avoir des entrées DNS toujours à jour pour les clients dont les adresses sont attribuées dynamiquement par le serveur DHCP ce qui serait totalement impossible à faire manuellement.
Cette mise à jour se fait en configurant un lien privilégié entre le serveur DHCP et le serveur DNS. Le serveur DHCP recevra le nom de la machine lors de la requête initiale, il fait parti des options standard d'une requête DHCP, puis le transmettra au serveur DNS accompagné de la durée du bail et de l'adresse IP.

Cet article utilise les logiciels ISC DHCPD et ISC BIND. Il est probablement possible de le faire avec d'autres logiciels mais je vous laisse le plaisir de découvrir comment adapter ça.

Problématique liées à la mise à jour[modifier | modifier le wikicode]

Il serait bien sûr possible de réserver les adresses afin qu'elles ne changent pas et de mettre une bonne fois pour toutes les entrées dans le DNS mais dans ce cas il serait plus compliqué de déplacer la machine d'un réseau logique à un autre car le serveur refuserait d'attribuer l'adresse réservée sur un réseau logique qui n'utilise pas la même plage IP.

Par défaut les machines utilisant Windows souhaitent elles même mettre à jour le DNS mais pour des raisons de sécurité il n'est pas forcément idéal d'autoriser les clients à mettre à jour les entrées, des logiciels malveillants risqueraient d'utiliser ce droit pour changer d'autres entrées ou il faudrait trouver des solutions assez complexes pour n'autoriser les machines à mettre à jour uniquement leur propre entrée mais ça complexifierait probablement les changements de noms pour les machines.

Il faut aussi prendre en compte que le serveur DHCP ne fait pas la mise à jour du DNS pour les clients dont les IP sont réservées, il ne faudra donc pas oublier dans les procédures de mettre à jour manuellement le DNS pour ces machines lors de la création ou de la modification d'une attribution.

Pour le moment les clients qui possèdent plusieurs interfaces sont gérés très difficilement, c'est à dire que seule la première interface qui fait sa requête DHCP obtiendra une entrée DNS, les autres obtiendront ... une erreur (et une IP). Il est prévu que dans de futurs versions ces cas soient gérés correctement.

Création de la clé TSIG[modifier | modifier le wikicode]

Afin de sécuriser les mises à jour, une clé TSIG sera utilisée (Pour plus d'infos : Wikipedia:TSIG).

Pour la générer :

[root@linux] # tsig-keygen -a hmac-sha512 DHCP_UPDATERdblclick to copy
Paramètre Description
-a hmac-sha512 Algorithme à utiliser
DHCP_UPDATER Nom de la clé

La clé sera générée et placée dans deux fichiers: un fichier en .key et un fichier en .private.
Nous n'allons pas utiliser les fichiers générés mais simplement récupérer la clé et l'intégrer directement dans les fichiers de configuration.

Le fichier en .private se présente comme ceci :

Private-key-format: v1.2
Algorithm: 157 (HMAC_SHA512)
Key: WoY0txiBiG+ZK22RjJN6AQ==
Bits: AAA=

La ligne qui nous intéresse est celle qui commence par Key:, la clé est tout le reste de la ligne.

Et le bloc qui sera intégré dans la configuration se présente comme ceci :

key DHCP_UPDATER {
	algorithm HMAC-SHA512;
	secret <LACLEVIENTICI>;
};
Paramètre Description
key DHCP_UPDATER Nom que l'on souhaite donner à la clé
algorithm HMAC-SHA512 C'est l'algorithme utilisé pour générer la clé
secret <LACLEVIENTICI> C'est la clé

Configuration du serveur DHCP[modifier | modifier le wikicode]

Voici les parties qui nous intéressent dans le fichier de configuration du serveur DHCP dhcpd.conf

key DHCP_UPDATER {
	algorithm HMAC-SHA512;
	secret <LACLEVIENTICI>;
};

subnet 192.168.0.0 netmask 255.255.255.0 {
	[...]
	domain-name "exemple.loc";
	ddns-updates on;
	ignore client-updates;
	default-lease-time 86400;
}

ddns-update-style interim;

zone exemple.loc. {
	primary 127.0.0.1;
	key DHCP_UPDATER;
}

zone 0.168.192.in-addr.arpa. {
	primary 127.0.0.1;
	key DHCP_UPDATER;
}

Paramètrage du subnet[modifier | modifier le wikicode]

Pour chaque subnet il va falloir configurer quelques informations, ce qui permet d'activer ou non les mises à jour dynamique en fonction du subnet.

subnet 192.168.0.0 netmask 255.255.255.0 {
	[...]
	domain-name "exemple.loc";
	ddns-updates on;
	ignore client-updates;
	default-lease-time 86400;
}
Paramètre Description
ddns-update yes Active la mise à jour dynamique du DNS pour les clients de ce subnet
ignore client-updates Désactive la prise en compte des demandes de mise à jour faites par le client
default-lease-time 86400 C'est la durée par défaut du bail, elle n'est pas liée à la mise à jour dynamique mais nous sera utile pour le configuration du DNS
domain-name exemple.loc Cette option n'est pas non plus liée à la mise à jour dynamique mais elle permettra de sélectionner la zone à mettre à jour

Configuration de la mise à jour dynamique[modifier | modifier le wikicode]

ddns-update-style interim;
Paramètre Description
ddns-update-style interim La seule valeur que prend ce paramètre est interim ou none, vous vous doutez bien que si vous choisissez none, aucune mise à jour ne sera faite.

Configuration des zones[modifier | modifier le wikicode]

Pour finir il ne nous reste plus qu'à ajouter les informations pour joindre le serveur DNS de chaque zone à mettre à jour.

zone exemple.loc. {
	primary 127.0.0.1;
	key DHCP_UPDATER;
}

zone 0.168.192.in-addr.arpa. {
	primary 127.0.0.1;
	key DHCP_UPDATER;
}
Paramètre Description
zone exemple.loc. C'est le nom de la zone concernée au format DNS.
primary 127.0.0.1 C'est l'adresse IP du serveur DNS
key DHCP_UPDATER C'est le nom du bloc qui contient la clé TSIG à utiliser, ici DHCP_UPDATER

Configuration du serveur DNS[modifier | modifier le wikicode]

La mise à jour du DNS quant à elle, est bien plus simple et rapide. La seule chose qu'il faut faire c'est, pour chacune des zones que le DHCP devra mettre à jour, autoriser notre clé générée plus haut à mettre à jour.

Ajout de la clé TSIG[modifier | modifier le wikicode]

Le bloc a ajouter dans la configuration est exactement le même que pour le DHCP, celui qui a eu cette idée est un génie !!

key DHCP_UPDATER {
	algorithm HMAC-SHA512;
	secret <LACLEVIENTICI>;
};

Pour plus d'infos reportez vous à la configuration du DHCP.

Configuration des zones[modifier | modifier le wikicode]

Warning : On peut aussi utiliser des ACL pour les droits, mais on ne peut pas mélanger droits simples et ACL
	zone "exemple.loc" IN {
		type master;
		file "data/exemple.loc.zone";
		allow-update { key DHCP_UPDATER; };
	};

	zone "0.168.192.in-addr.arpa" IN {
		type master;
		file "data/reverse.zone";
		allow-update { key DHCP_UPDATER; };
	};
Paramètre Description
allow-update { key DHCP_UPDATER; } On spécifie qu'on autorise la mise à jour via une clé et le nom qu'on lui a donnée dans la configuration