Forum Security-X > Cours et Tutoriels

Organisation d'un réseau local

(1/1)

XmichouX:
2) Organisation d'un réseau local

Une adresse IPv4 est codée sur 4 octets (soit 32 bits), on peut donc adresser 2^32 machines, soit environ 4 milliards.
Internet ne cessant de croître, la technologie IPv4 seule n'a pas suffi pour assurer un adressage différent pour chaque machine connectée à Internet. Nous verrons dans ce chapitre et les suivants quelles techniques ont été mises au point pour pallier ce point sensible.

Néanmoins, il convient de dire qu'aujourd'hui, on parle de réseaux locaux connectés à Internet, qui est en fait une immense interconnexion de réseaux. Tous les réseaux particuliers, d'entreprises, etc., sont des réseaux dits locaux.

Chaque PC est représenté par une adresse IP locale au sein de son réseau local et par une adresse IP publique sur Internet.

Regardez la différence en tapant ipconfig/ifconfig en console (IP locale) et en regardant l'adresse IP affichée ici par exemple : http://www.mon-ip.com/ (IP publique). Nous parlerons plus en détail de ces points dans le chapitre suivant.

a) Réseau local simple

Dans un réseau de particuliers, on trouve généralement une organisation de ce type : une "box" (permettant de recevoir et d'envoyer les paquets réseaux vers et en provenance d'internet) et des PCs reliés à cette dernière par câbles ou en Wi-Fi. Si les PC's connectés à cette box sont nombreux et par câble, on peut même trouver des switchs Ethernet.

Votre connexion Internet est délivrée par votre FAI (Fournisseur d'Accès à Internet) à travers la box qu'il vous prête/loue. Chaque FAI possède une ou plusieurs plage(s) d'adresses IP, dont votre box fait partie. Le FAI attribue donc à votre box une adresse IP, qui est votre adresse IP publique sur Internet. Nous reviendrons sur ce point avec le protocole NAT.
Note : Une plage d'adresse IP est en fait un ensemble d'adresses IP, par exemple de 192.168.0.5 à 192.168.0.65. On va s'intéresser ici au protocole IPv4 toujours d'actualité.

La box fournit par votre FAI endosse aussi le rôle de routeur, fonction que nous verrons dans le chapitre suivant.

Une fois connecté au routeur, l'ensemble des PC's, à travers des switchs/hubs pour un réseau qui commence à être important, forme avec le routeur un réseau privé ou local aussi appelé LAN (Local Area Network) : les équipements du réseau local possèdent alors une adresse IP locale à ce réseau.

Un réseau logique (local ou non) est actuellement caractérisé par plusieurs choses :
- l'adresse du réseau (fixe),
- le masque de sous-réseau,
- l'adresse IP du routeur et l'adresse IP de broadcast.

Un réseau local ne peut pas contenir un nombre illimité de machines, comme dans tout réseau.
Pour préciser le nombre de machines dont on souhaite disposer sur le réseau, on utilise un masque de sous-réseau (subnetmask).

Ce masque permet de distinguer, à partir d'une adresse IP locale quelconque, le nombre de bits caractérisant l'adresse du réseau (bits positif dans le masque) et le nombre de bits caractérisant l'adresse d'un hôte (bits nuls dans le masque) sur le réseau. Pour cette raison, le masque fait 4 octets, comme une adresse IPv4. Si on a 8 bits représentant l'adresse de l'hôte, comme dans la plupart des réseaux de particuliers, on peut alors connecter 2^8 -3 machines. -3, car il faut réserver une adresse pour le routeur, une autre pour le broadcast (utilisé par certains protocoles, notamment par ARP), et une pour l'adresse réseau (adressage de l'hôte nul).
Une adresse IP contient donc une partie relative au réseau et une partie relative à l'hôte.

