Articles Tagués ‘rfc’

1. Pourquoi mettre en oeuvre un serveur DHCP ?

DHCP signifie Dynamic Host Configuration Protocol.

Il s’agit d’un protocole qui permet à un ordinateur qui se connecte sur un réseau IP d’obtenir dynamiquement et automatiquement sa configuration IP. Le but principal étant la simplification de l’administration d’un réseau.

Le serveur DHCP fournit des adresses IP au format IPv4 (ex : 192.168.0.1/24) mais peut tout à fait fournir au format IPv6. Tout est question de configuration et de taille de parc informatique.

Comme tout protocole, DHCP est régit par des RFCs qui sont :

– RFC951 : Bootp
– RFC1497 : Options vendor extensions
– RFC1541 : Définition du protocole Dhcp
– RFC1542 : Interaction entre Bootp et Dhcp
– RFC2131 : Complément à la Rfc 1541
– RFC2132 : Complément aux options vendor extensions

2. Elément de l’infrastructure de votre système d’information

Vous l’aurez compris, le serveur DHCP est un élément fondamental de votre infrastructure. Néanmoins, j’émets une réserve sur la suite du document.

En effet, ce tutoriel vous guidera sur l’installation, la configuration et le maintien en conditions opérationnelles d’un serveur DHCP sous Linux.

Or, si dans votre infrastructure vous disposez également de services à publier, comme Exchange par exemple, je vous conseille d’utiliser le serveur DHCP intégré à l’Active Directory. Ce dernier offre plusieurs interfaces entre votre AD, votre serveur de messagerie et vos stations de travail.

3. Mode de fonctionnement

Le protocole DHCP repose sur 8 types de requêtes :

DHCPDISCOVER : permet aux clients de localiser les serveurs DHCP (ils obtiennent l’adresse IP du serveur DHCP qui réponds le plus rapidement)
DHCPOFFER : réponse du serveur qui fournit les premiers paramètres
DHCPREQUEST : requête du client pour prolonger son bail
DHCPDECLINE : le client annonce au serveur que l’adresse IP fournie par le serveur est déjà utilisée
DHCPACK : réponse du serveur au client avec les paramètres IP
DHCPNACK : réponse du serveur pour annoncer au client que le bail est échu ou que le serveur acquite le message DHCPDECLINE : message envoyé par le client au serveur et l’informant que l’adresse IP fournie est déjà utilisée
DHCPRELEASE : le client relache son adresse IP
DHCPINFORM : message du client qui demande les paramètres locaux. Le client a déjà son adresse IP

La première requête émise par le client est un message DHCPDISCOVER. Le serveur répond par un DHCPOFFER, en particulier pour soumettre une adresse IP au client. Le client établit sa configuration, demande éventuellement d’autres paramètres, puis fait un DHCPREQUEST pour valider son adresse IP. Le serveur répond simplement par un DHCPACK avec l’adresse IP pour confirmation de l’attribution. Normalement, c’est suffisant pour qu’un client obtienne une configuration réseau efficace, mais cela peut être plus ou moins long selon que le client accepte ou non l’adresse IP ou demande des infos complémentaires…

4. Installation du serveur DHCP

Très simple à installer, ouvrez un shell en tant que ROOT, puis :

# apt-get install dhcp3-server

Par défaut, votre nouveau serveur DHCP écoutera sur la première interface réseau (c à d eth0). Pour corriger cette configuration :

# dpkg-reconfigure dhcp3-server

ou

Modifiez le fichier de configuration /etc/default/dhcp3-server

5. Configuration du serveur

Le fichier de configuration du serveur dhcp est « /etc/dhcp3/dhcpd.conf »

Je conseille pour commencer de faire une copie de sauvegarde de ce fichier. Ensuite, vous pouvez effacer ou commenter les lignes existantes et ajouter les lignes suivantes :

option domain-name "mondomaine.priv";
option domain-name-servers 192.168.0.10, 194.168.0.11;
option routers 192.168.0.1;
default-lease-time 3600;
max-lease-time 3600;
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
     range 192.168.0.200 192.168.0.254;
 }

La première ligne permet de fournir aux clients le nom du domaine.

La ligne suivante donne aux clients le ou les serveurs DNS.

La ligne suivante donne l’adresse de la passerelle par défaut

La ligne suivante donne le délai du bail en secondes. Il est préférable d’augmenter la valeur par défaut pour limiter le trafic sur le réseau.

