Outils pour utilisateurs

Outils du site


Ceci est une ancienne révision du document !


Un serveur DHCP

Nous avons déjà vu 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: 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.

Nous allons installer et configurer sur le routeur/DHCP kea-dhcp4-server pour répondre au besoin.

Plan d'adressage

Le routeur/DHCP dispose déjà de l'adresse 192.168.61.1 Décidons que:

  • Le NAS recevra toujours l'adresse 192.168.61.2;
  • l'imprimante, l'adresse 192.168.61.3;
  • la station de l'administrateur l'adresse 192.168.61.254;
  • les clients pourront recevoir une adresse dans l'étendue 192.168.61.16 - 192.168.61.127, ce qui sera largement suffisant:
    • pour 20 clients simultanés;
    • pour assurer une éventuelle augmentation de prises clients en ajoutant un switch ou en remplaçant l’existant par un 48 ports, par exemple.

Et il restera quelques adresses basses et hautes si besoin est pour installer d'autres nœuds nécessitant une adresse fixe.

Les contraintes

Elles ne sont pas bien nombreuses, il est juste nécessaire de connaître les adresses MAC des nœuds nécessitant une adresse prédéfinie.

Ainsi:

  • le NAS dispose de l'adresse MAC 52:54:00:d2:9a:0e (on la trouve généralement inscrite sur une étiquette collée à l'arrière du NAS);
  • l'imprimante dispose de l'adresse MAC 52:54:00:05:7d:32 (idem, étiquette, dos…)
  • la station de l'administrateur: 52:54:00:b4:2e:40 (il est assez grand pour la trouver tout seul).

Les plus curieux auront remarqué que les 3 octets significatif du constructeur sont les mêmes pour chaque nœud décrit. Rappelons-nous que ce sont des nœuds virtuels générés par QEMU, c'est donc normal).

Configuration de Kea

Reprenons en l'améliorant le fichier déjà utilisé:

{
    "Dhcp4": {
        "control-socket": {
            "socket-type": "unix",
            "socket-name": "/run/kea/kea4-ctrl-socket"
        },
        "interfaces-config": {
            "interfaces": ["enp7s0"]
        },
        "valid-lifetime": 3600,
        "renew-timer": 1800,
        "rebind-timer": 2700,
        "authoritative": true,
        "lease-database": {
            "type": "memfile",
            "persist": true,
            "name": "/var/lib/kea/kea-leases4.csv",
            "lfc-interval": 3600
        },
        "subnet4": [
            {
                "subnet": "192.168.61.0/24",
                "pools": [{"pool": "192.168.61.100 - 192.168.61.120"}],
                "option-data": [
                    {
                        "name": "routers",
                        "data": "192.168.61.1"
                    },
                    {
                        "name": "domain-search",
                        "data": "home.nain-t.net"
                    },
                    {
                        "name": "domain-name-servers",
                        "data": "192.168.61.1"
                     }
                ],
                "reservations": [
                    {
                        "hw-address": "52:54:00:d2:9a:0e",
                        "ip-address": "192.168.61.2"
                    },
                    {
                        "hw-address": "52:54:00:05:7d:32",
                        "ip-address": "192.168.61.3"
                    },
                    {
                        "hw-address": "52:54:00:b4:2e:40",
                        "ip-address": "192.168.61.254"
                    }
                ]
            }
        ],
        "loggers": [
            {
                "name": "kea-dhcp4.leases",
                "output_options": [
                   {
                        "output": "/var/log/kea/kea-dhcp4.log",
                        "pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n",
                        "maxsize": 2048000,
                        "maxver": 4
                   }
                ],
                "severity": "DEBUG",
                "debuglevel": 55
            }
        ]
    }
}
Notons que le serveur va stocker les baux distribués dans un fichier au format «csv» (Comma-Separated Values), donc facilement lisible si besoin.

Nous offrons bien peu de choses aux clients:

  • une adresse IP, fixée ou non, dans le réseau 192.168.61.0/24 (subnet),
  • le nom du sous-domaine, (domain-search),
  • l'adresse d'un serveur DNS (domain-name-servers),
  • l'adresse de la passerelle (routers)