Prenons cette adresse IP locale d'un ordinateur A : 192.168.0.8 et admettons que le masque de sous-réseau soit 255.255.255.0.
Binairement, le masque se traduit comme suit  : 1111 1111 . 1111 1111 . 1111 1111 . 0000 000. (= 255.255.255.0)
On a donc 24 bits à 1 (réseau) et 8 à 0 (hôte). Pour raccourcir, on peut dire que l'adresse IP est 192.168.0.8 /24 (notation CIDR).
Pour trouver l'adresse IP du réseau, il suffit de prendre l'adresse IP et de mettre les 8 derniers bits à 0 (désignant l'hôte selon le masque) tout en gardant les autres bits tels qu'ils le sont (désignant le réseau), ce qui revient à faire l'opération logique booléenne ET (&) entre l'adresse IP et le masque bit à bit.
Rappel :  1 & 1 retourne 1 sinon & retourne toujours 0.
Pour trouver l'adresse de l'hôte sur ce réseau, il suffit de faire la même chose en inversant le masque (mettre les 0 à 1 et les 1 à 0).

Dans l'exemple présent, les trois premiers octets de l'adresse IPv4 représentent l'adresse réseau, et le dernier représente l'adresse de l'hôte.

Adresse IP                 = 1100 0000 . 1010 1000 . 0000 0000 . 0000 1000 = 192.168.0.8
&
Masque sous-réseau = 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000 = 255.255.255.0
=
Adresse réseau         = 1100 0000 . 1010 1000 . 0000 0000 . 0000 0000 = 192.168.0.0

Adresse IP                 = 1100 0000 . 1010 1000 . 0000 0000 . 0000 1000 = 192.168.0.8
&
Masque inversé         = 0000 0000 . 0000 0000 . 0000 0000 . 1111 1111 = 0.0.0.255
=
Adresse hôte             = 0000 0000 . 0000 0000 . 0000 0000 . 0000 1000 = 0.0.0.8

L'adresse IP locale complète du PC est donc bien 192.168.0.8 (192.168.0.0 + 0.0.0.8 ).

Voici un schéma récapitulant ces notions :


L'adresse IP de broadcast (diffusion à "tout le monde") dans le réseau local s'obtient en prenant l'adresse réseau (192.168.0.0 ici) et en mettant tous les bits réservés à l'adresse de l'hôte à 1, ce qui donne ici 192.168.0.255. L'adresse IP de la passerelle par défaut (routeur) s'obtient généralement en retirant 1 à l'adresse de broadcast, soit ici 192.168.0.254 (cela peut aussi être 192.168.0.1, cela dépend...).
Rappelons que la passerelle par défaut est le routeur vous permettant de sortir du réseau local.
Mais vous pouvez tout à fait changer cette adresse dans la configuration du routeur.

Aujourd'hui, il existe de manière générale trois plages d'adresses IP pour les réseaux locaux/privés :

- 10.0.0.0 /8 : L'attribution d'adresses IP va de 10.0.0.1 à 10.255.255.254 (en enlevant le broadcast et l'adresse réseau). On a 24 bits d'adressage pour les hôtes, ce qui laisse place à 2^24 -3 hôtes, soit environ 16 000 000 de postes. Cette plage est généralement utilisée au sein des entreprises et des universités.
- 172.16.0.0/12 : L'attribution d'adresses IP va de 172.16.0.1 à 172.31.255.254. Pour trouver l'adresse maximum, il suffit de mettre tous les bits désignant l'hôte à 1. En effet, ici, 12 bits représentent l'adresse réseau. Au départ, on a donc 16 qui vaut 0001 0000b. En mettant les bits de l'hôte à 1, on obtient bien 0001 1111b = 31. On peut connecter environ 1 000 000 de postes.
- 192.168.0.0 /16 : L'attribution d'adresses IP va de 192.168.0.1 à 192.168.255.254. On peut connecter jusqu'à 65533 machines. C'est la plage type pour les réseaux de particuliers. Cependant, généralement, votre routeur est configuré avec un masque sous-réseau 255.255.255.0 (/24), ce qui signifie que l'attribution d'adresses IP va de 192.168.0.1 à 192.168.0.254, pour 253 machines.

Ces plages d'adresses, utilisées par tous les particuliers et entreprises, sont par conséquent non routables sur Internet (car non unique au monde) : cela signifie qu'on ne peut pas utiliser notre adresse IP locale sur Internet. On va utiliser notre adresse IP publique.

Il existe d'autres plages d'adresses de réseaux locaux moins utilisés, qui sont intermédiaires.

Voici un exemple de schéma d'un réseau logique local actuel :


On distingue en bas le réseau local. Les PCs et le routeur font partie du réseau local 192.168.0.0 /24. Puisque grâce au masque du réseau, on voit que 8 bits identifient l'hôte sur le réseau, alors pour indiquer l'adresse IP de chaque hôte (les PCs et le routeur), on indique juste le dernier octet.
Le routeur lui fait aussi partie du réseau du FAI, qui lui n'est pas local (par exemple Free, Orange, ...) et permet l'accès à Internet : c'est un des nombreux réseaux interconnectés que représente Internet.

Auparavant, avant que la pénurie d'adresses IPv4 intervienne, les réseaux locaux (au sens logique) n'existaient pas (il n'y en avait pas besoin), il existait globalement trois classes d'adresses IP :
- A : Plage de 0.0.0.0 à 127.255.255.255, avec un masque 255.0.0.0 (/8). Autrement dit, il y avait le réseau 0.0.0.0 /8, le réseau 1.0.0.0 /8, et ainsi de suite jusqu'au réseau 127.0.0.0 /8.
- B : Plage de 128.0.0.0 à 192.255.255.255, avec un masque 255.255.0.0 (/16). Autrement dit, il y avait le réseau 128.0.0.0 /16, le réseau 128.1.0.0 /16, et ainsi de suite jusqu'au réseau 192.255.0.0 /8.
- C : Plage de 192.0.0.0 à 223.255.255.255, avec un masque 255.255.255.0 (/24).

Il y avait encore deux autres classes d'adresses D et E réservées (multicast, etc.).
On pourrait dire que dans une plage d'adresses IP, l'adresse réseau est fixe  : par exemple la plage réservée pour les réseaux locaux de particuliers aujourd'hui, généralement 192.168.X.X. Ce qui signifie qu'on pourrait en théorie tout à fait trouver une adresse IP publique de la forme 192.167.X.X.
Alors que dans une classe, l'adresse réseau peut varier de tant à tant : classe A dont l'adresse réseau varie de 0 à 127.

Les réseaux locaux n'existant pas, chacune des adresses était routable sur Internet (une machine = une IP sur Internet). Il n'y avait donc pas de notion privée/publique.
Pour plusieurs raisons, et notamment la pénurie d'adresses IPv4 (2^32 ~= 4 milliards d'adresses possibles), ces classes ont été abolies pour laisser place au CIDR (Classless Inter-Domain Routing).

b) Sous-réseaux

Dans un réseau local d'une entreprise qui possède différents services, il faut souvent séparer et cloisonner chaque service dans le réseau.
Pour ce faire, l'entreprise peut choisir d'administrer son réseau en le découpant en sous-réseaux logiques.

Cela permet notamment :
- de déterminer à quel service fait référence telle adresse IP (en regardant l'adresse du sous-réseau de celle-ci),
- de limiter la pollution du réseau lors de requêtes en broadcast, par exemple quand un PC démarre et désire obtenir son adresse IP (ce que nous verrons plus loin). Le broadcast se fait donc forcément dans le sous-réseau auquel appartient la machine, et pas dans tout le réseau local (à condition de proposer un serveur DHCP pour chaque sous-réseau).
- d'économiser une perte de temps (calcul) pour chaque noeud (ordinateur) du réseau. En effet, dans un "grand" réseau local, un PC est plus susceptible de perdre du temps à rejeter des trames qui ne lui sont pas destinées, que sur un petit sous-réseau. Cela étant dit, cette économie de temps sera plutôt liée à l'architecture physique du réseau (utilisation de switchs, VLAN ...).
- de filtrer les flux avec un pare-feu. On va pouvoir autoriser/refuser l'accès à une ressource en particulier à certaines plages d'adresses IP ou à Internet. S'il n'y a pas de sous-réseaux, il n'y a alors pas de notion de plage, et donc pas de notion de filtrage.

Maintenant, comment créer des sous-réseaux ? Ce n'est pas tellement compliqué.
Admettons que l'on parte d'un réseau de type : 10.0.0.0 /8.

Pour séparer ce réseau local en sous-réseaux, on va devoir attribuer un ou plusieurs bits de plus dans le masque sous-réseau pour chaque sous-réseau. Pour cette raison, on ne peut pas créer un nombre de sous-réseaux qui ne soit pas multiple de 2, car un bit prend seulement deux valeurs.

Par exemple, à partir du réseau 10.0.0.0 /8, si l'on souhaite avoir deux sous-réseaux, il faudra changer le masque en /9 (9 bits pour le réseau) pour les deux sous-réseaux, soit 1 bit de plus pour le réseau dans le masque.

On obtient ainsi deux sous-réseaux :
- 10.0.0.0 /9, en mettant le 9ème bit à 0. On peut y connecter 2^23 machines (0000 1010 . 0*** **** . **** **** . **** ****). Attribution d'IP de 10.0.0.0 à 10.127.255.255.
- 10.128.0.0 /9, en mettant le 9ème bit à 1. On peut y connecter 2^23 machines (0000 1010 . 1*** **** . **** **** . **** ****). Attribution d'IP de 10.128.0.0 à 10.255.255.255.

On a donc au départ un réseau local général de 2^24 machines, qui est maintenant divisé en deux. Rappel : 2^24 = 2^23 * 2.

De la même façon, pour obtenir 4 sous-réseaux, on va cette fois utiliser deux bits de plus pour le réseau (2^2 = 4), ce qui donne :
- 10.0.0.0 /10 : de 10.0.0.0 à 10.63.255.255. 2e octet = 00**b. (0000 1010 . 00** **** . **** **** . **** ****)
- 10.64.0.0 /10 : de 10.64.0.0 à 10.127.255.255. 2e octet = 01**b. (0000 1010 . 01** **** . **** **** . **** ****)
- 10.128.0.0 /10 : de 10.128.0.0 à 10.191.255.255. 3e octet = 10**b. (0000 1010 . 10** **** . **** **** . **** ****)
- 10.192.0.0 /10 : de 10.192.0.0 à 10.255.255.255. 4e octet = 11**b. (0000 1010 . 11** **** . **** **** . **** ****)

Si cela vous embrouille, il vous suffit de traduire en binaire pour comprendre. Puisqu'on a défini un masque de /10, 10 bits sont utilisés pour identifier le réseau. On a donc les 8 premiers bits qui ne changent pas, puisqu'ils caractérisent le réseau local en général (donné par le FAI).
Les deux autres bits se trouvent au début du deuxième octet (poids fort). C'est ceux-là qu'on change pour désigner et séparer les sous-réseaux de manière logique. On met donc une valeur différente pour chaque sous-réseau. Ici, on part de 0 jusqu'à 4 (valeur maximale pour deux bits).
Les deux autres bits sont ceux de l'hôte, donc variables. Alors que ceux du sous-réseau restent fixes pour tout le sous-réseau.

Bien, nous avons vu comment cela fonctionne théoriquement, mais comment mettre cela en pratique ?

Pour cela, il faut configurer le routeur incorporé dans votre box.
Un routeur est un équipement réseau composé d'au moins deux interfaces réseaux. Ces interfaces sont nommés ethX (comme ethernet, ou X est un numéro).  Prenons un exemple simple avec un routeur avec exactement 2 interfaces comme le sont la plupart des box.

Nous nommerons :
 - eth0, l'interface qui est connectée sur Internet.
 - eth1, l'interface donnant sur le réseau local (LAN).

Chaque interface possède sa propre adresse IP. L'interface eth0 a pour adresse IP l'adresse publique que votre FAI vous fournit. L'interface eth1 possède elle une adresse IP privée : l'IP du réseau local. On notera ici que les deux interfaces sont distinctes d'un point de vue physique.

Voici maintenant un exemple simple.

- un paquet arrive  sur eth1 : il vient donc du LAN. À la lecture de l'entête IP (adresse IP de www.google.fr par exemple), le routeur sait qu'il doit l'envoyer sur eth0 qui donne sur Internet. Il réécrit donc l'entête dans le but d'y faire figurer son adresse MAC (adresse MAC Source) et l'adresse IP de son interface eth0 (adresse IP Source), autrement dit l'adresse IP publique du PC du LAN. Il envoie ensuite ce paquet modifié. Le principe abordé est celui du NAT, étudié dans le chapitre suivant.

- un paquet arrive maintenant sur eth0. Le routeur le lit et deux possibilités s'offrent à lui.
    - le paquet n'est destiné à personne (ou règle de pare feu le bloquant) : le paquet est rejeté.
    - le paquet est à destination d'un PC du LAN : réécriture de l'entête IP pour faire apparaître l'IP de ce PC et il envoie le paquet sur son interface eth1, correspondant au réseau local.

Voila une décision simple de routage. Pour ce qui est du changement de sous-réseau, il doit lire sa table routage qui sera présentée dans un autre cours.

Pour faire simple, pour créer des sous-réseaux, il suffit de configurer les interfaces (dites virtuelles) du routeur pour chaque sous-réseau. Au final, on obtient donc un sous-réseau par interface.

c) Le manque d'IPv4

Comme précisé précédemment, les adresses IPv4 ne sont plus assez nombreuses pour pouvoir attribuer une adresse par machine connectée. Pour résoudre ce problème, il y a eu essentiellement 3 techniques utilisées.

La première vient d'être décrite. Il s'agit du subnetting, ce qui correspond au découpage en sous-réseaux d'un réseau plus grand. Mais cela n'a pas suffi pour répondre à la demande toujours plus grande d'internet. Cette notion de sous-réseaux est étroitement lié à la notion de classe.

Il n'y avait pas de réseaux locaux avant (plages réservées pour adresses privées comme aujourd'hui) mais seulement des classes d'IP. Avant, lorsqu'une adresse commençait par 127 par exemple, on savait qu'il s'agissait de la classe A.

