[Résumé administrateur] Comment se faire des amis avec DHCP et ne pas avoir peur d'APIPA


Le service qui délivre des adresses IP aux appareils du réseau local semble être l'un des plus simples et des plus familiers. Néanmoins, mes jeunes collègues ont encore occasionnellement des questions telles que "l'ordinateur reçoit une adresse étrange", et l'apparition d'un deuxième serveur DHCP dans un segment de réseau provoque des frissons ou des problèmes de réseau.


Pour que ceux qui lisent ce document n'aient pas de telles questions, je voudrais rassembler un tas d'informations de base sur le fonctionnement des mécanismes d'émission d'adresse IP, les fonctionnalités et les exemples de configuration des configurations de sécurité et de sécurité. Et il sera peut-être intéressant pour les spécialistes chevronnés de rafraîchir les connexions neuronales.


Un peu de théorie et des solutions à des problèmes intéressants et peu pratiques - sous la coupe.


Dans un réseau local moderne, les adresses sont généralement fournies par des services spécialisés avec prise en charge de protocole. Le plus populaire d'entre eux est DHCP (Dynamic Host Configuration Protocol).


Zeroconf ou pourquoi avons-nous besoin d'une sorte de DHCP


En principe, une pile technologique appelée Zeroconf a été créée spécifiquement pour les petits réseaux. Il vous permet de vous passer de services et serveurs centralisés, y compris, mais sans s'y limiter, la délivrance d'adresses IP. Ils ferment (enfin, ou presque) les questions suivantes:


Obtention d'une adresse IP (Adressage IP privé automatique ou APIPA). Le système lui-même attribue une IP à partir du réseau 169.254.0.0/16 (à l'exception des grilles / 24 au début et à la fin de la plage), en fonction de l'adresse MAC et du générateur de nombres pseudo aléatoires. Ce système vous permet d'éviter les conflits et l'adresse de ce réseau est appelée liaison locale - y compris parce que ces adresses ne sont pas routées.


Recherche par nom . Le système annonce son nom de réseau et chaque ordinateur fonctionne avec lui comme avec DNS, stockant les entrées dans son cache. Apple utilise la technologie mDNS (Multicast DNS) et Microsoft utilise LLMNR (Link-local Multicast Name Resolution), mentionné dans l'article « Domaines, adresses et Windows: mélangez, mais ne secouez pas ».


Recherchez les services réseau . Par exemple, des imprimantes. Le protocole le plus célèbre est peut-être UPnP , qui, entre autres, peut ouvrir des ports sur les routeurs lui-même. Le protocole est plutôt compliqué, il utilise tout un ensemble d'add-ons comme http, contrairement au deuxième protocole bien connu - DNS-SD (DNS Service Discovery), qui utilise simplement des enregistrements SRV, y compris lorsque vous travaillez avec mDNS.


Avec tous les avantages de Zeroconf - sans aucune connaissance sacrée, vous pouvez construire un réseau fonctionnel en connectant simplement des ordinateurs au niveau physique - il peut même interférer avec les spécialistes informatiques.



Un peu ennuyeux, non?


Sur les systèmes Windows, pour désactiver le réglage automatique sur toutes les cartes réseau, vous devez créer un paramètre DWORD avec le nom IPAutoconfigurationEnabled dans la section HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters et le définir sur 0.


Bien sûr, Zeroconf ne convient que pour les petits réseaux isolés (par exemple, vous avez rencontré un ami avec des ordinateurs portables, les avez connectés via Wi-Fi et jouons à Diablo II, sans perdre de temps sur certains serveurs), et je veux également obtenir un réseau local sur Internet . Afin de ne pas souffrir des paramètres statiques de chaque ordinateur, des protocoles spéciaux ont été créés, dont le héros du jour - DHCP.


DHCP et ses progéniteurs


L'une des premières implémentations du protocole d'émission d'adresses IP est apparue il y a plus de 30 ans et s'appelait RARP (Reverse Address Resolution Protocol). Si nous simplifions un peu le principe de son fonctionnement, cela ressemblait à ceci: le client a fait une demande à l'adresse de diffusion du réseau, le serveur l'a acceptée, a trouvé la liaison de l'adresse MAC et IP du client dans sa base de données et a envoyé une réponse IP.



Schéma du protocole RARP.


Et tout semblait fonctionner. Mais le protocole avait ses inconvénients: il était nécessaire de configurer le serveur dans chaque segment du réseau local, d'enregistrer les adresses MAC sur ce serveur, et il n'était pas du tout possible de transmettre des informations supplémentaires au client. Par conséquent, pour le remplacer, le protocole BOOTP (Bootstrap Protocol) a été créé.


