Outils pour utilisateurs

Outils du site


linux:dhcp

DHCP : Serveur/relais/failover


DHCP

  • DHCP : Dynamic Host Configuration Protocol
  • Le protocole utilise le protocole de transport UDP.
  • Le serveur DHCP : port 67.
  • Le client DHCP : port 68














Le protocole de négociation : DHCP D O R A

Capture DORA

Configuration d'un serveur DHCP (dhcp3-server)

  • Installation basique :

apt-get install dhcp3-server

  • Par sécurité avant paramétrage, faire une copie de fichier de configuration:

cp /etc/dhcp3/dhcp.conf /etc/dhcp3/dhcp.conf.SAVE

Déclaration d'une plage d'attribution

Exemple de configuration simple:

default-lease-time                      86400;   # 24 hours
max-lease-time                          172800;  # 48 hours

subnet 192.168.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range 192.168.1.200 192.168.1.250;
}

Réservation d'addresse IP en filtrant sur l'addresse MAC

Déclaration des attributions IP par @MAC :

  • avantage de la sécurité / contrôle et précision du réseau

subnet 192.168.1.0 netmask 255.255.255.0 {
        use-host-decl-names on;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
                host SRV2K3 {
                # le filtre sur @MAC du host #
                hardware ethernet 00:0C:29:A1:68:4E ;
                # Il aura toujours l'adresse IP #
                fixed-address 192.168.1.205;
                }

                host SRVDMZ {
                hardware ethernet 00:0C:29:7D:1A:06 ;
                fixed-address 192.168.1.210;
                }

                host client_linux {
                hardware ethernet 00:0C:29:f2:11:b4 ;
                fixed-address 192.168.1.215;
                }

                host client_windows {
                hardware ethernet 00:0C:29:F6:05:F4 ;
                fixed-address 192.168.1.220;
                }

        }

Configuration de Failover/Load-balancer DHCP

Pour des raisons de haute disponibilité, mieux vaut disposer d'un service DHCP répartit sur 2 serveurs.
Double avantage :

  • la continuité du service en cas de panne du serveur primaire (FAILOVER)
  • la répartition des charges au niveau des baux attribués (LOAD-BALANCING)

Configuration du serveur primaire

vi /etc/dhcp/dhcpd.conf

  • Déclaration du serveur primaire du pool :

# FAILOVER DHCP #

failover peer "MONPOOL" {
        primary;
        address 172.16.1.1;
        port 647;
        peer address 172.16.1.2;
        peer port 847;
        max-response-delay 60;
        max-unacked-updates 10;
        mclt 3600;
        split 128;
        load balance max seconds 3;
}

# Définition de la plage adressable #
subnet 172.16.1.0 netmask 255.255.255.0 {
        option domain-name-servers 172.16.1.151, 172.16.1.152;
        option domain-name "domaine.fr";
        option routers 172.16.1.254;
        option broadcast-address 172.16.1.255;
        default-lease-time 7200;
        max-lease-time 14400;
        pool {
                failover peer "MONPOOL";
                range 172.16.1.10 172.16.1.20;
           }
        }

Configuration du serveur secondaire

vi /etc/dhcp/dhcpd.conf

Seule la définition du failover change :

#### FAILOVER DHCP

failover peer "MONPOOL" {
        secondary;
        address 172.16.1.2;
        port 847;
        peer address 172.16.1.1;
        peer port 647;
        max-response-delay 60;
        max-unacked-updates 10;
        load balance max seconds 3;
}

# Définition de la plage adressable #
subnet 172.16.1.0 netmask 255.255.255.0 {
        option domain-name-servers 172.16.1.151, 172.16.1.152;
        option domain-name "domaine.fr";
        option routers 172.16.1.254;
        option broadcast-address 172.16.1.255;
        default-lease-time 7200;
        max-lease-time 14400;
        pool {
                failover peer "MONPOOL";
                range 172.16.1.10 172.16.1.20;
           }
        }

