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:20-serveur_dhcp [le 22/03/2025 à 13:06] – [Offer] prof090_applicatifs:165dhcp:20-serveur_dhcp [le 05/04/2025 à 16:40] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. prof
Ligne 1: Ligne 1:
 ====== Un serveur DHCP ====== ====== Un serveur DHCP ======
-Nous avons déjà vu [[050_profondeurs:030-config-ipv4|ailleurs]] une installation minimale du serveur «kea-dhcp4-server», le remplaçant du vénérable «isc-dhcp-server» qui n'est plus maintenu. Nous allons la reprendre dans une configuration un peu plus approfondie, pour répondre aux besoins d'un réseau (virtuel) construit comme ceci:+Nous avons déjà vu [[050-manips-ipv4:030-config-ipv4|ailleurs]] une installation minimale du serveur «kea-dhcp4-server», le remplaçant du vénérable «isc-dhcp-server» qui n'est plus maintenu. Nous allons la reprendre dans une configuration un peu plus approfondie, pour répondre aux besoins d'un réseau (virtuel) construit comme ceci:
 {{ :090_applicatifs:165dhcp:dhcp_network.svg |Réseau configuré avec DHCP}} {{ :090_applicatifs:165dhcp:dhcp_network.svg |Réseau configuré avec DHCP}}
 Sur le LAN vert, tous les nœuds devront être configués via DHCP.L'imprimante, la station de l'administrateur et le NAS devront récupérer **toujours** la même adresse. Les clients recevront une adresse quelconque, il pourra y avoir jusqu’à 20 clients simultanés, mais la salle étant en libre service, les clients ne seront pas forcément toujours les mêmes. Sur le LAN vert, tous les nœuds devront être configués via DHCP.L'imprimante, la station de l'administrateur et le NAS devront récupérer **toujours** la même adresse. Les clients recevront une adresse quelconque, il pourra y avoir jusqu’à 20 clients simultanés, mais la salle étant en libre service, les clients ne seront pas forcément toujours les mêmes.
Ligne 109: Ligne 109:
  
 Whireshark est à l'affût du protocole UDP sur le port 67. À première vue nous avons ceci: Whireshark est à l'affût du protocole UDP sur le port 67. À première vue nous avons ceci:
-<code> +<html><pre class="code"
-No.  Time           Source         Destination      Info+<b>No.  Time           Source         Destination      Info</b>
    0.000000000    0.0.0.0        255.255.255.255  DHCP Discover - Transaction ID 0x175f7d6c    0.000000000    0.0.0.0        255.255.255.255  DHCP Discover - Transaction ID 0x175f7d6c
    0.017518975    192.168.61.1   192.168.61.2     DHCP Offer    - Transaction ID 0x175f7d6c    0.017518975    192.168.61.1   192.168.61.2     DHCP Offer    - Transaction ID 0x175f7d6c
Ligne 117: Ligne 117:
    1782.689463270 192.168.61.2   192.168.61.1     DHCP Request  - Transaction ID 0x175f7d6c    1782.689463270 192.168.61.2   192.168.61.1     DHCP Request  - Transaction ID 0x175f7d6c
    1782.691640998 192.168.61.1   192.168.61.2     DHCP ACK      - Transaction ID 0x175f7d6c    1782.691640998 192.168.61.1   192.168.61.2     DHCP ACK      - Transaction ID 0x175f7d6c
-</code>+</pre></html>
  
 Jusque là, c'est comme dans les livres. Regardons le détail du DHCP Discover: Jusque là, c'est comme dans les livres. Regardons le détail du DHCP Discover:
Ligne 123: Ligne 123:
  
 <html><pre class="code"> <html><pre class="code">
-Dynamic Host Configuration Protocol (Discover)+<b>Dynamic Host Configuration Protocol (Discover)</b>
 <span class="hly">    Message type: Boot Request (1)</span> <span class="hly">    Message type: Boot Request (1)</span>
     Hardware type: Ethernet (0x01)     Hardware type: Ethernet (0x01)
Ligne 194: Ligne 194:
 ==== Offer ==== ==== Offer ====
 <html><pre class="code"> <html><pre class="code">
-Dynamic Host Configuration Protocol (Offer)+<b>Dynamic Host Configuration Protocol (Offer)</b>
 <span class="hly">    Message type: Boot Reply (2)</span> <span class="hly">    Message type: Boot Reply (2)</span>
     Hardware type: Ethernet (0x01)     Hardware type: Ethernet (0x01)
