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:22] – [Étendue de chaque classe] prof040-adresses:020-adressesipv4 [le 02/03/2025 à 14:17] (Version actuelle) – [Relations avec les adresses MAC] prof
Ligne 74: Ligne 74:
 ==== Le masque de sous réseau ==== ==== Le masque de sous réseau ====
  
- Le masque de sous-réseau a une importance que peu d'utilisateurs connaissent, elle est pourtant fondamentale. C'est un ensemble de 4 octets destiné à isoler:+ Le masque de sous-réseau dans sa définition première est un ensemble de 4 octets destiné à isoler:
  
   * Soit l'adresse de réseau (NetID ou SubnetID) en effectuant un ET logique bit à bit entre l'adresse IP et le masque.   * Soit l'adresse de réseau (NetID ou SubnetID) en effectuant un ET logique bit à bit entre l'adresse IP et le masque.
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.+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"> 
 +<b>ipcalc 192.168.0.0 255.255.255.0</b> 
 + 
 +<span class="hly">Address:   192.168.0.0</span>          11000000.10101000.00000000. 00000000 
 + 
 +<span class="hly">HostMin:   192.168.0.1</span>          11000000.10101000.00000000. 00000001 
 +<span class="hly">HostMax:   192.168.0.254</span>        11000000.10101000.00000000. 11111110 
 +<span class="hly">Broadcast: 192.168.0.255</span>        11000000.10101000.00000000. 11111111 
 +<span class="bhly">Hosts/Net: 254</span>                   Class C, Private Internet 
 +</pre></html>
  
 Mais pourquoi « sous réseau »? Mais pourquoi « sous réseau »?
  
-Le principe en est simple: Imaginons que nous disposions d'une classe BNous disposons donc de deux octets pour les adresses d'hôtes, soit 65 534 hôtes possibles (les adresses x.x.0.0 et x.x.255.255 sont réservées)Ca ferait tout de même beaucoup de machines sur le même réseau. En pareil cas, il est bien préférable d'organiser son réseau logique en plusieurs sous réseaux, connectés entre eux par des routeurs.+Supposons, pour une raison obscure pour l'instant, que l'on désire couper ce réseau en 2 sous-réseaux interconnectés par un routeurIl faudra alors utiliser le masque ''255.255.255.128'' ce qui donnera d'une part le sous-réseau ''192.168.0.0'': 
 +<html><pre class="code"> 
 +<b>ipcalc 192.168.0.0 255.255.255.128</b>
  
-Si par exemple, bien qu'étant en classe B, on choisit comme masque de sous réseau 255.255.255.0, nous obtiendrons 256 sous réseaux de 254 hôtes chacun dans le même réseauMais il est possible de définir des masques plus subtils.+<span class="hly">Address:   192.168.0.0</span>          11000000.10101000.00000000.0 0000000
  
-Deux hôtesbien qu'appartenant au même réseau logique, s'ils sont placés dans des sous réseaux logiques différents, ne pourront communiquer entre eux que par l'intermédiaire d'un routeurCette solution est très commode pour des réseaux d'entreprise constitués de réseaux locaux distants et même pour des réseaux locaux comportant plusieurs centaines d'hôtes.+<span class="hly">HostMin:   192.168.0.1</span>          11000000.10101000.00000000.0 0000001 
 +<span class="hly">HostMax:   192.168.0.126</span>        11000000.10101000.00000000.0 1111110 
 +<span class="bhly">Broadcast: 192.168.0.127</span>        11000000.10101000.00000000.0 1111111 
 +<span class="bhly">Hosts/Net: 126</span>                   Class CPrivate Internet 
 +</pre></html> 
 +et le sous-réseau ''192.126.0.128'' toujours avec le même masque ''255.255.255.128'': 
 +<html><pre class="code"> 
 +<b>ipcalc 192.168.0.128 255.255.255.128</b> 
 + 
 +<span class="bhlo">Address:   192.168.0.128</span>        11000000.10101000.00000000.1 0000000 
 + 
 +<span class="bhlo">HostMin:   192.168.0.129</span>        11000000.10101000.00000000.1 0000001 
 +<span class="hlo">HostMax:   192.168.0.254</span>        11000000.10101000.00000000.1 1111110 
 +<span class="hlo">Broadcast: 192.168.0.255</span>        11000000.10101000.00000000.1 1111111 
 +<span class="bhlo">Hosts/Net: 126</span>                   Class C, Private Internet 
 +</pre></html>
  
 +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 108: 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:22 par prof