Outils pour utilisateurs

Outils du site


Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
040-adresses:020-adressesipv4 [le 02/03/2025 à 09:57] – [Le masque de sous réseau] prof040-adresses:020-adressesipv4 [le 02/03/2025 à 14:17] (Version actuelle) – [Relations avec les adresses MAC] prof
Ligne 86: Ligne 86:
 ^  C  |  255.255.255.0  |  1  | ^  C  |  255.255.255.0  |  1  |
  
-Par défaut, un masque de sous réseau englobe donc la totalité de la classe. Cependant, il est possible de découper une classe en plusieurs tranches pour réaliser des sous-réseaux. Exemple sur la classe C privée ''192.168.0.0'' qui par défaut dispose du masque ''255.255.255.0''. Un outil comme ''ipcalc'' nous montre ceci:+Par défaut, un masque de sous réseau englobe donc la totalité de la classe. Cependant, il est possible de découper une classe en plusieurs tranches pour réaliser des sous-réseaux. Exemple sur la classe C privée ''192.168.0.0'' qui par défaut dispose du masque ''255.255.255.0''. Un outil comme ''[[https://jodies.de/ipcalc|ipcalc]]'' nous montre ceci:
 <html><pre class="code"> <html><pre class="code">
 <b>ipcalc 192.168.0.0 255.255.255.0</b> <b>ipcalc 192.168.0.0 255.255.255.0</b>
Ligne 125: Ligne 125:
 Nous avons toujours des adresses allant de ''192.168.0.1'' à ''192.168.0.254'', mais ici découpées en 2 sous-réseaux de 126 adresses chacun. Si nous connectons tous ces nœuds sur le même switch ou hub, les jaunes ne pourront plus communiquer avec les oranges et réciproquement. Si l'on veut tout de même les faire communiquer, il faudra placer un routeur entre les deux sous-réseaux. Nous avons toujours des adresses allant de ''192.168.0.1'' à ''192.168.0.254'', mais ici découpées en 2 sous-réseaux de 126 adresses chacun. Si nous connectons tous ces nœuds sur le même switch ou hub, les jaunes ne pourront plus communiquer avec les oranges et réciproquement. Si l'on veut tout de même les faire communiquer, il faudra placer un routeur entre les deux sous-réseaux.
 ==== Le modèle CIDR ==== ==== Le modèle CIDR ====
 +L'exemple précédent montre deux choses importantes:
 +  * les masques sont constitués d'une suite de 1 sans trou, suivie d'une suite de 0 sans 1 au milieu;
 +  * écrire ces masques sous la forme de 4 octets traduits en base décimale n'est guère pratique.
  
-Cette façon de faire aboutit malheureusement à un formidable gaspillage d'adresses IP dans la mesure où, à la belle époque, une entreprise pouvait se voir attribuer une classe complète et n'en utiliser qu'une partie. +Avec le modèle (Classless Inter-Domain Routing), la notion de classe n'est plus qu'anegdotique, si ce n'est pour les classes réservées à l'usage privé. Les adresses sont désormais distribuées par bloc, sans tenir compte de leur classe originelle.
- +
-Avec ce modèle (Classless Inter-Domain Routing), la notion de classe n'existe plus, si ce n'est pour les classes réservées à l'usage privé. Les adresses sont désormais distribuées par bloc, sans tenir compte de leur classe originelle.+
  
 L'IANA distribue donc désormais des blocs d'adresses contiguës, délimitées par un masque, toujours de 32 bits, dont les x bits de gauche sont à 1 et les autres à 0. Dans ce modèle, un bloc d'adresse se définit ainsi : L'IANA distribue donc désormais des blocs d'adresses contiguës, délimitées par un masque, toujours de 32 bits, dont les x bits de gauche sont à 1 et les autres à 0. Dans ce modèle, un bloc d'adresse se définit ainsi :
Ligne 136: Ligne 137:
 A titre d'exemple, la classe C 192.168.0.0 avec un masque 255.255.255.0 s'écrirait : A titre d'exemple, la classe C 192.168.0.0 avec un masque 255.255.255.0 s'écrirait :
  
-  192.168.0.0/24+  192.168.0.0/24. Dans l'exemple précédent, cette classe découpée en deux donnerait les blocs ''192.168.0.0/25'' et ''192.168.0.128/24''. Et pour finir d'éclaircir la question, nous pourrions parfaitment utiliser ceci: ''192.168.0.0/23'', ce qui nous donnerait: 
 +<html><pre class="code"> 
 +<b>ipcalc 192.168.0.0/23</b>
  
-Ici, nous avons toujours deux adresses remarquables : +Address:   192.168.0.0          11000000.10101000.0000000 0.00000000 
- +Netmask:   255.255.254.23   11111111.11111111.1111111 0.00000000 
-  * 192.168.0.0 qui symbolise tout le bloc ; +Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111
-  * 192.168.0.255 qui est l'adresse de broadcast pour ce bloc. +
- +
-La souplesse de cette méthode CIDR réside dans le fait que l'on peut définir désormais un bloc comme ceci : +
- +
-192.168.0.0/26 +
- +
-Il existe sur toute bonne distribution GNU/Linux un utilitaire nommé «ipcalc((Le même outil se trouve en ligne [[http://jodies.de/ipcalc|ici]]))» qui va nous décortiquer ce bloc : +
- +
-<html><pre class="code"> +
-~$ ipcalc 192.168.0.0/26 +
-<span class="bhlg">Address:   192.168.0.0</span>          11000000.10101000.00000000.00 000000 +
-<span class="bhly">Netmask:   255.255.255.192</span> 26 11111111.11111111.11111111.11 000000 +
-Wildcard:  0.0.0.63             00000000.00000000.00000000.00 111111+
 => =>
-Network:   192.168.0.0/26       11000000.10101000.00000000.00 000000 +Network:   192.168.0.0/23       11000000.10101000.0000000 0.00000000 
-<span class="bhly">HostMin:   192.168.0.1</span>          11000000.10101000.00000000.00 000001 +<span class="hlg">HostMin:   <b>192.168.0.1</b></span>          11000000.10101000.0000000 0.00000001 
-<span class="bhly">HostMax:   192.168.0.62</span>         11000000.10101000.00000000.00 111110 +<span class="hlg">HostMax:   <b>192.168.1.254</b></span>        11000000.10101000.0000000 1.11111110 
-<span class="bhlg">Broadcast: 192.168.0.63</span>         11000000.10101000.00000000.00 111111 +<span class="hlg">Broadcast: 192.168.1.255</span>        11000000.10101000.0000000 1.11111111 
-Hosts/Net: 62                    Class C, Private Internet+<span class="bhlg">Hosts/Net: 510</span>                   Class C, Private Internet
 </pre></html> </pre></html>
 +Dans cet exemple, nous avons englobé deux classes C adjacentes pour disposer de 510 adresses dans le même réseau.
 +===== Relations avec les adresses MAC =====
 +Il faudra patienter un peu pour accéder à toutes les travaux pratiques sur le routage IPv4. Pour l'instant, Voyons ce qu'est une table ARP en mémoire système. Il y a deux outils sous GNU/Linux qui permettent ces introspections:
 +  - **arp** si le paquet ''net-tools'' (Debian) est installé;
 +  - **ip** le couteau suisse du poquet ''iproute2''.
 +Soit un réseau ''192.168.60.0/24'' équipé de:
 +  * un NAS 192.168.60.3;
 +  * une imprimante 192.168.60.10;
 +  * une station 192.168.60.47;
 +  * une station 192.168.60.127;
 +  * un routeur 192.168.60.254;
  
-Notez l'inhabituelle adresse de broadcast pour ce bloc. Nous avons donc ici la possibilité d'adresser 62 nœuds, et l'étendue totales des adresses utilisées (réseau et broadcast compris) est :+Nous sommes sur la station 192.168.60.127: 
 +<html><pre class="code"> 
 +<b>arp -n</b>
  
-  192.168.0.0 - 192.168.0.63+Adresse                  TypeMap AdresseMat          Indicateurs           Iface 
 +192.168.60.254           ether   68:a3:78:86:ec:02   C                     enp1s0 
 +192.168.60.47            ether   ae:2a:a7:dd:e6:07                       enp1s0 
 +192.168.60.3             ether   18:31:bf:df:a1:f0                       enp1s0 
 +</pre></html> 
 +(le ''-n'' sert juste à éviter à l'outil de chercher à traduire une adresse IP en URI si un RDNS est présent, mais c'est hors de propos ici).
  
-Voyons le bloc suivant qui pourrait être tout naturellement :+À peu près la même chose avec la commande ''ip'': 
 +<html><pre class="code"> 
 +<b>ip -4 neigh list</b>
  
-192.168.0.64/26 +192.168.60.254 dev enp1s0 lladdr 68:a3:78:86:ec:02 STALE  
- +192.168.60.47 dev enp1s0 lladdr ae:2a:a7:dd:e6:07 REACHABLE  
-<html><pre class="code"> +192.168.60.3 dev enp1s0 lladdr 18:31:bf:df:a1:f0 STALE 
-:~$ ipcalc 192.168.0.64/26 +
-<span class="bhlg">Address  192.168.0.64</span>         11000000.10101000.00000000.01 000000 +
-<span class="bhly">Netmask  255.255.255.192</span> = 26 11111111.11111111.11111111.11 000000 +
-Wildcard 0.0.0.63             00000000.00000000.00000000.00 111111 +
-=> +
-Network:   192.168.0.64/26      11000000.10101000.00000000.01 000000 +
-<span class="bhly">HostMin  192.168.0.65</span>         11000000.10101000.00000000.01 000001 +
-<span class="bhly">HostMax:   192.168.0.126</span>        11000000.10101000.00000000.01 111110 +
-<span class="bhlg">Broadcast192.168.0.127</span>        11000000.10101000.00000000.01 111111 +
-Hosts/Net62                    Class C, Private Internet+
 </pre></html> </pre></html>
 +En gros, les mêmes informations. le ''-4'' sert ici à ne donner que les informations concernant IPv4.
  
-==== Un autre exemple ==== +Nous constatons qu'il n'y a pas de référence à ''192.168.60.10'', l'imprimanteLa station envoie un document à imprimer et de suite  après:
- +
-Sur un réseau privé, nous pourrions prendre les deux classes C 192.168.0.0 et 192.168.1.0. En utilisant un masque de type 255.255.254.0, ceci nous permettra de réunir les deux classes C au sein d'un même réseau logique. +
- +
-En notation CIRD : 192.168.0.0/23 +
- +
-  ~$ ipcalc 192.168.0.0/23 +
-  Address:   192.168.0.0          11000000.10101000.0000000 0.00000000 +
-  Netmask:   255.255.254.0 = 23   11111111.11111111.1111111 0.00000000 +
-  Wildcard:  0.0.1.255            00000000.00000000.0000000 1.11111111 +
-  =&gt; +
-  Network:   192.168.0.0/23       11000000.10101000.0000000 0.00000000 +
-  HostMin:   192.168.0.1          11000000.10101000.0000000 0.00000001 +
-  HostMax:   192.168.1.254        11000000.10101000.0000000 1.11111110 +
-  Broadcast: 192.168.1.255        11000000.10101000.0000000 1.11111111 +
-  Hosts/Net: 510                   Class C, Private Internet +
- +
-Ça fonctionne... Avec quelques restrictions cependant, sur les anciens systèmes. Certaines vieilles piles IP (Windows 95 par exemple) risquent de ne pas accepter les adresses 192.168.0.255 et 192.168.1.0 comme adresses d'hôtes valides (elles devraient être réservées dans un réseau « normal", nous l'avons vumais dans le cas d'un bloc constitué comme celui de l'exemple, il est logiquement possible de les utiliser). +
- +
-==== Un exemple « vrai » de configuration ==== +
- +
-//**Cet exemple appartient désormais au passé, du temps d'un fournisseur d'accès aujourd'hui disparu.**// +
- +
-Un client se connecte et récupère l'adresse 62.161.99.115. C'est une adresse de classe A. Nous allons essayer de voir toutes les informations que l'on peut en tirer, au niveau du réseau. « whois » nous dit: +
- +
-  whois -h whois.geektools.com 62.161.99.115 ... +
-  Query62.161.99.115 +
-  Registry: whois.ripe.net +
-  Results: +
- +
-  % Rights restricted by copyright. See http://www.ripe.net/ripencc/pub-services/db/copyright.html +
- +
-  inetnum: 62.161.96.0 - 62.161.120.255 +
-  ... +
- +
-Cette adresse appartient donc au bloc 62.161.96.0 - 62.161.120.255, qui est une portion du réseau de classe A 62.0.0.0. +
- +
-Voyons maintenant les informations données par le DHCP. (Exemple sous Linux avec PUMP) +
 <html><pre class="code"> <html><pre class="code">
-Device eth0 +<b>ip -4 neigh ls</b>
-<span class="bhly"   IP: 62.161.99.115 +
-    Netmask: 255.255.248.0 +
-    Broadcast: 62.161.103.255 +
-    Network: 62.161.96.0</span> +
-    Boot server 62.161.120.11 +
-    Next server 62.161.120.11 +
-<span class="bhly">    Gateway: 62.161.96.1</span> +
-  ... +
-    Nameservers: 62.161.120.11 +
-    Renewal time: Thu Feb  1 10:17:57 2001 +
-    Expiration time: Thu Feb  1 10:25:27 2001 +
-</pre></html>+
  
-Le masque de sous réseau est ici aussi inhabituel +<span class="hly">192.168.60.10 dev enp1s0 lladdr f8:da:0c:0c:8d:48 REACHABLE</span>  
- +192.168.60.254 dev enp1s0 lladdr 68:a3:78:86:ec:02 STALE  
-<html><pre class="code"> +192.168.60.47 dev enp1s0 lladdr ae:2a:a7:dd:e6:07 REACHABLE  
-~$ ipcalc 62.161.96.0 255.255.248.0 +192.168.60.3 dev enp1s0 lladdr 18:31:bf:df:a1:f0 STALE 
-Address  62.161.96.0          00111110.10100001.01100 000.00000000 +
-<span class="bhly">Netmask  255.255.248.0 = 21</span>   11111111.11111111.11111 000.00000000 +
-Wildcard 0.0.7.255            00000000.00000000.00000 111.11111111 +
-=> +
-<span class="bhly">Network  62.161.96.0/21</span>       00111110.10100001.01100 000.00000000 +
-HostMin  62.161.96.1          00111110.10100001.01100 000.00000001 +
-HostMax:   62.161.103.254       00111110.10100001.01100 111.11111110 +
-Broadcast62.161.103.255       00111110.10100001.01100 111.11111111 +
-Hosts/Net2046                  Class A+
 </pre></html> </pre></html>
 +L'imprimante apparaît dans la table ARP comme «reachable». Il y a donc eu quelque part un mécanisme qui a retrouvé l'adresse MAC correspondant à l'adresse IP de l'imprimante. Normal puisqu'au niveau Ethernet, ce sont les seules adresses exploitables. Il faudra voir comment ça se passe...
  
-=== Exercices... === +Si l'on retourne voir la table arp après un moment sans s'être servi de l'imprimantenous verrons en ce qui la concerne
- +  192.168.60.10 dev enp1s0 lladdr f8:da:0c:0c:8d:48 STALE 
-== A quel sous réseau appartient l'adresse 62.161.99.115 (SubnetID)? == +Elle est devenue «stale»Suivant le contexteil pourra se faire que cette référence finisse pas disparaître de la table pour ne pas l'encombrer inutilement.
-| Adresse IP | ''0011 1110 . 1010 0001 . 0110 0011 . 0111 0011''+
-| Masque de sous réseau: | ''1111 1111 . 1111 1111 . 1111 1000 . 0000 0000''+
-| Adresse du sous-réseau: (ET logique) | ''0011 1110 . 1010 0001 . 0110 0000 . 0000 0000''+
-| donc en décimal: | ''62.161.96.0''+
- +
-L'opération consiste simplement en un ET logique bit à bit entre l'adresse et le masque. Mais on avait déjà la réponse en consultant les informations du client DHCP +
- +
-== Quelle est la partie de l'adresse qui concerne l'hôte (HostID)? == +
-| Adresse IP | ''0011 1110 . 1010 0001 . 0110 0011 . 0111 0011''+
-| Masque de sous réseau: (complément logique) | ''0000 0000 . 0000 0000 . 0000 0111 . 1111 1111''+
-| HostID: (ET logique) | ''0000 0000 . 0000 0000 . 0000 0011 . 0111 0011''+
-| donc en décimal: | ''0.0.3.115''+
- +
-L'opération consiste ici en un ET logique entre l'adresse et le __complément__ du masque. Bien entendu, HostID + SubnetID doit reconstituer l'adresse IP, ce qui est bien le cas''(62.161.96.0) + (0.0.3.115) = 62.161.99.115'' +
- +
-== Quelle est la plus petite adresse possible dans ce sous réseau? == +
-    * SubnetID+1=62.161.96.1 .\\  Qui est d'ailleurs l'adresse de la passerelle (c'est un choix de FTCI, pas une obligationToute adresse dans le même sous réseau aurait aussi bien fait l'affaire)..\\ +
- +
-== Quelle est la plus grande adresse possible dans ce sous réseau? == +
-    * C'est SubnetID+!SubnetMask-1\\  Pourquoi?\\ ''!SubnetMask-1'' correspond à la plus grande HostID possible dans ce sous réseau,\\ ''!SubnetMask'' correspondant à l'adresse de « l'hôte de broadcast » +
- +
-| SubnetID| ''0011 1110 . 1010 0001 . 0110 0000 . 0000 000''+
-| Masque de sous réseau-1| ''0000 0000 . 0000 0000 . 0000 0111 . 1111 1110''+
-| Plus grande adresse possible(+) | ''0011 1110 . 1010 0001 . 0110 0111 . 1111 1110''+
-| donc en décimal| ''62.161.103.254'' | +
- +
-> L'opération est une somme binaireLe résultat était prévisibleune fois encore, en regardant les informations du client DHCP. En effet; l'adresse de broadcast pour le sous réseau étudié est 62.161.103.255 (HostID avec tous les bits à 1). +
- +
-C'est bien, n'est-ce pas, de pouvoir donner une explication rationnelle à tous ces paramètres IP plus ou moins obscurs à première vue... +
Les adresses IPv4: Dernière modification le: 02/03/2025 à 09:57 par prof