La notion de répartition de charge est réalisé automatiquement par les serveurs qui se communiquent les baux attribués.
Synchronisation visible dans les logs.

Enfin, rien n'empêche d'avoir plusieurs plages IP sur différents réseaux, certaines déclarées en failover et d'autres sur un seul des serveurs !


Mise en place d'un relais DHCP (dhcp3-relay)

Le relais DHCP doit être situé dans le même domaine de diffusion (réseau) que les clients DHCP.
Son action transformera la requête multicast des client (broadcast) en adressage unicast. Il pourra donc transmettre les requêtes à un serveur DHCP situé sur un autre réseau par exemple.

Configuration :

  • Installer le paquet adéquate (ubuntu/debian ⇒ dhcp3-relay) :

aptitude search dhcp
aptitude install dhcp3-relay

  • L'installation est très simple, la conf est stockée dans /etc/default/dhcp3-relay :

######## RELAIS DHCP ########
# Adresse du serveur DHCP
SERVERS="192.168.1.1"

# Interfaces d'écoute
INTERFACES="eth0"

#Options additionnelles (ici exécution silencieuse)
OPTIONS="-q"

Lister les baux en cours

Le daemon dhcpd écrit les baux dans un fichier nommé dhcpd.leases.

Trouver le fichier :

locate dhcpd.leases

Visualiser les baux attribués :

cat /var/lib/dhcp3/dhcpd.leases

DHCP (DHCP3-SERVER) & DNS (BIND9)

Configurer DHCP avec DNS :

  • Configurer DHCP (DHCP3-SERVER) pour envoyer les MAJ au serveur DNS:

vi /etc/dhcp/dhcpd.conf
ddns-update-style interim;          # Mise à jour envoyé au DNS par le DHCP
ddns-updates on;                    # Active les enregistrements dynamiques
ignore-client-updates;              # Force les MAJ par le serveur DHCP
updates-static-leases on;           # Enregistrement DNS des réservations
ddns-domain-name "aldebaran.local"  # Suffixe DNS à indiquer au DHCP 

  • Autoriser les enregistrements dynamiques dans DNS (BIND9):

vi /etc/bind/named.conf
  zone "test.local" {
      type master;
      file "test.local.db";
      allow-update { 192.168.0.0/24; };
  };

  zone 1.168.192.in-addr.arpa" {
     type master;
     file "1.168.192.inv";
     allow-update { 192.168.0.0/24; };
  };

  • Surveillez les logs pour voir la MAJ dynamiques effectuées au cous d'une demande DHCP :

tail -f /var/log/syslog

Sécuriser les MAJ dynamiques DHCP-DNS:

Il est possible de sécuriser la conversation entre DHCP et DNS au moyen d'une clef partagé !

  • Modifier comme ci-dessous le dhcpd.conf :

vi /etc/dhcp/dhcpd.conf
# DECLARATION DE LA CLEF PARTAGE
   key DHCP_UPDATE {
      algorithm hmac-md5;
      secret PaSSworD; # Clef partagé
  };

# DECLARATION DES ZONES   
  zone test.local. {
    primary 192.168.1.1; # DNS serveur
    key DHCP_UPDATE;
  }

  zone 1.168.192.in-addr.arpa. {
    primary 192.168.1.1;
    key DHCP_UPDATE;
  }

  • Renseigner à DNS l'utilisation de cette clef partagée :

vi /etc/bind/named.conf
# DECLARATION DE LA CLEF PARTAGE
  key DHCP_UPDATE {
      algorithm hmac-md5;
      secret PaSSworD; # Clef partagé
  };
   
# UTILISER LA CLEF POUR LES MAJ
  zone "test.local" {
      type master;
      file "test.local.db";
      allow-update { DHCP_UPDATE; };
  };  

  zone 1.168.192.in-addr.arpa" {
     type master;
     file "1.168.192.inv";
     allow-update { DHCP_UPDATE; };
  };
 

linux/dhcp.txt · Dernière modification: 15/04/2016 à 21:15 (modification externe)

Outils de la page