ISC-DHCP-SERVER

De NCad Wiki
Aller à la navigation Aller à la recherche

Présentation

  • Le service DHCP permet de configurer automatiquement les paramètres IP des équipements sur le réseau.
  • Le programme ISC DHCP est fournit par l'Internet Systems Consortium et peut jouer divers rôles :
    • Rôle serveur, pour gérer les ressources IPs et les affecter aux différents terminaux.
    • Rôle client, pour interroger un serveur DHCP tiers en vu de récupérer la configuration IP du terminal sur lequel il est installé.
    • Rôle serveur relai, pour transférer les requêtes DHCP à un serveur tiers faisant autorité sur le réseau.

Configuration de base

  • Il faut indiquer au service sur quel(s) port(s) il doit écouter les requêtes DHCP.
  • Pour cela, il faut éditer le fichier /etc/default/isc-dhcp-server et renseigner la ligne suivante avec le(s) nom(s) de(s) interface(s).
INTERFACESv4="ens19" 

Déclaration d'un sous-réseau

  • La configuration du service DHCP ISC est définie dans le fichier /etc/dhcp/dhcpd.conf.
  • On définit d'abord les baux DHCP, c'est la durée d'attribution et de réservation d'une adresse IP à une machine sur le réseau :
default-lease-time 14400;
max-lease-time 28800;
  • On va indiquer au service qu'il fait autorité sur le réseau. En effet, il est possible d'avoir des serveurs DHCP relais.
authoritative;
  • Un même serveur DHCP peut attribuer des adresses IP à un ou plusieurs réseaux. Nous allons déclarer notre réseau dans le fichier de configuration :
subnet 192.168.1.0 netmask 255.255.255.0 {

  option domain-name "net.glx";
  option domain-name-servers 192.168.1.8;

  range 192.168.1.100 192.168.1.130;
  option routers 192.168.1.254;

}
  • Dans le cas de configuration présenté ci-dessus, notre serveur DHCP attribuera des adresses ip allant de 192.168.1.100 jusqu'à 192.168.1.130. On indique également quelques paramètres fondamentaux comme l'adresse du serveur de DNS (option domain-name-servers) ainsi que celui de la passerelle par défaut (option routers).
  • Au final, notre fichier de configuration ressemble à ceci :
default-lease-time 14400;
max-lease-time 28800;

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {

  option domain-name "net.glx";
  option domain-name-servers 192.168.1.8;

  range 192.168.1.100 192.168.1.130;
  option routers 192.168.1.254;

}
  • Pour appliquer les paramètres il est nécessaire de redémarrer le service :

service isc-dhcp-server restart

IP fixe

  • Il est possible de distribuer la même adresse IP pour un équipement donné. Pour cela, il faudra faire une association entre l'adresse IP voulue et l'adresse mac de la carte réseau de l'équipement.
  • Cette configuration s'effectue dans le fichier de configuration /etc/dhcp/dhcpd.conf dans le subnet auquel appartient l'adresse IP.
  • Dans notre exemple, nous souhaitons ici attribué l'adresse IP 192.168.1.50 à un équipement ayant pour adresse mac c0:a1:d7:45:56:74.
  • Cette affectation s'effectue avec le paramètre host :
 host PC20151 {
   hardware ethernet c0:a1:d7:45:56:74;
   fixed-address 192.168.1.50;
 }
  • Au final, voici ce que cela nous donne dans notre fichier de configuration :
option domain-name "net.glx";
option domain-name-servers 192.168.1.8;

default-lease-time 14400;
max-lease-time 28800;

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {

  range 192.168.1.100 192.168.1.130;
  option routers 192.168.1.254;
  option broadcast-addres 192.168.1.255;

  host PC20151 {
    hardware ethernet c0:a1:d7:45:56:74;
    fixed-address 192.168.1.50;
  }

}
  • Pour appliquer les paramètres il est nécessaire de redémarrer le service :

service isc-dhcp-server restart

BootP