Pour le plaisir de suivre les actions, le paragraphe «loggers» va permettre de créer un fichier de logs contenant les informations sur les baux actifs ou non.

L'espion de service

Nous finalisons la mise en place du NAS sur le réseau. C'est un NAS qui fonctionne bien évidemment sous GNU/Linux (il est virtuel). Nous connaissons son adresse MAC qui est écrite sur sa face arrière (virtuelle) et qui est: 52:54:00:d2:9a:0e. À sa première mise en route:

Whireshark est à l'affût du protocole UDP sur le port 67. À première vue nous avons ceci:

No.  Time           Source         Destination      Info
 1   0.000000000    0.0.0.0        255.255.255.255  DHCP Discover - Transaction ID 0x175f7d6c
 2   0.017518975    192.168.61.1   192.168.61.2     DHCP Offer    - Transaction ID 0x175f7d6c
 3   0.017914980    0.0.0.0        255.255.255.255  DHCP Request  - Transaction ID 0x175f7d6c
 4   0.018377975    192.168.61.1   192.168.61.2     DHCP ACK      - Transaction ID 0x175f7d6c
 5   1782.689463270 192.168.61.2   192.168.61.1     DHCP Request  - Transaction ID 0x175f7d6c
 6   1782.691640998 192.168.61.1   192.168.61.2     DHCP ACK      - Transaction ID 0x175f7d6c

Jusque là, c'est comme dans les livres. Regardons le détail du DHCP Discover:

Discover

Dynamic Host Configuration Protocol (Discover)
    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
    Option: (53) DHCP Message Type (Discover)
        Length: 1
        DHCP: Discover (1)
    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
    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
À ce niveau, le client ne connaît pas son adresse IP ni celle du serveur (0.0.0.0). Il ne sait pas s'il y a un relai.

Il transmet son adresse MAC et son nom dans l'option 12: «host Name» l'option(«52:54:00:d2:9a:0e» et «nas»)

L'option 55 «Parameter Request List» contient «la liste des paramètres demandés». Il y en a beaucoup, nous savons déjà que le serveur ne saura pas tous les lui fournir.

L'option 61 «Client identifier» nécessite quelques mots d'explication. L'adresse MAC seule pourrait suffire à identifier le client, mais pour compliquer les choses, il contient d'autres informations. Quelques détails dans les RFC4361, RFC6842 et RFC3315 car cette options est venue avec DHCPv6. C'est le client qui construit cet identifiant. Il envoie dans cette option 61:

  • son IAID (Identity Association Identifier), qui n'est autre que les 4 derniers octets de son adresse MAC , ici 00:d2:9a:0e,
  • son DUID (DHCP Unique Identifier) qui vaut 00:01,
  • un timestamp qui vaut: 2f:71:4e:6a,
  • et encore son adresse MAC: 52:54:00:d2:9a:0e.

Au final, ce «client identifier» va être ff : 00:d2:9a:0e : 00:01 : 00:01 : 2f:71:4e:6a : 52:54:00:d2:9a:0e Et dans le fichier de logs du serveur, la ligne suivante:

2025-03-21 17:44:44.266 INFO  DHCP4_LEASE_ALLOC [hwtype=1 52:54:00:d2:9a:0e],
cid=[ff:00:d2:9a:0e:00:01:00:01:2f:71:4e:6a:52:54:00:d2:9a:0e],
tid=0x3e1c8135: lease 192.168.61.2 has been allocated for 3600 seconds
Voyons maintenant si l'offre est intéressante.

Offer

Dynamic Host Configuration Protocol (Offer)
    Message type: Boot Reply (2)
    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: 192.168.61.2
    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
    Option: (53) DHCP Message Type (Offer)
        Length: 1
        DHCP: Offer (2)
    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

Un serveur DHCP: Dernière modification le: 22/03/2025 à 13:06 par prof