Le max-lease-time est le temps maximum de votre bail. Si vous configurez un default-lease-time à 10000 secondes et un max-lease-time à 4000 secondes, vos clients auront un bail maximum de 4000 secondes.Les 4 dernières lignes permettent d’indiquer la plage d’adresses gérée par le serveur dhcp :

La ligne «  authoritative  » permet d’indiquer que le serveur DHCP sera responsable de la zone concernée

Une fois la configuration terminée, il faut démarrer ou redémarrer le démon pour prendre en compte les modifications :

# /etc/init.d/dhcp3-server restart

Si le démarrage retourne une erreur, il faut penser à consulter les logs :

# tail -f /var/log/syslog

Le fichier suivant donne la liste des adresses IP délivrées par le serveur.

Pour chaque adresse IP l’on retrouve : son adresse mac, le nom de l’ordinateur, la date de début et de fin du bail :

/var/lib/dhcp3/dhclient.leases 

6. Configuration avancée

  • Configuration des logs : ajouter dans /etc/dhcp3/dhcpd.conf l’instruction : log-facility local7

L’instruction log-facility local7 indique un fichier de log de niveau debug mais toujours dans le fichier /var/log/syslog.

On sépare ensuite les logs DHCP dans un fichier nommé dhcpd.log.

Dans le fichier /etc/syslog.conf :

local7.*     /var/log/dhcpd.log

Onrelance le daemon syslog :

# /etc/init.d/sysklogd restart
  • DNS dynamique
### DNS Dynamique
 ddns-updates on;
 ddns-update-style interim;
 ### Pour autoriser les adresses fixes à s'inscrire dans le DNS
 update-static-leases on;
 ddns-domainname "mondomaine.priv";
  • Plusieurs zones DNS

Vous pouvez ajouter les différentes zones DNS (ex : chezmoi.mondomaine.priv, monvoisin.mondomaine.priv, toto.mondomaine.priv). L’intérêt est de permettre une résolution plus rapide.

Ajouter dans le fichier /etc/dhcp3/dhcpd.conf :

# zone chezmoi.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 100.11.0.10;                                                #serveur DNS primaire de la zone chezmoi.mondomaine.priv
 }
# zone monvoisin.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 101.11.0.10;                                               #serveur DNS primaire de la zone monvoisin.mondomaine.priv
 }
# zone toto.mondomaine.priv pour résolution rapide
 zone monvoisin.mondomaine.priv. {
 primary 102.11.0.10;                                               #serveur DNS primaire de la zone toto.mondomaine.priv
 }
  • Auto-configuration du proxy
### Autodetection du proxy
 option wpad-url code 252 = text;
 option wpad-url "http://monserveurapache/proxy.pac";

### Autodetection du proxy
option local-pac-server code 252 = text;
option local-pac-server "http://proxy/wpad.dat";

7. Comment avoir des IP fixes avec un serveur DHCP

Le protocole DHCP offre la possibilité d’attribuer un adresse IP fixe à un ordinateur configuré en DHCP.

Cas d’utilisation : une station de travail avec un accès particulier, un serveur

Pour cela, il faut ajouter dans le fichier /etc/dhcp3/dhcpd.conf, de nouvelles lignes.

L’exemple suivant permet de fixer une adresse IP en fonction de son adresse MAC :

host MASTATION  {
 hardware ethernet 00:11:22:33:aa:bb;
 fixed-address 192.168.0.110;
 }

Redémarrer le démon pour prendre en compte les modifications :

/etc/init.d/dhcp3-server restart

8. Configuration des postes clients

  • OS Linux :
  • Fichier de configuration : /etc/network/interfaces
  • Contenu :

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

  • Post-installation :
# /etc/init.d/networking restart
  • OS Windows :

Menu Démarrer >> Panneau de configuration >> Réseau

Cliquez sur « Obtenir une adresse IP dynamiquement

9. Comment vérifier que le client est correctement configuré

Sur un poste client linux, la commande suivante, permet de connaître la configuration IP et également de retrouver l’adresse MAC :

ifconfig

Sur un poste client Windows, la commande est la suivante :

ipconfig /all

La consultation des logs sur le serveur en temps réel (avec le paramètre -f), permet également de vérifier que tout fonctionne correctement :

tail -f /var/log/message

Publicités