Vous devez disposer d'un serveur TFTP sur votre machine. Dans cet exemple, il est installé sur la même machine que le service DHCP
  • Bootstrap Protocol permet d'indiquer à une machine - pendant sa phase de démarrage et de négociation DHCP - un fichier à exécuter au démarrage.
  • Ce fichier peut être un fichier de configuration par exemple. Nous prendrons ici l'exemple d'un commutateur réseau devant charger un fichier de configuration au démarrage.
  • Notre commutateur a pour adresse IP 192.168.1.10 et adresse mac 8c:de:45:fa:23:00. Le fichier de configuration à charger s'appelle sw20147_startup.bkp.
  • Dans les options générales du subnet nous allons indiquer les deux paramètres suivants :
allow bootp;
allow booting;
  • Puis nous allons déclarer notre commutateur comme un hôte spécifique avec le paramètre host :
host SW20147 {
  filename "sw20147_startup.bkp";
  next-server 10.46.0.254;
  hardware ethernet 8c:de:45:fa:23:00;
  fixed-address 192.168.1.10;
}
  • Au final, le fichier de configuration /etc/dhcp/dhcpd.conf ressemble à ceci :
default-lease-time 14400;
max-lease-time 28800;

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {

  option domain-name "net.glx";
  option domain-name-servers 192.168.1.8;

  range 192.168.1.100 192.168.1.130;
  option routers 192.168.1.254;

  allow bootp;
  allow booting;

  host PC20151 {
    hardware ethernet c0:a1:d7:45:56:74;
    fixed-address 192.168.1.50;
  }

  host SW20147 {
    filename "sw20147_startup.bkp";
    next-server 10.46.0.254;
    hardware ethernet 8c:de:45:fa:23:00;
    fixed-address 192.168.1.10;
  }

}
  • Pour appliquer les paramètres il est nécessaire de redémarrer le service :

service isc-dhcp-server restart

Fuseau horaire

Vous devez disposer d'un serveur NTP sur votre machine. Dans cet exemple, il est installé sur la même machine que le service DHCP
  • Le service DHCP peut fournir - en complément de la synchronisation de l'heure par un serveur de temps NTP - le TimeZone (TZ). Pour cela, ce paramètre doit être communiqué via les options 100 et 101 du serveur DHCP.
  • Dans le fichier /etc/dhcp/dhcpd.conf nous allons ajouter les quatre ligne suivantes :
option PCode code 100 = text;
option TCode code 101 = text;
option PCode "CET-1CEST,M3.5.0,M10.5.0/3";
option TCode "Europe/Paris";
  • Avec
    • Ligne 1 et 2 : déclaration des options utilisés et leur type.
    • Ligne 3 : la valeur du TZ.
    • Ligne 4 : Cette valeur prend la région / pays.
  • Pour appliquer les paramètres il est nécessaire de redémarrer le service :

service isc-dhcp-server restart

rDNS

Vous devez disposer d'un serveur de DNS sur lequel vous avez des droits d'administration. Cette configuration s'applique pour un serveur de DNS BIND9.


Configuration spécifique à BIND9
  • Tout d'abord, on rend le dossier /etc/bind accessible en lecture et écriture pour le daemon bind :