Initialement, il était utilisé pour les postes de travail sans disque, qui devaient non seulement donner une adresse IP, mais également transmettre des informations supplémentaires au client, telles que l'adresse du serveur TFTP et le nom du fichier de téléchargement. Contrairement à RARP, le protocole prend déjà en charge le relais - petits services qui transmettent les demandes au serveur «principal». Cela a permis d'utiliser un serveur sur plusieurs réseaux simultanément. Il restait juste le besoin de configurer manuellement les tables et la taille limite pour des informations supplémentaires. En conséquence, le protocole DHCP moderne est entré en scène, qui est une extension compatible de BOOTP (le serveur DHCP prend en charge les clients hérités, mais pas l'inverse).


Une différence importante par rapport aux protocoles hérités est la possibilité d'émettre temporairement une adresse (bail) et de transférer une grande quantité d'informations différentes au client. Ceci est réalisé en raison de la procédure moins triviale pour obtenir l'adresse. Si, dans les anciens protocoles, le schéma était simple, du type demande-réponse, alors le schéma est le suivant:


  • Le client recherche le serveur avec une demande de diffusion, demandant également des paramètres supplémentaires.
  • Le serveur répond au client en lui offrant une adresse IP et d'autres paramètres.
  • Le client confirme les informations reçues par demande de diffusion, en indiquant dans la confirmation l'adresse IP du serveur sélectionné.
  • Le serveur est d'accord avec le client en lui envoyant une demande, à la réception de laquelle le client configure déjà l'interface réseau ou la rejette.


Le schéma de communication du client avec le serveur de transfert et le serveur.


Vous pouvez en savoir plus sur le schéma d'interaction serveur-client et la structure des demandes et des réponses, par exemple, dans le document « Structure, format et but des paquets DHCP ».


Lors de plusieurs entretiens, ils m'ont demandé: «Quels transports et quels ports DHCP utilise-t-il?» Au cas où, nous répondons: "Serveur UDP: 67, client UDP: 68".

De nombreuses implémentations d'un serveur DHCP ont été rencontrées par beaucoup, même lors de la configuration d'un réseau domestique. En effet, maintenant le serveur est:


  • Sur presque tous les routeurs, en particulier SOHO.
  • Sur les systèmes Windows Server. Vous pouvez lire sur le serveur et sa configuration dans la documentation officielle.
  • Sur les systèmes * nix. Le logiciel le plus populaire est peut-être le serveur DHCP ISC (dhcpd) et la «moissonneuse» Dnsmasq .

Il existe de nombreuses implémentations spécifiques, mais, par exemple, les paramètres du serveur sont limités sur les routeurs SOHO. Cela concerne principalement les paramètres supplémentaires, en plus du classique "adresse IP, masque, passerelle, serveur DNS". Et ce sont précisément ces options supplémentaires qui suscitent le plus grand intérêt pour le fonctionnement du protocole. La liste complète peut être trouvée dans le RFC correspondant, mais j'analyserai quelques exemples intéressants.


Options DHCP étonnantes


Dans cette section, je vais discuter de l'utilisation pratique des options DHCP sur l'équipement MikroTik. J'attirerai immédiatement l'attention sur le fait que toutes les options ne sont pas définies de manière évidente, le format des paramètres est décrit dans le wiki . Il convient également de noter que le client applique les options uniquement lorsqu'il les demande. Sur certains serveurs, vous pouvez forcer l'envoi des paramètres: par exemple, dans le serveur DHCP ISC, la directive dhcp-parameter-request-list est responsable de cela, et dans Dnsmasq - * * --dhcp-option-force . MikroTik et Windows ne savent pas comment.


Option 6 et option 15. Commençons par une simple. Le paramètre numéro 6 correspond aux serveurs DNS attribués aux clients, 15 au suffixe DNS. L'attribution d'un suffixe DNS peut être utile lorsque vous travaillez avec des ressources de domaine dans un réseau hors domaine, comme je l'ai décrit dans l'article « Comment nous avons réduit le personnel via le Wi-Fi ». Configurez MikroTik sous le spoiler.


Configuration de MikroTik, option 15
#  15.  —   HEX . /ip dhcp-server option add code=15 name=dns-suffix value=0x57687920616c6c207468697320736869743f #   /ip dhcp-server option sets add name=dns option=dns-suffix #   DHCP-  . /ip dhcp-server network set [find comment="wi-fi client dhcp"] dhcp-option-set=dns 

Savoir qu'un serveur DNS est également une option est récemment devenu utile lorsque différents clients ont dû émettre différents serveurs DNS. La décision du formulaire «émettre un serveur et créer des règles dst-nat différentes pour le port 53» ne convenait pas pour un certain nombre de raisons. Une partie de la configuration est à nouveau sous le spoiler.


Configuration de MikroTik, option 6
 # ,  ,  ip    /ip dhcp-server option add code=6 name=google value="'8.8.8.8'" add code=6 name=cloudflare value="'1.1.1.1'" #  /ip dhcp-server lease add address=10.0.0.2 dhcp-option=google mac-address=11:11:11:11:11:11 server=dhcp add address=10.0.0.3 dhcp-option=cloudflare mac-address=22:22:22:22:22:22 server=dhcp 

Option 66 et option 67 . Ces paramètres sont revenus de BOOTP et vous permettent de spécifier le serveur TFTP et l'image pour le démarrage réseau. Pour une petite branche, il est assez pratique d'y installer Mikrotik et des postes de travail sans disque et de jeter une image préparée d'une ThinStation sur le routeur . Exemple de configuration DHCP:


 /ip dhcp-server option add name="option66" code=66 value="s'192.168.88.1'" add name="option67" code=67 value="'pxelinux.0'" /ip dhcp-server option sets add name="set-pxe" options=option66,option67 

Option 121 et option 249 . Ils sont utilisés pour transférer des itinéraires supplémentaires au client, ce qui dans certains cas peut être plus pratique que d'enregistrer des itinéraires sur la passerelle par défaut. Les paramètres sont presque identiques, sauf que les clients Windows préfèrent ce dernier. Pour configurer le paramètre, les routes doivent être converties en hexadécimal, en collectant le masque de réseau de destination, l'adresse réseau et la passerelle sur une seule ligne. En outre, par RFC, vous devez ajouter un itinéraire par défaut. L'option de réglage est sous le spoiler.


Configuration de l'itinéraire

Supposons que nous devons ajouter une route comme dst-address = 10.0.0.0 / 24 gateway = 192.168.88.2 aux clients, et la passerelle principale sera 192.168.88.1. Apportons tout cela dans HEX:


Paramètres des donnéesDécHex
Masque240x18
Réseau de destination10.0.0.00x0A 00 00
Passerelle192.168.88.20xc0 a8 58 02
Réseau par défaut0.0.0.0/00x00
Passerelle par défaut192.168.88.10xc0 a8 58 01

Collectons tout ce bonheur en une seule ligne et obtenons le réglage:


 /ip dhcp-server option add code=121 name=classless value=0x0A0000c0a8580200c0a85801 

Plus d'informations dans l'article « Mikrotik, DHCP Classless Route ».


Option 252. Configuration automatique du serveur proxy. Si, pour une raison quelconque, l'organisation utilise un proxy opaque, il sera commode de le configurer avec les clients via un fichier wpad (pac) spécial. Un exemple de configuration d'un tel fichier est décrit dans le document Proxy Auto Configuration (PAC) . Malheureusement, MiroTik n'a pas de serveur Web intégré pour héberger ce fichier. Vous pouvez utiliser le package hotspot ou les fonctionnalités du métarouteur pour cela, mais il est préférable de placer le fichier ailleurs.


Option 82 . L'une des options les plus utiles n'est pas seulement pour le client, mais pour le relais DHCP. Vous permet de transférer des informations sur le port du commutateur auquel le client est connecté et l'ID du commutateur lui-même. Sur la base de ces informations, le serveur, à son tour, peut déjà émettre un certain ensemble de paramètres pour le client ou simplement l'enregistrer - pour trouver le port de connexion du client, il n'était pas nécessaire d'accéder à tous les commutateurs consécutifs (surtout s'ils ne sont pas sur la pile).


Après avoir configuré le relais DHCP sur le routeur, les champs ID de circuit d'agent et ID distant d'agent apparaîtront dans les informations client, où le premier est l'identifiant du port du commutateur et le second est l'identifiant du commutateur.



Délivrance d'adresses avec l'option 82.


Les informations sont données au format hexadécimal. Pour plus de commodité, vous pouvez utiliser des scripts pour analyser le journal DHCP. Par exemple, une solution pour une solution de Microsoft est publiée dans la galerie de scripts Technet intitulée « Decorating DHCP Options 82 ».


L'option 82 est également activement utilisée dans le système de facturation des fournisseurs et dans la protection du réseau contre les interférences extérieures. C'est un peu plus détaillé.


Ajoutez des réseaux de fiabilité et de sécurité


En raison de la simplicité du protocole et de la présence de demandes de diffusion, il existe des attaques efficaces sur l'infrastructure - principalement de type MITM («l'homme au milieu»). Les attaques sont effectuées en augmentant votre serveur ou relais DHCP: après tout, si vous contrôlez l'émission des paramètres réseau, vous pouvez facilement rediriger le trafic vers une passerelle compromise. Pour faciliter l'attaque, la famine DHCP est utilisée (faisant semblant d'être un client ou un relais, l'attaquant force le serveur DHCP "natif" à épuiser ses adresses IP). Vous pouvez en savoir plus sur la mise en œuvre de l'attaque dans l'article « Attacking DHCP », tandis que DHCP Snooping est la méthode de protection.


Il s'agit d'une fonction de commutation qui vous permet de «lier» un serveur DHCP à un port spécifique. Les réponses DHCP sur les autres ports seront bloquées. Dans certains commutateurs, vous pouvez configurer le travail avec l'option 82 lorsqu'il est détecté dans le package (ce qui indique la présence d'un relais): jeter, remplacer, laisser inchangé.


Dans les commutateurs MikroTik, DHCP Snooping est activé dans les paramètres du pont:


 # dhcp-snooping  option 82 /interface bridge add name=bridge set [find where name="bridge"] dhcp-snooping=yes add-dhcp-option82=yes #    /interface bridge port add bridge=bridge interface=ether1 add bridge=bridge interface=ether2 trusted=yes 

La configuration dans d'autres commutateurs est similaire.


Il convient de noter que tous les modèles MikroTik ne prennent pas en charge le matériel pour DHCP Snooping - seul CRS3xx en dispose.

En plus de la protection contre les pirates malveillants, cette fonction soulagera les maux de tête lorsqu'un autre serveur DHCP apparaît sur le réseau - par exemple, lorsqu'un routeur SOHO utilisé comme commutateur avec un point d'accès réinitialise ses paramètres. Malheureusement, dans les réseaux où se trouve l'équipement SOHO, il n'y a pas toujours une structure de réseau câblé compétente avec des routeurs gérés. Mais c'est une autre question.



Une belle commutation est la clé de la santé.


D'autres méthodes de protection incluent la sécurité des ports («lier» une adresse MAC spécifique au port du routeur; si le trafic provenant d'autres adresses est détecté, le port sera bloqué), l' analyse du trafic pour le nombre de demandes et de réponses DHCP ou la limitation de leur nombre, et, bien sûr, divers systèmes IPS \ IDS .


Si nous parlons non seulement de protection du réseau, mais aussi de fiabilité, il ne sera pas hors de propos de mentionner les capacités du DHCP à sécurité intégrée. En effet, avec sa simplicité, DHCP est souvent l'un des services clés, et s'il échoue, le travail de l'organisation peut être paralysé. Mais si vous installez simplement deux serveurs avec des paramètres identiques, rien d'autre qu'un conflit d'adresses IP n'y mènera.


Il semblerait que vous pouvez diviser la zone de distribution entre deux serveurs et laisser l'un donner la moitié des adresses et l'autre donner l'autre. Voici juste une moitié paralysée de l'infrastructure est légèrement meilleure que l'ensemble.


Nous analyserons des options plus pratiques.


Sur les systèmes Windows Server à partir de 2012, le système de redondance DHCP fonctionne prêt à l'emploi, en mode d'équilibrage de charge (actif-actif) ou en mode de tolérance aux pannes (actif-passif). Une description détaillée de la technologie et des paramètres se trouve dans la documentation officielle. Je note que la tolérance aux pannes est configurée au niveau de la zone, de sorte que différentes zones peuvent fonctionner dans différents modes.



Configuration du basculement du serveur DHCP sous Windows.


Le serveur DHCP ISC utilise la directive de pairage de basculement pour configurer la tolérance aux pannes; il est proposé de synchroniser les données indépendamment - par exemple, en utilisant rsync. En savoir plus dans l'article " Deux serveurs DHCP sur Centos7 ... "


Si vous créez une solution tolérante aux pannes basée sur MikroTik, vous ne pouvez pas vous passer d'astuces. L'une des options pour résoudre le problème a été annoncée au MUM RU 18, puis publiée sur le blog de l' auteur . En bref: deux serveurs sont configurés, mais avec un paramètre de seuil de délai différent (délai de réponse). Ensuite, le serveur émettra l'adresse avec moins de retard et avec un délai plus long - uniquement lorsque la première échoue. La synchronisation des informations doit à nouveau être effectuée avec des scripts.


Personnellement, à un moment donné, je me suis assez tapoté les nerfs lorsqu'un routeur est apparu sur le réseau «accidentellement» et connecté au réseau local à la fois aux interfaces WAN et LAN.


Dites-moi, avez-vous dû faire face à la lèpre DHCP?

Source: https://habr.com/ru/post/fr467333/


All Articles