Ligne 253: Ligne 253:
         Option End: 255         Option End: 255
 </pre></html> </pre></html>
 +Le serveur propose tout ce qu'il est en mesure de proposer:
 +  * Une adresse IP : ''192.168.61.2'' (notons que c'est bien celle que nous voulons attribuer au NAS),
 +  * le masque de sous-réseau: ''255.255.255.0'' ce qui en CIDR donne bien ''/24'',
 +  * l'adresse du routeur: ''192.168.61.1'',
 +  * l'adresse du résolveur DNS: ''192.168.61.1'',
 +  * la durée de vie du bail: 1 heure,
 +  * l'adresse du serveur DHCP: ''192.168.61.1'' (il est multifonctions),
 +  * la durée avant demande de renouvellement du bail: 30 minutes,
 +  * la durée avant que le client ne commence à s'affoler: 45 minutes.
 +Le serveur confirme le CID proposé par le client. Il n'a normalement pas à le modifier en quoi que ce soit. Le client va probablement accepter (a-t-il vraiment le choix ?)
 +==== Request ====
 +<html><pre class="code">
 +<b>Dynamic Host Configuration Protocol (Request)</b>
 +    Message type: Boot Request (1)
 +    Hardware type: Ethernet (0x01)
 +    Hardware address length: 6
 +    Hops: 0
 +    Transaction ID: 0x175f7d6c
 +    Seconds elapsed: 0
 +    Bootp flags: 0x0000 (Unicast)
 +        0... .... .... .... = Broadcast flag: Unicast
 +        .000 0000 0000 0000 = Reserved flags: 0x0000
 +    Client IP address: 0.0.0.0
 +    Your (client) IP address: 0.0.0.0
 +    Next server IP address: 0.0.0.0
 +    Relay agent IP address: 0.0.0.0
 +    Client MAC address: RealtekU_d2:9a:0e (52:54:00:d2:9a:0e)
 +    Client hardware address padding: 00000000000000000000
 +    Server host name not given
 +    Boot file name not given
 +    Magic cookie: DHCP
 +<span class="hlo">    Option: (53) DHCP Message Type (Request)
 +        Length: 1
 +        DHCP: Request (3)
 +    Option: (54) DHCP Server Identifier (192.168.61.1)
 +        Length: 4
 +        <b>DHCP Server Identifier: 192.168.61.1</b>
 +    Option: (50) Requested IP Address (192.168.61.2)
 +        Length: 4
 +        <b>Requested IP Address: 192.168.61.2</b>
 +    Option: (12) Host Name
 +        Length: 3
 +        Host Name: nas
 +    Option: (55) Parameter Request List
 +        Length: 13
 +        Parameter Request List Item: (1) Subnet Mask
 +        Parameter Request List Item: (28) Broadcast Address
 +        Parameter Request List Item: (2) Time Offset
 +        Parameter Request List Item: (3) Router
 +        Parameter Request List Item: (15) Domain Name
 +        Parameter Request List Item: (6) Domain Name Server
 +        Parameter Request List Item: (119) Domain Search
 +        Parameter Request List Item: (12) Host Name
 +        Parameter Request List Item: (44) NetBIOS over TCP/IP Name Server
 +        Parameter Request List Item: (47) NetBIOS over TCP/IP Scope
 +        Parameter Request List Item: (26) Interface MTU
 +        Parameter Request List Item: (121) Classless Static Route
 +        Parameter Request List Item: (42) Network Time Protocol Servers</span>
 +    Option: (61) Client identifier
 +        Length: 19
 +        IAID: 00d29a0e
 +        DUID Type: link-layer address plus time (1)
 +        Hardware type: Ethernet (1)
 +        Time: 795954794
 +        Link layer address: 52:54:00:d2:9a:0e
 +    Option: (255) End
 +        Option End: 255
 +</pre></html>
 +Dans cette requête, il accepte bien l'adresse que lui propose le serveur ''192.168.61.1'', mais persiste à demander tous les autres paramètres inscrits dans la trame «Discover». Mais le serveur ne sait pas faire de miracles et termine momentanément le dialogue en répétant:
 +==== Ack ====
 +<html><pre class="code">
 +<b>Dynamic Host Configuration Protocol (ACK)</b>
 +...
 +    Your (client) IP address: 192.168.61.2
 +    Next server IP address: 0.0.0.0
 +    Relay agent IP address: 0.0.0.0
 +...
 +    Option: (53) DHCP Message Type (ACK)
 +        Length: 1
 +        DHCP: ACK (5)
 +    Option: (1) Subnet Mask (255.255.255.0)
 +        Length: 4
 +        Subnet Mask: 255.255.255.0
 +    Option: (3) Router
 +        Length: 4
 +        Router: 192.168.61.1
 +    Option: (6) Domain Name Server
 +        Length: 4
 +        Domain Name Server: 192.168.61.1
 +    Option: (12) Host Name
 +        Length: 3
 +        Host Name: nas
 +    Option: (51) IP Address Lease Time
 +        Length: 4
 +        IP Address Lease Time: (3600s) 1 hour
 +    Option: (54) DHCP Server Identifier (192.168.61.1)
 +        Length: 4
 +        DHCP Server Identifier: 192.168.61.1
 +    Option: (58) Renewal Time Value
 +        Length: 4
 +        Renewal Time Value: (1800s) 30 minutes
 +    Option: (59) Rebinding Time Value
 +        Length: 4
 +        Rebinding Time Value: (2700s) 45 minutes
 +    Option: (61) Client identifier
 +        Length: 19
 +        IAID: 00d29a0e
 +        DUID Type: link-layer address plus time (1)
 +        Hardware type: Ethernet (1)
 +        Time: 795954794
 +        Link layer address: 52:54:00:d2:9a:0e
 +    Option: (119) Domain Search
 +        Length: 17
 +        FQDN: home.nain-t.net
 +    Option: (255) End
 +        Option End: 255
 +</pre></html>
 +Et le client devra s'en satisfaire, surtout que les paramètres indispensables sont tous fournis pour une connectivité opérationnelle.
 +===== Fin de l'histoire =====
 +Simulons une panne de DHCP un peu avant que le client demande un renouvellement...
 +<html><pre class="code">
 +<b>No.Time           Source        Destination      Info</b>
 +<span class="hlg"> 1 0.000000000    192.168.61.2  192.168.61.1     DHCP Request  - Transaction ID 0x175f7d6c
 + 2 7.560894138    192.168.61.2  192.168.61.1     DHCP Request  - Transaction ID 0x175f7d6c</span>
 +<span class="hly"> 3 1031.735078085 192.168.61.2  255.255.255.255  DHCP Request  - Transaction ID 0x175f7d6c
 + 4 1041.126556541 192.168.61.2  255.255.255.255  DHCP Request  - Transaction ID 0x175f7d6c
 +...
 +64 1902.788046683 192.168.61.2  255.255.255.255  DHCP Request  - Transaction ID 0x175f7d6c
 +65 1922.817322968 192.168.61.2  255.255.255.255  DHCP Request  - Transaction ID 0x175f7d6c</span>
 +<span class="hlo">66 1930.773280705 0.0.0.0       255.255.255.255  DHCP Discover - Transaction ID 0x14b47b39
 +67 1937.765165131 0.0.0.0       255.255.255.255  DHCP Discover - Transaction ID 0x14b47b39
 +...</span>
 +</pre></html>
 +  - Au début, confient, le client demande le renouvellement de son bail à 192.168.61.1 (trames 1 et 2),
 +  - à la 1031<sup>eme</sup> seconde (un peu plus de la 1/4 heure) le client repasse en broadcast (trames 3 à 65),
 +  - à la 1930<sup>eme</sup> seconde (un peu plus de la 1/2 heure) le client abandonne, perd son adresse IP et repart à la recherche d'un serveur DNS qui veuille bien lui répondre (trames 66 et suivantes).
 +
 +Ne sortez pas vos mouchoirs, l'histoire se terminera bien lorsque le serveur sera remis en route. Le client récupérera son adresse habituelle.
 +===== Les entrailles du serveur =====
 +Kea a été configuré pour gérer ses données internes dans un fichier CSV(({{ :090_applicatifs:165dhcp:kea-leases4.ods |Téléchargeable au format ODS}} pour plus de lisibilité.)). Petit coup d'endoscopie:
 +
 +<html><pre class="code">
 +<b>address,hwaddr,client_id,valid_lifetime,expire,subnet_id,fqdn_fwd,fqdn_rev,hostname,state,user_context</b>
 +<span class="hly">192.168.61.2,52:54:00:d2:9a:0e,ff:00:d2:9a:0e:00:01:00:01:2f:71:4e:6a:52:54:00:d2:9a:0e,3600,1742651207,1,0,0,nas,0,
 +192.168.61.2,52:54:00:d2:9a:0e,ff:00:d2:9a:0e:00:01:00:01:2f:71:4e:6a:52:54:00:d2:9a:0e,3600,1742651207,1,0,0,,2,
 +192.168.61.2,52:54:00:d2:9a:0e,ff:00:d2:9a:0e:00:01:00:01:2f:71:4e:6a:52:54:00:d2:9a:0e,3600,1742655208,1,0,0,nas,0,</span>
 +<span class="hlo">192.168.61.102,52:54:00:b7:66:81,01:52:54:00:b7:66:81,3600,1742656433,1,0,0,democlient1,0,</span>
 +<span class="hlg">192.168.61.101,52:54:00:6b:10:96,ff:00:6b:10:96:00:01:00:01:2c:31:af:2b:52:54:00:7b:28:d0,3600,1742656447,1,0,0,democlient2,0,</span>
 +</pre></html>
 +Nous retrouvons bien «nas», «democlient2» et «democlient2» Il y a toutefois quelque chose de curieux sur «democlient1»: Son CID se borne à son adresse MAC, contrairement aux autres nœuds...
 +===== Pour aller plus loin =====
 +Kea dhcp server peut utiliser de vraies bases de données relationnelles (MariaDB, PostgreSQL) plutôt qu'un simple fichier CSV. De même, ISC propose un outil de surveillance de plusieurs serveurs: [[https://www.isc.org/stork/|Stork Graphical Management for Kea DHCP]]. Nécessite une base de données PostgreSQL. Une démonstration en ligne est accessible [[https://demo.stork.isc.org/login|ici]].
Un serveur DHCP: Dernière modification le: 22/03/2025 à 13:06 par prof