/etc/bind/** rw,
/etc/bind/ rw,
  • On rafraîchit la lecture du fichier afin de prendre en compte les modifications :

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.named

  • Si ce n'est pas le cas, on renseigne le fichier rndc.conf. Ce fichier contient un clé qui sera utilisée pour authentifier la communication entre bind9 et isc-dhcp-server :
key "rndc-key" {
       algorithm hmac-md5;
       secret "Ma clé Ultra Secrète !!!";
};

options {
       default-key "rndc-key";
       default-server 127.0.0.1;
       default-port 953;
};
Dans notre cas, bind9 et isc-dhcp-server sont hébergés sur la même machine. De ce fait, le serveur écoute les requêtes d'authentification sur le port 953 uniquement sur son interface locale 127.0.0.1. Le cas échéant, il faudra renseigner l'adresse IP privée de la machine.
  • Dans le fichier de déclaration des zones /etc/bind/name.conf.local, il faut indiquer la clé d'échange dans la section allow-update pour les demandes de mise à jour de la zone :
zone "mobi.net.glx" {
       type master;
       file "/etc/bind/db.mobi.net.glx";
       notify yes;
       allow-query {
       };
       allow-update {
               key rndc-key;
       };
       allow-transfer {
       };
};

zone "11.46.10.in-addr.arpa" {
       type master;
       notify yes;
       file "/etc/bind/db.11.46.10";
       allow-query {
       };
       allow-update {
               key rndc-key;
       };
       allow-transfer {
       };
};
  • Dans le fichier /etc/bind/name.conf on inscrit le chemin complet jusqu'au fichier contenant les informations de la clé. Le fichier sera lu en premier :
include "/etc/bind/rndc.key";
  • On redémarre le service bind9 pour appliquer la configuration :

service bind9 restart

  • On créer le fichier /etc/dhcp/rndc.key qui contiendra les informations de la clé d'authentification pour le service dhpcd :
key "rndc-key" {
       algorithm hmac-md5;
       secret "Ma clé Ultra Secrète !!!";
};
  • Au niveau de la configuration du fichier /etc/dhcp/dhcpd.conf il faut rajouter les éléments suivants :
ddns-update-style interim;

subnet 10.46.11.0 netmask 255.255.255.0 {

  ddns-updates on;
  ddns-domainname "mobi.net.glx";
  ddns-rev-domainname "in-addr.arpa";
  include "/etc/dhcp/rndc.key";

  zone mobi.net.glx {
       primary 10.46.0.46;
       key rndc-key;
  }

  zone 11.46.10.in-addr.arpa {
       primary 10.46.0.46;
       key rndc-key;
  }
}
  • On procède au redémarrage du service isc-dhcp-server pour appliquer la configuration :

service isc-dhcp-server restart

Vérifications
  • Pour vérifier le bon fonctionnement du paramétrage mis en place, nous allons simuler une requête DHCPREQUEST sur notre réseau. Pour cela, nous allons juste débrancher puis rebrancher un équipement du réseau. L'équipement doit être paramétré pour récupérer sa configuration IP via DHCP.
  • Pendant que l'équipement effectue sa négociation DHCP, nous allons observer le sortie du journal syslog.

Feb 21 09:37:36 shapley dhcpd[31189]: DHCPREQUEST for 10.46.11.103 from 4e:53:50:4f:4f:97 (PORT15801) via ens19
Feb 21 09:37:36 shapley dhcpd[31189]: DHCPACK on 10.46.11.103 to 4e:53:50:4f:4f:97 (PORT15801) via ens19

Feb 21 09:37:36 shapley named[31363]: client @0x7fbc480b9100 127.0.0.1#38457/key rndc-key: signer "rndc-key" approved
Feb 21 09:37:36 shapley named[31363]: client @0x7fbc480b9100 127.0.0.1#38457/key rndc-key: updating zone '3.146.10.in-addr.arpa/IN': deleting rrset at '103.11.46.10.in-addr.arpa' PTR
Feb 21 09:37:36 shapley named[31363]: client @0x7fbc480b9100 127.0.0.1#38457/key rndc-key: updating zone '3.146.10.in-addr.arpa/IN': adding an RR at '103.11.46.10.in-addr.arpa' PTR PORT15801.

Feb 21 09:37:36 shapley dhcpd[31189]: Added reverse map from 103.11.46.10.in-addr.arpa to PORT15801

  • Dans la capture ci-dessus, nous pouvons remarquer les éléments suivants :
    • Phase 1 : récupération de la configuration IP de l'équipement via la requête DHCPREQUEST.
    • Phase 2 : vérification de la clé de sécurité.
    • Phase 3 : mise à jour de la zone DNS.