Le CIDR (Classeless Inter-Domain Routing), établi en 1993, a permis d'abolir cette notion de classe et de configurer des sous-réseaux du 13e au 27e bit, ce qui a permis la mise en place de plus de sous-réseaux.
Cela n'a cependant pas été suffisant.

Une nouvelle réponse fut apportée avec la création du NAT (Network Address Translation) en 1994, avec sa notion d'adresses privées et publiques. Une box possède désormais l'adresse IP publique et les pc connectés sur celle-ci disposeront d'une adresse IP privée. Ainsi, toutes les machines du réseau local sortiront avec la même IP publique (celle de la box), mais auront une IP locale différente. Nous verrons ce procédé dans le chapitre suivant.
Cela causa quelques problèmes, puisqu'avant cela, les machines qui communiquant le faisaient grâce à des connexions de bout en bout. A cause de la box, il n'est plus possible de le faire.

Les plages d'IP privées (ou locales) sont : 10.0.0.0 /8, 172.16.0.0/12 et- 192.168.0.0 /16 ce qui autorisent des petits parcs de machines pour les particuliers, et de très grands parcs pour les entreprises par exemple.

d) Attribution des paramètres du réseau

L'administrateur réseau peut choisir d'attribuer les paramètres du réseau local de manière statique ou automatique.
Si le mode statique est choisi, alors après avoir connecté le PC au routeur (par câble ou en se connectant sur le SSID Wi-Fi), il faut configurer chaque machine manuellement, pour qu'elle soit effectivement connectée au réseau : attribuer une adresse IP locale, l'adresse IP de la passerelle par défaut (routeur), le masque sous-réseau, l'adresse IP du serveur DNS à utiliser, etc. Il faut donc connaître comment est défini le réseau.
Sinon, il faut activer le serveur DHCP (Dynamic Host Configuration Protocol) du routeur ainsi que le client DHCP sur l'hôte. DHCP est un protocole de la couche réseau qui permet d'attribuer dynamiquement aux différentes machines connectées au réseau leurs paramètres IP.

