WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:kea-dhcp

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édentes Révision précédente
Prochaine révision
Révision précédente
wiki:services:kea-dhcp [2017/04/29 21:16]
gingerbread [Backend SQL]
wiki:services:kea-dhcp [2021/03/12 14:00] (Version actuelle)
lionofinterest
Ligne 1: Ligne 1:
 ===== DHCP ===== ===== DHCP =====
  
-<WRAP center round alert 60%+<WRAP important
-Kea est a relancé dès que la VM SQL est éteinte+Kea est à relancer dès que la VM SQL est éteinte : les services kea plantent et ne redémarrent pas seuls lorsque le SQL n'est plus joignable</WRAP>
-</WRAP>+
  
-<WRAP INFOWIP </WRAP>+<WRAP info> 
 +Les fichiers de configurations de Kea sont disponibles sur le [[http://gitlab.minet.net/adh6/kea|gitlab]] 
 +</WRAP>
  
 Nous utilisons [[http://kea.isc.org/wiki|ISC-KEA]], notamment car il permet l'enregistrement de réservations d'adresses IP directement depuis une base de donnée (MySQL, pgSQL), pour ne plus dépendre d'un [[http://gitlab.minet.net/adh5/dhcp-http-json|patch]] qui permettait au serveur ISC-DHCP d'obtenir les réservations depuis l'API JSON d'ADH5.  Nous utilisons [[http://kea.isc.org/wiki|ISC-KEA]], notamment car il permet l'enregistrement de réservations d'adresses IP directement depuis une base de donnée (MySQL, pgSQL), pour ne plus dépendre d'un [[http://gitlab.minet.net/adh5/dhcp-http-json|patch]] qui permettait au serveur ISC-DHCP d'obtenir les réservations depuis l'API JSON d'ADH5. 
Ligne 66: Ligne 67:
 KEA dispose de plusieurs backend (CSV, MySQL, PgSQL, CQL) pour garder en mémoire les leases DHCP et, ce qui nous intéresse, les réservations d'hôtes. Actuellement, le backend MySQL est utilisé uniquement pour les réservations d'hôtes (lecture seule) tandis que le backend CSV est utilisé pour les leases DHCP (lecture et écriture). KEA dispose de plusieurs backend (CSV, MySQL, PgSQL, CQL) pour garder en mémoire les leases DHCP et, ce qui nous intéresse, les réservations d'hôtes. Actuellement, le backend MySQL est utilisé uniquement pour les réservations d'hôtes (lecture seule) tandis que le backend CSV est utilisé pour les leases DHCP (lecture et écriture).
  
-=== Administration de la DB ===+=== Initialisation de la DB ===
 <code bash> <code bash>
 apt install kea-admin apt install kea-admin
 </code> </code>
-Ce paquet debian installe dans '' /usr/share/kea-admin/scripts/'' un certain nombre de scripts d'administration pour Kea et sa base de donnée. +Ce paquet debian installe dans '' /usr/share/kea-admin/scripts/'' un certain nombre de scripts d'administration pour Kea et sa base de donnée, notamment '' /usr/share/kea-admin/scripts/mysql/dhcpdb_create.mysql'' qui contient le schéma de la base de donnée utilisée par Kea (importer le fichier .mysql dans le MySQL MiNET pour initialiser la base utilisée par Kea), et un certain nombre de script de mise à jour du schéma de la base de donnée (si jamais une maj de Kea change le schéma). 
 + 
 +=== Création des réservations d'hôtes à partir de la base d'ADH === 
 + 
 +Pour construire les réservations d'hôtes à partir de la base d'ADH de manière dynamique, nous remplaçons uniquement deux tables de la BDD de KEA par des vues faites à partir de champs des tables de la base ADH et de champs statiques. 
 + 
 +La vue ''hosts'' utilise la requête de sélection suivante :  
 +<code sql> 
 +select  
 +  `adh5-prod`.`ordinateurs`.`id` AS `host_id`, 
 +   unhex(replace(`adh5-prod`.`ordinateurs`.`mac`,'-','')) AS `dhcp_identifier`, 
 +   0 AS `dhcp_identifier_type`,`adh5-prod`.`vlans`.`numero` AS `dhcp4_subnet_id`, 
 +   `adh5-prod`.`vlans`.`numero` AS `dhcp6_subnet_id`, 
 +   inet_aton(`adh5-prod`.`ordinateurs`.`ip`) AS `ipv4_address`, 
 +   NULL AS `hostname`, 
 +   NULL AS `dhcp4_client_classes`, 
 +   NULL AS `dhcp6_client_classes`, 
 +   NULL AS `dhcp4_next_server`, 
 +   NULL AS `dhcp4_server_hostname`, 
 +   NULL AS `dhcp4_boot_file_name`  
 +from  
 +  (((`adh5-prod`.`ordinateurs` join `adh5-prod`.`adherents`) join `adh5-prod`.`chambres`) join `adh5-prod`.`vlans`)  
 +where  
 +  ((`adh5-prod`.`ordinateurs`.`adherent_id` = `adh5-prod`.`adherents`.`id`) and  
 +  (`adh5-prod`.`adherents`.`chambre_id` = `adh5-prod`.`chambres`.`id`) and  
 +  (`adh5-prod`.`chambres`.`vlan_id` = `adh5-prod`.`vlans`.`id`) and  
 +  (`adh5-prod`.`ordinateurs`.`ip` like '%.%.%.%')) 
 +</code> 
 +La vue ''ipv6_reservations'' utilise la requête de sélection suivante :  
 +<code sql> 
 +select  
 +  `adh5-prod`.`ordinateurs`.`id` AS `reservation_id`, 
 +  `adh5-prod`.`ordinateurs`.`ipv6` AS `address`, 
 +  128 AS `prefix_len`, 
 +  0 AS `type`, 
 +  NULL AS `dhcp6_iaid`, 
 +  `adh5-prod`.`ordinateurs`.`id` AS `host_id`  
 +from  
 +  `adh5-prod`.`ordinateurs`  
 +where  
 +((`adh5-prod`.`ordinateurs`.`ip` like '%.%.%.%') and  
 +(`adh5-prod`.`ordinateurs`.`ipv6` like '2001:660:3203:%::a%')) 
 +</code>
  
 +==== Liens externes ====
  
 +[[http://kea.isc.org/docs/kea-guide.html|Manuel KEA]]
 +[[ https://kea.isc.org/wiki/HostReservationDesign | KEA IPv6 Host Reservation ]]
wiki/services/kea-dhcp.1493493408.txt.gz · Dernière modification: 2020/06/27 18:15 (modification externe)