Outils pour utilisateurs

Outils du site


Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
090_applicatifs:165dhcp:30-client_dhcp [le 19/03/2025 à 16:50] – [NetworkManager] prof090_applicatifs:165dhcp:30-client_dhcp [le 23/03/2025 à 09:40] (Version actuelle) – [La mémoire du client] prof
Ligne 1: Ligne 1:
-====== Les clients DHCP ====== +====== Le client DHCP d'ISC ====== 
-Tout système d'exploitation (y compris MS Windows™ depuis l'antique version 95) dispose d'un client DHCP dont le rôle est de rechercher sur le réseau un serveur DHCP et de négocier avec lui une configuration IP cohérente.+Sur Debian 12 (Bookworm), le client dhcp installé par défaut est le client d'isc: ''isc-dhcp-client''. Ce client dispose d'un fichier de configuration ''/etc/dhcp/dhclient.conf''. Comparons les configurations sur «nas» et «democlient1» 
 +===== Configuration =====
  
-Si le poste de travail est correctement configuré, le client DHCP s'occupera de tout. +==== nas ==== 
-===== MS Windows™ ===== +Version expurgée des commentaires: 
-N'étant pas un fan de ces systèmes, nous nous contenterons de la démonstration sur un Windows XP Pro (SP3). +<html><pre class="code"> 
-==== Configuration ==== +option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
-Voici un moyen (parmi d'autres) d'y arriver. Celle-ci s'appelle la « méthode en dix clics ».+
  
-Tu cliques à gauche sur ''Démarrer'' età condition d'avoir configuré son machin de cette façonles ''favoris réseau'' apparaissentTu cliques à droite sur les favoris réseau et tu cliques à gauche sur ''propriétés''.+send host-name = gethostname(); 
 +<span class="hly">request subnet-maskbroadcast-addresstime-offset, routers, 
 +        domain-name, domain-name-servers, domain-search, <b>host-name, 
 +        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, 
 +        netbios-name-servers, netbios-scope, interface-mtu,</b> 
 +        rfc3442-classless-static-routes, ntp-servers;</span> 
 +</pre></html> 
 +Ce fichier n'a pas été modifié, c'est donc la configuration par défaut.
  
-Tout ceci doit faire apparaitre cette fenêtre : +Toutes les options en gras sont inutiles dans notre contexte. Elles ont été supprimées dans le fichier de configuration sur «democlient1» 
- +==== democlient1 ==== 
-Là, tu cliques à droite sur la ''Connexion au réseau local'' et tu cliques à gauche sur ''propriétés''. Ceci t'amène à : +<html><pre class="code"> 
- +option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
-Tu cliques deux fois de suite à gauche sur ''Protocole Internet (TCP/IP)''. Tu es presque arrivé.+
  
-Iciil suffit de cliquer à gauche successivement sur ''Obtenir une adresse IP automatiquement''sur ''Obtenir les adresses des serveurs DNS automatiquement'' et enfin sur ''OK''. Et voilà le travail. +send host-name = gethostname(); 
-==== Contrôle ==== +<span class="hly">request subnet-maskbroadcast-address, time-offset, routers
-Il existe une méthode, dite « méthode en sept clics »qui permet de consulter sa configuration IP. Nous allons en voir une autre dite « méthode de la ligne de commande ».+        domain-name, domain-name-servers, domain-search, 
 +        rfc3442-classless-static-routesntp-servers;</span>
  
-Tu ouvres une ''console DOS'', aussi appelée ''invite de commandes'' et tu tapes : +<span class="bhlo">send dhcp-client-identifier 1:52:54:00:b7:66:81;</span>
-  ipconfig +
- +
-Nous obtenons alors l'essentiel de la configuration IP. +
- +
-Si nous souhaitons plus de détails, il faudra utiliser la commande : +
-  ipconfig /all +
- +
-Nous voyons ici toutes les informations concernant le bail dhcp obtenu. La « méthode en sept clics » n'apporte strictement aucune information supplémentaire, elle permet juste de faire travailler l'index et le majeur (éventuellement l'annulaire) de la main droite (habituellement), au détriment de tous les autres doigts. +
-===== GNU/Linux ===== +
-Ici, nous sommes dans le bazar et suivant les distributions, les choses peuvent changer de façon plus ou moins significative. Nous prendrons comme exemple une Debian Lenny et une Ubuntu Jaunty dont les architectures restent très proches puisque l'autre est dérivée de l'une. +
- +
-GNU/Linux étant en perpétuelle évolution, les possibilités de configuration du réseau ont suivi le même chemin. Il existe en gros deux moyens de le faire : +
-  * des fichiers texte qui décrivent la configuration de chaque interface, c'est la bonne vieille méthode, encore tout à fait d'actualité dans le cas de machines sédentaires (poste de travail de bureau (Desktop) et encore plus de serveurs ; +
-  * un système dynamique, ''NetworkManager'', qui s'appuie lui-même sur la couche ''HAL'' et sur ''DBUS'' en environnement graphique, qui est bien pratique pour les postes portables (Laptop), surtout lorsqu'ils sont équipés d'une connexion WI-FI. NetworkManager dispose d' « applets » adaptés à la plupart des environnements graphiques (GNOME, KDE, XFCE...). Ce projet, initié par RedHat en 2004 manque peut-être encore un peu de maturité, mais commence à être tout à fait utilisable par une autre population que celle des « geeks ».  +
-==== NetworkManager ==== +
-Commençons par le plus « simple », c'est-à-dire la méthode où ce sont les autres qui choisissent à votre place (courant très en vogue de nos jours). Un « Desktop » avec Ubuntu 9.04 (Jaunty) est connecté au réseau où notre DHCP opère. Voici ce que ça donne : +
- +
-Tu cliques à droite sur l'applet puis à gauche sur ''Informations de connexion'' (méthode en deux clics) et tu obtiens : +
- +
- +
- +
-Bien entendu, tout ceci fonctionne bien parce que les concepteurs d'Ubuntu Jaunty ont correctement pensé l'architecture de la distribution, que tous les paquets nécessaires ont été installés et que les scripts de post-installation ont correctement configuré tout ça. +
-Les trois paquets essentiels, mais qui incluent beaucoup de dépendances, sont : +
-  * ''network-manager'' pour la gestion automatisée des connexions actives ; +
-  * ''network-manager-gnome'' pour que l'applet soit présent dans la zone de notification ; +
-  * ''dhcp3-client'' qui est le client DHCP probablement le plus courant, bien qu'il en existe de nombreux autres. Car dans une architecture client/serveur, il faut un serveur mais aussi un client. +
- +
-==== A l'ancienne ==== +
-Une méthode plus rustique, mais tout aussi efficace lorsque l'on est sédentaire, consiste à configurer le réseau au moyen de fichiers texte. Dans l'architecture Debian et dérivées, tout de passe dans ''/etc/network/interfaces''+
- +
-Nous sommes sur une Lenny sans interface graphique (pas de méthodes en X clics). Il nous faut bien sûr un client DHCP, pourquoi pas ''dhcp3-client'' qui est le choix par défaut sur Debian. En suite, nous pouvons créer ou modifier le fichier ''/etc/network/interfaces'' comme ceci : +
-<code> +
-auto lo +
-iface lo inet loopback +
- +
-auto eth0 +
-iface eth0 inet dhcp +
-</code> +
-La traduction est assez intuitive : Nous voulons que eth0 soit activée automatiquement et soit configurée par DHCP. +
- +
-Après un démarrage de notre Lenny, voyons où nous en sommes. Il existe plusieurs façons de récolter les informations : +
- +
-=== ifconfig === +
-Méthode traditionnelle : +
-<html><pre class="code"> +
-# ifconfig eth0 +
-eth0      Link encap:Ethernet  HWaddr 00:16:36:51:5d:5a   +
-          <span class="hly">inet adr:192.168.0.67  Bcast:192.168.0.255  Masque:255.255.255.0</span> +
-          adr inet6: 2a01:e35:2e52:9840:216:36ff:fe51:5d5a/64 Scope:Global +
-          adr inet6: fe80::216:36ff:fe51:5d5a/64 Scope:Lien +
-          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 +
-          RX packets:134 errors:0 dropped:0 overruns:0 frame:0 +
-          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0 +
-          collisions:0 lg file transmission:1000  +
-          RX bytes:18211 (17.7 KiB)  TX bytes:9947 (9.7 KiB) +
-          Interruption:10 Adresse de base:0xc100 +
 </pre></html> </pre></html>
-=== iproute === +En revanche, ici le client envoie explicitement sa seule adresse MAC comme CID, ce qui explique l'apparente anomalie constatée page précédente. 
-Plus moderne :+====La mémoire du client ===== 
 +isc-dhcp-client a de la mémoire. Elle est écrite dans le fichier ''/var/lib/dhcp/dhclient.enp1s0.leases''. Voyons la mémoire du nas:
 <html><pre class="code"> <html><pre class="code">
-# ip addr ls dev eth0 +cat dhclient.enp1s0.leases  
-2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 +default-duid "\000\001\000\001/qNjRT\000\322\232\016";
-    link/ether 00:16:36:51:5d:5a brd ff:ff:ff:ff:ff:ff +
-    <span class="hly">inet 192.168.0.67/24 brd 192.168.0.255 scope global eth0</span> +
-    inet6 2a01:e35:2e52:9840:216:36ff:fe51:5d5a/64 scope global dynamic  +
-       valid_lft 86174sec preferred_lft 86174sec +
-    inet6 fe80::216:36ff:fe51:5d5a/64 scope link  +
-       valid_lft forever preferred_lft forever +
-</pre></html> +
-=== les logs === +
-Si nous voulons vraiment savoir ce qu'il s'est passé au niveau DHCP, il suffit de consulter les logs du client ''dhcp3-client'' qui se trouvent sur Debian dans ''/var/lib/dhcp3/dhclient.eth0.leases'' : +
-<html><pre class="code"+
-# cat /var/lib/dhcp3/dhclient.eth0.leases +
 lease { lease {
-  interface "eth0"; +  interface "enp1s0"; 
-  fixed-address 192.168.0.67;+  fixed-address 192.168.61.2;
   option subnet-mask 255.255.255.0;   option subnet-mask 255.255.255.0;
-  option routers 192.168.0.252+  option dhcp-lease-time 3600; 
-<span class="hly" option dhcp-lease-time 3600;</span>+  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 11:04:54; 
 +  rebind 6 2025/03/22 11:20:11; 
 +  expire 6 2025/03/22 11:35:11; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 11:29:41; 
 +  rebind 6 2025/03/22 11:49:54; 
 +  expire 6 2025/03/22 12:04:54; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 11:54:35; 
 +  rebind 6 2025/03/22 12:14:41; 
 +  expire 6 2025/03/22 12:29:41; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 12:21:31; 
 +  rebind 6 2025/03/22 12:39:35; 
 +  expire 6 2025/03/22 12:54:35; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 12:46:46; 
 +  rebind 6 2025/03/22 13:06:31; 
 +  expire 6 2025/03/22 13:21:31; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1;
   option dhcp-message-type 5;   option dhcp-message-type 5;
-  option domain-name-servers 192.168.0.252+  option dhcp-server-identifier 192.168.61.1
-  option dhcp-server-identifier 192.168.0.252+  option domain-name-servers 192.168.61.1
-  option netbios-name-servers 192.168.0.252+  option domain-search "home.nain-t.net."
-  option domain-name "maison.mrs"; +  option dhcp-renewal-time 1800; 
-<span class="hly">  renew 5 2009/05/08 08:38:00+  option dhcp-rebinding-time 2700; 
-  rebind 5 2009/05/08 09:05:37+  option host-name "nas"; 
-  expire 5 2009/05/08 09:13:07;</span>+  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  <span class="hly">renew 6 2025/03/22 13:14:36;</span> 
 +  <span class="hlo">rebind 6 2025/03/22 13:31:46;</span> 
 +  <span class="hlr">expire 6 2025/03/22 13:46:46;</span>
 } }
 </pre></html> </pre></html>
-Nous avons ici toutes les informations transmises. Notre système est « neuf »c'est la première fois que l'interface est configuréeComme nous sommes curieux, nous avons mis en place un « sniffeur » (l'indispensable Wireshark), qui a capturé le dialogue, mais nous verrons ça plus tard. +Le serveur était hors service et le client a perdu son adressemais il l'a récupérée aux alentours de 14:18:47 - 30 minutes soit 13:48:47L'interruption a été de courte durée.
- +
-Les heures sont indiquées en UTC. +
- +
-La machine cliente a été démarrée à 8h 12 UTC. Nous pouvons prendre une petite récréation. Rendez-vous vers 8h 38 UTC.+
 <html><pre class="code"> <html><pre class="code">
 lease { lease {
-  interface "eth0"; +  interface "enp1s0"; 
-  fixed-address 192.168.0.67;+  fixed-address 192.168.61.2;
   option subnet-mask 255.255.255.0;   option subnet-mask 255.255.255.0;
-  option routers 192.168.0.252; 
   option dhcp-lease-time 3600;   option dhcp-lease-time 3600;
 +  option routers 192.168.61.1;
   option dhcp-message-type 5;   option dhcp-message-type 5;
-  option domain-name-servers 192.168.0.252+  option dhcp-server-identifier 192.168.61.1
-  option dhcp-server-identifier 192.168.0.252+  option domain-name-servers 192.168.61.1
-  option netbios-name-servers 192.168.0.252+  option domain-search "home.nain-t.net."
-  option domain-name "maison.mrs"; +  option dhcp-renewal-time 1800; 
-  renew 5 2009/05/08 08:38:00+  option dhcp-rebinding-time 2700; 
-  rebind 5 2009/05/08 09:05:37+  option host-name "nas"; 
-  expire 5 2009/05/08 09:13:07;+  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  <span class="hly">renew 6 2025/03/22 14:18:47;</span> 
 +  rebind 6 2025/03/22 14:38:28
 +  expire 6 2025/03/22 14:53:28;
 } }
-<span class="hly">lease { +lease { 
-  interface "eth0"; +  interface "enp1s0"; 
-  fixed-address 192.168.0.67;+  fixed-address 192.168.61.2;
   option subnet-mask 255.255.255.0;   option subnet-mask 255.255.255.0;
-  option routers 192.168.0.252; 
   option dhcp-lease-time 3600;   option dhcp-lease-time 3600;
 +  option routers 192.168.61.1;
   option dhcp-message-type 5;   option dhcp-message-type 5;
-  option domain-name-servers 192.168.0.252+  option dhcp-server-identifier 192.168.61.1; 
-  option dhcp-server-identifier 192.168.0.252+  option domain-name-servers 192.168.61.1; 
-  option netbios-name-servers 192.168.0.252+  option domain-search "home.nain-t.net."; 
-  option domain-name "maison.mrs"; +  option dhcp-renewal-time 1800; 
-<span class="bhly" renew 5 2009/05/08 09:05:03+  option dhcp-rebinding-time 2700; 
-  rebind 5 2009/05/08 09:30:30+  option host-name "nas"; 
-  expire 5 2009/05/08 09:38:00;</span> +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
-}</span>+  renew 6 2025/03/22 14:48:17; 
 +  rebind 6 2025/03/22 15:03:47; 
 +  expire 6 2025/03/22 15:18:47; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5
 +  option dhcp-server-identifier 192.168.61.1
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 15:13:52; 
 +  rebind 6 2025/03/22 15:33:17; 
 +  expire 6 2025/03/22 15:48:17; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 15:40:37
 +  rebind 6 2025/03/22 15:58:52
 +  expire 6 2025/03/22 16:13:52; 
 +
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 16:06:35; 
 +  rebind 6 2025/03/22 16:25:37; 
 +  expire 6 2025/03/22 16:40:37; 
 +} 
 +lease { 
 +  interface "enp1s0"; 
 +  fixed-address 192.168.61.2; 
 +  option subnet-mask 255.255.255.0; 
 +  option dhcp-lease-time 3600; 
 +  option routers 192.168.61.1; 
 +  option dhcp-message-type 5; 
 +  option dhcp-server-identifier 192.168.61.1; 
 +  option domain-name-servers 192.168.61.1; 
 +  option domain-search "home.nain-t.net."; 
 +  option dhcp-renewal-time 1800; 
 +  option dhcp-rebinding-time 2700; 
 +  option host-name "nas"; 
 +  option dhcp-client-identifier ff:0:d2:9a:e:0:1:0:1:2f:71:4e:6a:52:54:0:d2:9a:e; 
 +  renew 6 2025/03/22 16:29:12; 
 +  rebind 6 2025/03/22 16:51:35; 
 +  expire 6 2025/03/22 17:06:35; 
 +}
 </pre></html> </pre></html>
-Notre client DHCP demandé un renouvèlement de son bail. Il le refera à 9h 05 UTC etc. +Le client garde donc en mémoire les baux qu'il récupéré dans le passé proche.
- +
-Notre Wireshark n'a rien perdu de tout ceci, nous pouvons aller y voir de plus près. +
- +
- +
Le client DHCP d'ISC: Dernière modification le: 19/03/2025 à 16:50 par prof