La plupart des réseaux locaux sont configurés d'office pour utiliser le DHCP. Un avantage est que cela évite de gaspiller des adresse IP, lorsque des machines sont éteintes (contrairement à l'attribution statique). Cela permet également d'éviter des erreurs (adresses IP en conflit par exemple), surtout dans de grands réseaux locaux et c'est aussi plus simple pour des utilisateurs néophytes.

DHCP utilise le protocole BOOTP (Bootstrap Protocol), un protocole permettant à la base d'obtenir une adresse IP d'un serveur de configuration, et dont le format de paquet se rapproche de DHCP.

Pour résumer brièvement le protocole DHCP :
- L'hôte, qui se trouve sans adresse IP, diffuse (émet en broadcast) un paquet DHCP Discover. Ce paquet permet de localiser les serveurs DHCP présents. Si un serveur DHCP reçoit ce paquet et qu'il a une adresse IP disponible, il va répondre en proposant une adresse IP. L'hôte inclut donc son adresse MAC dans ce paquet, afin qu'un serveur DHCP puisse lui répondre.
- Le serveur DHCP renvoie au client (en se servant de l'adresse MAC) un paquet DHCP Offer dans lequel il propose des paramètres IP à la machine (adresse IP, son adresse en tant que passerelle par défaut, adresse IP des serveurs DNS...).
- Le client répond à ce paquet en envoyant un paquet DHCP Request. Il confirme la proposition de la passerelle en demandant l'adresse IP proposée.
- Enfin, le serveur répond en confirmant la configuration proposée dans le DHCP Offer.

Comme exemple, je me suis déconnecté de mon réseau Wi-Fi, j'ai réglé mon poste en DHCP, et me suis reconnecté au réseau. Voici ce qui se passe :


Intéressons-nous d'abord au haut de la capture. On voit bien que les quatre trames dont j'ai parlées sont présentes et que le protocole BootStrap est utilisé (voir haut de l'image).
On constate qu'au départ, l'hôte n'a pas d'adresse IP (0.0.0.0) et diffuse le paquet de découverte en broadcast (255.255.255.255 et non 192.168.0.255, puisque je n'ai aucun paramètre IP et que je ne suis pas encore connecté au réseau). Dans la deuxième trame, le serveur répond juste à la machine identifiée par l'adresse MAC et non à 192.168.0.8 comme on croirait en regardant la trame. C'est juste WireShark qui agence ça de cette manière pour mettre en évidence la proposition du serveur.
Ensuite, la machine qui n'a toujours pas d'adresse IP émet la requête de demande en broadcast à nouveau. Pourquoi ? Si plusieurs serveurs DHCP ont reçu la trame de découverte, alors ils vont être plusieurs à répondre. Le client ne choisit que la première offre et diffuse sa requête pour renseigner à tout le monde la proposition qu'il a choisie : on trouve donc dans ce paquet l'adresse IP du routeur DHCP ayant émis en premier une offre. Enfin, le routeur concerné émet un accusé de réception pour confirmer la demande.

Dans la capture ci-dessus, j'ai mis en évidence l'offre du serveur DHCP. J'ai encadré en rouge la proposition d'adresse IP du serveur, et on remarque bien qu'il répond à une IP nulle.


Sur cette deuxième capture du même paquet, on remarque que le serveur propose un masque sous-réseau, des adresses IP de serveurs DNS (ceux du FAI entre autres) et son adresse IP en tant que passerelle par défaut (routeur) et serveur DHCP.

Il y a également d'autres types de message DHCP, par exemple DHCP Decline, DHCP Release, etc. Je vous laisse chercher par vous-même si ça vous intéresse.

Vous avez sûrement noté la présence du protocole UDP dans la capture, ainsi que la notion de port. Pour ne pas empiéter sur le reste, nous verrons tout ceci plus tard. Pour le moment, dites-vous qu'un port réseau correspond à un service : ici bootpc sur le port 68 (pour le client DHCP) et bootps sur le port 67 (pour le serveur DHCP). C'est pourquoi dans la première trame, le client envoie une requête en broadcast sur le port 67.

Pour terminer cette petite partie, je vous mets une capture d'écran de la configuration d'une Freebox  (v4), qui est donc le routeur :


On constate que :
- l'adresse IP du routeur (passerelle par défaut pour accéder à internet) est configurable,
- qu'on peut activer/désactiver le DHCP,
- qu'on peut régler le nombre d'adresses qu'on souhaite pouvoir distribuer de manière dynamique. Par exemple, ici, on ne peut connecter au réseau que 50 machines.

Le masque sous-réseau n'est pas présent, mais c'est normal, puisqu'on ne peut pas modifier celui-ci. L'usage est prévu pour un petit réseau local de particuliers, je n'ai pas le droit de me mettre un netmask 255.0.0.0, ce qui me permettrait de connecter théoriquement des millions de postes.

Côté PC local, vous pouvez configurer votre carte réseau :


On remarque qu'on peut choisir de mettre tout en statique ou tout en dynamique (à condition que le DHCP soit activée sur la box).

XmichouX:
Hello,

Des images plus dispos sur security?

igor51:
Salut

normalement non, il manque quoi comme images ?

Navigation

[0] Index des messages

Sortir du mode mobile