<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
    <title>La Forge - réseau</title>
    <subtitle>Le blog de la Forge</subtitle>
    <link rel="self" type="application/atom+xml" href="https://staging.lafor.ge/tags/reseau/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://staging.lafor.ge"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-12-12T00:00:00+00:00</updated>
    <id>https://staging.lafor.ge/tags/reseau/atom.xml</id>
    <entry xml:lang="fr">
        <title>Le Réseau de zéro (partie 3)</title>
        <published>2023-12-12T00:00:00+00:00</published>
        <updated>2023-12-12T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://staging.lafor.ge/wireguard-2/"/>
        <id>https://staging.lafor.ge/wireguard-2/</id>
        
        <content type="html" xml:base="https://staging.lafor.ge/wireguard-2/">&lt;details &gt;
	&lt;summary&gt;&lt;span&gt;Les articles de la série&lt;/span&gt;&lt;/summary&gt;
	&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;/wireguard-0&quot;&gt;Partie 0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/wireguard-1&quot;&gt;Partie 1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/details&gt;
&lt;p&gt;Bonjour à toutes et à tous 😀&lt;/p&gt;
&lt;p&gt;Oui, plus personne ne l’attendait même plus moi ^^’&lt;/p&gt;
&lt;p&gt;Voici venu le moment de la partie 3 qui sert de prologue à l’article sur wireguard.&lt;/p&gt;
&lt;p&gt;Aujourd’hui nous allons nous poser une question:&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-question&quot;&gt;
	&lt;p&gt;Comment isoler efficacement des domaines de diffusion ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Le principe de VLAN est une technologie qui a eu son &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/Cisco_Inter-Switch_Link&quot;&gt;implémentation&lt;/a&gt; avant sa &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/IEEE_802.1Q&quot;&gt;standardisation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ainsi plusieurs différences peuvent apparaître dans les mise en oeuvres des principes.&lt;/p&gt;
&lt;p&gt;Cet article n’est pas une préparation au concours Cisco, je vais donc rester vague dans les implémentations et ne parler que des concepts sous-jacents.&lt;/p&gt;
&lt;p&gt;Les switchs que je vais utiliser tout au long de l’article sont des switchs managés, qui ont la capacité de faire plus de choses que leur homologues non-managés, mais ça se ressent également sur le prix à l’achat. 😝&lt;/p&gt;
&lt;p&gt;Il existe également différent types de VLAN, cet article ne traitera que du VLAN de couche 2 associer à des ports.&lt;/p&gt;
&lt;p&gt;Bien ces mises au point réalisées, on peut attaquer. ^^&lt;/p&gt;
&lt;h2 id=&quot;problematique&quot;&gt;Problématique&lt;/h2&gt;
&lt;p&gt;Pour illustrer ceci prenons le réseau physique suivant:&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-01.jpg&quot; /&gt;
&lt;p&gt;Il est composé de 4 machines et d’une &lt;a href=&quot;/wireguard-0/#passerelle&quot;&gt;passerelle&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un serveur web qui distribue du contenu vers internet&lt;/li&gt;
&lt;li&gt;Une base de données pour ce même serveur web&lt;/li&gt;
&lt;li&gt;2 postes de travail de comptabilité&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour des raisons de confidentialité et de sécurité, nous souhaitons que les postes de comptabilité ne soient pas visibles depuis le serveur web
qui est une machine connectée à internet et donc qui peut être un point d’entré pour des attaques malveillantes.&lt;/p&gt;
&lt;p&gt;On créer alors un &lt;code&gt;Réseau 1&lt;/code&gt; qui contient le réseau accédant à internet (la BDD pourrait en être exclu). Ici en bleu.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Le serveur web et la bdd sont isolés&quot; src=&quot;/assets/images/reseau-3/vlan-02.jpg&quot; /&gt;
&lt;p&gt;Puis nous avons un second &lt;code&gt;Réseau 2&lt;/code&gt; qui contient exclusivement les ordinateurs du service comptabilité ainsi que la passerelle mais sans
accès internet(ils n’en ont apparemment pas besoin ^^’).&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Le service comptabilité ne voient pas le serveur web et lui ne voit pas la comptabilité&quot; src=&quot;/assets/images/reseau-3/vlan-03.jpg&quot; /&gt;
&lt;p&gt;La solution est alors de créér deux réseaux avec deux switchs différenciés&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Deux réseau sur deux switchs&quot; src=&quot;/assets/images/reseau-3/vlan-04.jpg&quot; /&gt;
&lt;p&gt;Mais alors, il faut deux switchs et deux switchs presque vides en plus.&lt;/p&gt;
&lt;p&gt;Une solution serait de réussir à fusionner les deux en un seul.&lt;/p&gt;
&lt;p&gt;Ainsi on économiserait de la féraille et de l’électricité pour les faire fonctionnner.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Deux réseau sur deux switchs&quot; src=&quot;/assets/images/reseau-3/vlan-06.jpg&quot; /&gt;
&lt;p&gt;Seulement, nous avons un deuxième obstacle, le bâtiment est vertical.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le serveur web est à l’étage 2 ainsi qu’un des postes de compta&lt;/li&gt;
&lt;li&gt;le reste des machines à l’étage 1, y compris la passerelle.&lt;/li&gt;
&lt;/ul&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Deux réseau sur deux switchs&quot; src=&quot;/assets/images/reseau-3/vlan-07.jpg&quot; /&gt;
&lt;p&gt;On comprend alors ici l’intérêt de fusionner les switchs, on a seulement besoin de 2 switchs au lieu de 4.&lt;/p&gt;
&lt;p&gt;Le problèmes est qu’un switch n’est pas très intelligents, il n’isole pas, il met au contraire en relation.&lt;/p&gt;
&lt;p&gt;Si l’on ne fait rien, les deux réseaux vont communiquer. Autrement dit le &lt;a href=&quot;/wireguard-1/#broadcast-reseau&quot;&gt;flood ARP&lt;/a&gt; atteindra les machines
de la compta et elles seront donc visibles.&lt;/p&gt;
&lt;p&gt;L’un de nos buts va être d’empêcher l’ARP de se diffuser anarchiquement dans nos réseaux.&lt;/p&gt;
&lt;h2 id=&quot;vlan&quot;&gt;VLAN&lt;/h2&gt;
&lt;p&gt;Le termes VLAN ou vlan, est l’acronyme de Virtual Local Area Network, autrement dit un réseau virtuel local.&lt;/p&gt;
&lt;p&gt;Un peu comme plusieurs machines virtuelles tournent sur un même PC.&lt;/p&gt;
&lt;p&gt;L’idée ici est d’avoir plusieurs réseaux logique sur le même hardware réseau.&lt;/p&gt;
&lt;p&gt;Cela permet tout comme la virtualisation de réduire les coûts, cloisonner et avoir plus de flexibilité dans l’usage du matériel physique.&lt;/p&gt;
&lt;p&gt;Pour cela il nous faut de nouveaux outils qui vont porter cette virtualisation.&lt;/p&gt;
&lt;p&gt;Nous allons commencer par modifier ce qui circule dans le réseau physique.&lt;/p&gt;
&lt;h2 id=&quot;trames-identifiees&quot;&gt;Trames identifiées&lt;/h2&gt;
&lt;p&gt;Avant de commencer cette partie, voici un petit rappel, ceci se nomme une trame ou &lt;em&gt;frame&lt;/em&gt; en anglais.&lt;/p&gt;
&lt;p&gt;Ce sont les données qui transitent physiquement dans les câbles du réseau.&lt;/p&gt;
&lt;p&gt;Pour le détails voir la &lt;a href=&quot;/wireguard-1&quot;&gt;partie 2&lt;/a&gt;.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;50%&quot; alt=&quot;Une trame réseau&quot; src=&quot;/assets/images/reseau-3/vlan-08.jpg&quot; /&gt;
&lt;p&gt;Nous allons introduire une couche supplémentaire qui va nous permettre de rajouter de l’information sur la trame réseau.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;Selon l’implémentation, soit c’est réellement une couche supplémentaire d’encapsulation dans le cadre de Cisco et de l’&lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/Cisco_Inter-Switch_Link&quot;&gt;ISL&lt;/a&gt;, soit c’est un champ supplémentaire que la trame si on est dans le cadre de la norme &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/IEEE_802.1Q&quot;&gt;IEE 802.1Q&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour des raisons de lisibilté des schémas, je ferai apparaître à part la trame et le tag, mais gardez à l’esprit que l’on reste dans la couche 2 ou de “liaison” du modèle OSI et TCP/IP.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;img class=&quot;&quot; width=&quot;60%&quot; alt=&quot;Une trame réseau&quot; src=&quot;/assets/images/reseau-3/vlan-10.jpg&quot; /&gt;
&lt;p&gt;Cette information s’appelle un &lt;code&gt;identifiant&lt;/code&gt;, mais tout le monde appellera ça un &lt;code&gt;tag&lt;/code&gt;, donc nous allons faire pareil. 😀&lt;/p&gt;
&lt;p&gt;Nous nous retrouvons donc dans l’ordre avec:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le tag : que nous allons détailler&lt;/li&gt;
&lt;li&gt;la trame : qui contient les informations pour le transfert dans le réseau
&lt;ul&gt;
&lt;li&gt;addresse MAC de destination et de source&lt;/li&gt;
&lt;li&gt;type de trame : ARP, IP, …&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;la couche réseau:
&lt;ul&gt;
&lt;li&gt;addresse IP&lt;/li&gt;
&lt;li&gt;ARP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;le transport : permet la gestion des erreurs et l’acheminement des données&lt;/li&gt;
&lt;li&gt;protocole : UDP, TCP, RTP, …&lt;/li&gt;
&lt;li&gt;ports&lt;/li&gt;
&lt;li&gt;les données&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Maintenant que les présentations sont faites avec le nouveau venu dans la famille, nous pouvons détailler comment ce tag est créé et propagé.&lt;/p&gt;
&lt;h2 id=&quot;port-tagging&quot;&gt;Port tagging&lt;/h2&gt;
&lt;p&gt;Pour cela, nous devons revenir au matériel réseau.&lt;/p&gt;
&lt;p&gt;Voici un switch, vu de plus près.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;60%&quot; alt=&quot;Un switch et ses ports&quot; src=&quot;/assets/images/reseau-3/vlan-12.jpg&quot; /&gt;
&lt;p&gt;Il est composé de ports.&lt;/p&gt;
&lt;p&gt;Jusqu’à présent le port d’un switch servait uniquement d’interface entre le switch et le réseau.&lt;/p&gt;
&lt;p&gt;Le protocole ARP permettant d’identifier les hôtes connectés aux ports, mais pas de rôle actif à remarquer.&lt;/p&gt;
&lt;p&gt;Nous allons remédier à cela. 😉&lt;/p&gt;
&lt;p&gt;Pour cela nous avons besoin de rajouter des informations supplémentaire à nos ports.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;60%&quot; alt=&quot;Un port taggué&quot; src=&quot;/assets/images/reseau-3/port-01.jpg&quot; /&gt;
&lt;p&gt;Ces informations sont au nombre de 2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le PVID : Port VLAN IDentifier&lt;/li&gt;
&lt;li&gt;Les actions associées à un TAG (elles peuvent être multiples)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La principale idée du PVID est que seule les ports qui ont le même PVID sont susceptibles de communiquer entre eux.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Un port taggué&quot; src=&quot;/assets/images/reseau-3/port-02.jpg&quot; /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-caution&quot;&gt;
	&lt;p&gt;Les ports ne sont pas électriquement reliés, c’est un artifice de vulgarisation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;L’autre parti des informations supplémentaires sont les actions.&lt;/p&gt;
&lt;p&gt;Elles sont au nombre de 2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;untagged&lt;/li&gt;
&lt;li&gt;tagged&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous allons voir en détail leurs fonctionnements.&lt;/p&gt;
&lt;h3 id=&quot;untagged&quot;&gt;Untagged&lt;/h3&gt;
&lt;p&gt;La première action &lt;code&gt;untagged&lt;/code&gt; ou “non marquée”, a un nom qui est réellement trompeur.&lt;/p&gt;
&lt;p&gt;Pour comprendre le fonctionnement, il faut dissocier ce qui se passe lorsqu’une trame rentre ou sort du switch.&lt;/p&gt;
&lt;p&gt;Commençons par le sens de rentrée de la trame dans le switch.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Un port untagged en entré&quot; src=&quot;/assets/images/reseau-3/vlan-13.jpg&quot; /&gt;
&lt;p&gt;Le dessin se lit de la droite vers la gauche, la trame vient du réseau et se dirige vers le switch.&lt;/p&gt;
&lt;p&gt;Elle pénètre le switch par un port qui possède le &lt;code&gt;PVID=2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ce port a pour action &lt;code&gt;untagged&lt;/code&gt;, qui contrairement à son nom, fait l’exacte inverse, elle vient ajouter un tag qui vaut la valeur de &lt;code&gt;2&lt;/code&gt;, valeur héritée du &lt;code&gt;PVID&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ainsi la trame initialement sans tag sort du port côté switch avec un $tag=2$.&lt;/p&gt;
&lt;p&gt;Dans le sens contraire, le &lt;code&gt;untagged&lt;/code&gt; reprend sa signification et vient retirer le tag.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Un port untagged en sortie&quot; src=&quot;/assets/images/reseau-3/vlan-14.jpg&quot; /&gt;
&lt;p&gt;La trame précédemment marquée sort donc du switch non-marquée.&lt;/p&gt;
&lt;h3 id=&quot;tagged&quot;&gt;Tagged&lt;/h3&gt;
&lt;p&gt;Le deuxième type d’action est le &lt;code&gt;tagged&lt;/code&gt;, qui à l’inverse signifie “marquée”.&lt;/p&gt;
&lt;p&gt;Il faut voir l’action tagged comme une non-action.&lt;/p&gt;
&lt;p&gt;Un port &lt;em&gt;tagged&lt;/em&gt; acceptera une trame déjà identifiée. Et la propagera avec son tag.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Un port tagged en entrée&quot; src=&quot;/assets/images/reseau-3/vlan-22.jpg&quot; /&gt;
&lt;p&gt;Mais refusera les trames non-identifiées&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Refus d&#39;une trame non tagguée&quot; src=&quot;/assets/images/reseau-3/port-04.jpg&quot; /&gt;
&lt;p&gt;Ou identifié par un tag non reconnu, ici le tag de la trame est 3 alors que le tag accepté est 2.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Refus d&#39;une trame mal-tagguée&quot; src=&quot;/assets/images/reseau-3/vlan-24.jpg&quot; /&gt;
&lt;p&gt;Il est à remarquer ici que le PVID n’est pas pris en compte.&lt;/p&gt;
&lt;p&gt;Dans le sens contraire, c’est pareil, la trame tagguée le reste en sortie de port.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Sortie d&#39;un port taggué&quot; src=&quot;/assets/images/reseau-3/vlan-23.jpg&quot; /&gt;
&lt;p&gt;La question maintenant est: est-ce que l’on peut faire sortir des trames qui sont tagguées différement ?&lt;/p&gt;
&lt;p&gt;Petit problème, je vous est dit précédement que seul les ports possédant un PVID commun peuvent discuter entre eux.&lt;/p&gt;
&lt;p&gt;Or ici le PVID=2 ne peut accepter que des trames identifiées également 2.&lt;/p&gt;
&lt;p&gt;La question sous-jacente est donc comment permettre d’accepter des trames tagguées différement ?&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Impossibilité de plusieurs PVID&quot; src=&quot;/assets/images/reseau-3/tagged-01.jpg&quot; /&gt;
&lt;p&gt;La réponse est d’avoir virtuellement plus d’un PVID.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;PVID multiple&quot; src=&quot;/assets/images/reseau-3/tagged-02.jpg&quot; /&gt;
&lt;p&gt;Ainsi il est possible d’être relié à plus d’un VLAN et de propagé les trames identifiées sur le réseau.&lt;/p&gt;
&lt;p&gt;Cette habilité va nous servir par la suite.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;Pourquoi je dis “virtuellement” ?&lt;/p&gt;
&lt;p&gt;En pratique, il n’y a qu’un seul PVID par port, celui-ci sert à tagger un trame dans le cas d’un port &lt;code&gt;untagged&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Mais on peut conceptuellement dire qu’un port qui aurait plusieurs actions &lt;code&gt;tagged&lt;/code&gt; possède virtuellement le PVID associé.&lt;/p&gt;
&lt;p&gt;Sinon, il pourrait accepter des trames tagguées mais ne pourrait pas les renvoyer avec ces mêmes tags.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; alt=&quot;Sortie d&#39;un port taggué&quot; src=&quot;/assets/images/reseau-3/tagged-03.jpg&quot; /&gt;
&lt;p&gt; 
On aurait alors une communication à sens unique.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quoi qu’il en soit, un port &lt;code&gt;tagged&lt;/code&gt; sortira des trames marquées comme son nom l’indique.&lt;/p&gt;
&lt;h2 id=&quot;les-types-de-ports&quot;&gt;Les types de ports&lt;/h2&gt;
&lt;p&gt;Le port tagging est un outil qui va nous permettre de construire des rôles spécifique à nos ports.&lt;/p&gt;
&lt;p&gt;Avant de voir ces rôles, nous devons introduire le concept de matériel &lt;code&gt;VLAN aware&lt;/code&gt; et de matériel &lt;code&gt;VLAN unaware&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le mot &lt;code&gt;aware&lt;/code&gt; outre d’avoir rendu notre plus grand philosophe immortel, veut dire “être conscient de”. Dans notre contexte “vlan aware” veut donc dire: “être conscient d’être dans un VLAN”.&lt;/p&gt;
&lt;p&gt;La plupart des matériels réseaux seront &lt;code&gt;VLAN unawre&lt;/code&gt;, ils n’ont pas connaissance de l’existence du VLAN et ne savent pas les manipuler.&lt;/p&gt;
&lt;p&gt;Dans cette catégorie se trouve les ordinateurs que l’on branche sur un switch.&lt;/p&gt;
&lt;p&gt;A comprendre que les trames en entrée et sortie d’un switch qui est connecté à un appareil vlan unawre seront non marquées.&lt;/p&gt;
&lt;h3 id=&quot;port-access&quot;&gt;Port Access&lt;/h3&gt;
&lt;p&gt;Les matériels vlan unaware vont être branchés sur un type de ports appelés &lt;code&gt;ports d&#39;accès&lt;/code&gt; ou &lt;em&gt;Access Port&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Pour les constituer nous utilisons l’action &lt;code&gt;untagged&lt;/code&gt; des ports.&lt;/p&gt;
&lt;p&gt;Voici donc nos configurations de ports.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;60%&quot; alt=&quot;Configuration d&#39;un port rouge en PVID 4 et d&#39;un bleu en PVID 3 tous les deux en untagged&quot; src=&quot;/assets/images/reseau-3/vlan-15.jpg&quot; /&gt;
&lt;p&gt;Nous avons un port “bleu” qui possède un PVID=3 et donc qui appartient de fait au VLAN 3. Ainsi qu’un port “rouge” ayant un PVID=4 et donc dans le VLAN 4.&lt;/p&gt;
&lt;p&gt;Une trame ARP arrive par le port le plus à gauche. Elle possède comme auparavant une addresse MAC source.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Arrivé d&#39;une trame non taggué dans un switch&quot; src=&quot;/assets/images/reseau-3/vlan-16.jpg&quot; /&gt;
&lt;p&gt;La trame est décodée et l’association entre l’adresse MAC et le port d’entrée est réalisée.&lt;/p&gt;
&lt;p&gt;Mais contrairement à ce qui se passait dans la partie 2, la table n’est pas globale mais associée à un VLAN, dans le cas présent celui du PVID=3 du port “bleu”.&lt;/p&gt;
&lt;p&gt;La deuxième différence est que la trame se retrouve identifiée avec le tag=3 dans le switch.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Association du port et de l&#39;adresse MAC&quot; src=&quot;/assets/images/reseau-3/vlan-17.jpg&quot; /&gt;
&lt;p&gt;Le switch réalise alors la duplication de la trame ARP non plus sur tous les ports du switch, mais seulement ceux qui sont associés au tag de la trame ici $3$.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Tagging de la trame&quot; src=&quot;/assets/images/reseau-3/vlan-18.jpg&quot; /&gt;
&lt;p&gt;Ainsi seul les ports 2, 4 et 6 qui possède le &lt;code&gt;PVID=3&lt;/code&gt; transmettent une trame, mais du fait de l’action &lt;code&gt;untagged&lt;/code&gt; qui leur est appliquée la trame est débarassée de
son tag avant de rejoindre le réseau.&lt;/p&gt;
&lt;p&gt;L’ARP fonctionnant ainsi, seul l’hôte qui est concerné par le paquet répond, et venant généralement d’un hôte vlan unaware, la trame de réponse ARP sera également
non marquée.&lt;/p&gt;
&lt;p&gt;Cette trame est alors décodée et la l’adresse MAC de source de la réponse ARP est analysée pour remplir la table de mapping entre les ports et l’adresse MAC.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Retour du paquet ARP&quot; src=&quot;/assets/images/reseau-3/vlan-19.jpg&quot; /&gt;
&lt;p&gt;Le port étant un port d’accès possédant un PVID=3, la trame de réponse ARP est identifiée par le tag=3.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; src=&quot;/assets/images/reseau-3/vlan-20.jpg&quot; /&gt;
&lt;p&gt;Connaissant le port de destination du fait de la précédente identification lors de l’analyse de la requête ARP. La trame restée marquée dans son transit dans le switch, est
acheminée vers le port 1.&lt;/p&gt;
&lt;p&gt;Port 1 qui est toujours un port d’accès transfert la trame débarassée de son tag vers l’hôte vlan unaware qui avait fait la requête initiale.&lt;/p&gt;
&lt;p&gt;Nous avons donc deux mondes: le réseau où sont connecté les appareils “unaware” et le monde du switch qui est vlan aware.&lt;/p&gt;
&lt;p&gt;Pour résumer.&lt;/p&gt;
&lt;p&gt;Le principe des ports d’accès est:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une trame en entrée sans tag se retrouve avec un tag en sortie, la valeur du tag ajouté est le PVID du port&lt;/li&gt;
&lt;li&gt;une trame identifiée perd son tag en sortie&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class=&quot;markdown-alert-caution&quot;&gt;
	&lt;p&gt;&lt;strong&gt;Point sécurité&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un port untagged refusera une trame déjà tagguée.
 &lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; alt=&quot;Interdiction de re-tagging&quot; src=&quot;/assets/images/reseau-3/port-03.jpg&quot; /&gt;
&lt;p&gt;Cette précaution est réalisée pour ne pas “re-tagguer” une trame, ce qui peut conduire à des &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://www.cs.dartmouth.edu/~sergey/netreads/local/l2/bullrl-defcon24.pdf&quot;&gt;problèmes de sécurité&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nous venons de régler le premier souci que nous avions: rendre invisible les serveurs du département de comptabilité aux yeux du serveur web.&lt;/p&gt;
&lt;p&gt;Si celui-ci est compromis, le pirate lorsqu’il fera la découverte ARP du réseau ne sera pas en mesure de voir le service de comptabilité.&lt;/p&gt;
&lt;p&gt;(il y a d’autres moyens et d’autres manières de sécuriser)&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; src=&quot;/assets/images/reseau-3/access-01.jpg&quot; /&gt;
&lt;p&gt;Il verra la base de données et la passerelle mais pas les autres machines.&lt;/p&gt;
&lt;h3 id=&quot;port-trunk&quot;&gt;Port Trunk&lt;/h3&gt;
&lt;p&gt;Par contre nous n’avons pas agi sur le fait que notre immeuble possède deux étages et donc deux switchs.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;80%&quot; src=&quot;/assets/images/reseau-3/vlan-07.jpg&quot; /&gt;
&lt;p&gt;La solution naïve est d’utiliser deux ports par switchs pour faire transiter les données.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/trunk-01.jpg&quot; /&gt;
&lt;p&gt;Mais on a alors un gaspillage de port et de câble, la virtualisation en prend un coup car on a autant de câble que de VLAN.&lt;/p&gt;
&lt;p&gt;Ici, nous avons que 2 VLANs, mais avec 3 VLANs c’est 3 câbles et 6 ports qui partent en fumée.&lt;/p&gt;
&lt;p&gt;Il serait plus élégant de tout faire passer par un même câble, ainsi seul deux ports et un câble serait mobilisé quelque soit le nombre de VLANs
que l’on souhaite faire échanger entre les switchs.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/trunk-02.jpg&quot; /&gt;
&lt;p&gt;Pour cela, nous allons nous servir des ports multiplement taggués.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;30%&quot; alt=&quot;PVID multiple&quot; src=&quot;/assets/images/reseau-3/tagged-02.jpg&quot; /&gt;
&lt;p&gt;Mais on peut grandement simplifier les informations car la liaisons PVID/tagged étant implicite, nous pouvons la remplacer par la
notation &lt;code&gt;trunk : X&lt;/code&gt;, X étant l’identifiant du VLAN que l’on souhaite faire transiter.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;30%&quot; src=&quot;/assets/images/reseau-3/vlan-29.jpg&quot; /&gt;
&lt;p&gt;Ceci est appelé un &lt;code&gt;Trunk port&lt;/code&gt;, dans le cas présent il accepte les VLAN 3 et 4.&lt;/p&gt;
&lt;p&gt;On dézoom, notre port trunk sera le 7.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-28.jpg&quot; /&gt;
&lt;p&gt;Une requête ARP atteint le port d’accès 5 qui possède le PVID=4, la trame est alors dupliquée vers les ports qui sont dans le VLAN 4.&lt;/p&gt;
&lt;p&gt;Le port 3 enlève le tag.&lt;/p&gt;
&lt;p&gt;Le port 7 par contre, ne fait rien, il transmet tel quel la trame identifié par le tag=4 qui part dans le câble connecté au port 7.&lt;/p&gt;
&lt;p&gt;Dans le même temps on enregistre l’adresse MAC et on l’associe au port d’entré.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-30.jpg&quot; /&gt;
&lt;p&gt;La trame de la requête ARP tagguée part donc en direction du second switch.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-31.jpg&quot; /&gt;
&lt;p&gt;Elle rentre également par un port 7 qui est lui aussi un port trunk des VLAN 3 et 4.&lt;/p&gt;
&lt;p&gt;Le port étant un trunk, la trame conserve son tag et est duppliquée sur tous les port qui ont le PVID=4.&lt;/p&gt;
&lt;p&gt;Chacun de ces ports étant des ports d’accès, le tag est alors retiré avant d’être transmis dans le réseau.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-32.jpg&quot; /&gt;
&lt;p&gt;Là encore, un seul repond.&lt;/p&gt;
&lt;p&gt;On enregistre la correspondance de port.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-33.jpg&quot; /&gt;
&lt;p&gt;Puis on fait transiter vers le port de destination qui s’avère être le 7.&lt;/p&gt;
&lt;p&gt;Le port trunk fait alors son office et transmet la trame tagguée sur le câble de liaison.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-34.jpg&quot; /&gt;
&lt;p&gt;Celle-ci atteint alors l’autre switch qui sait désormais que l’hôte cible de la requête ARP est sur le port 7. Il le note dans sa table.&lt;/p&gt;
&lt;p&gt;La réponse ARP sort alors débarassée de son tag vers l’hôte de la requête.&lt;/p&gt;
&lt;h4 id=&quot;vlan-natif&quot;&gt;VLAN natif&lt;/h4&gt;
&lt;p&gt;Petit ajout d’information en passant.&lt;/p&gt;
&lt;p&gt;Que se passe-t-il si l’on a besoin de faire transiter des trames non-identifiées dans le trunk ?&lt;/p&gt;
&lt;p&gt;Ce besoin peut exister dans le cas de vieille infrastructure ou de switch qui ne sont pas vlan aware.&lt;/p&gt;
&lt;p&gt;Nous allons réserver un VLAN pour les trames non-identifiées.&lt;/p&gt;
&lt;p&gt;Et comme nous sommes dans le cas d’avoir plus d’un PVID. On ne peut pas en dériver la valeur pour le &lt;code&gt;untagged&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nous sommes donc obligé de le spécifier explicitement.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-25.jpg&quot; /&gt;
&lt;p&gt;Et tout comme la notation tagged/PVID n’est pas adaptée, la notion untagged n’est pas non plus représentative.&lt;/p&gt;
&lt;p&gt;Et nous allons l’appeler &lt;code&gt;native vlan&lt;/code&gt; à la place.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-26.jpg&quot; /&gt;
&lt;p&gt;Via ce native vlan, les trames non-identifiées en entrée seront tagguées 1 et les trames avec le tag 1 en sortie seront dé-tagguées.&lt;/p&gt;
&lt;p&gt;Nous avons donc deux mondes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le monde unaware qui manipule les trames non-marquées&lt;/li&gt;
&lt;li&gt;le monde aware qui est capable de manipuler des trames marquées&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et voilà avec ce deuxième type de port trunk on règle également la problématique de l’extension du VLAN tout en conservant une architecture physique qui
ne dépend pas du nombre de VLAN.&lt;/p&gt;
&lt;h2 id=&quot;le-voyage-d-une-trame-dans-un-vlan&quot;&gt;Le voyage d’une trame dans un VLAN&lt;/h2&gt;
&lt;p&gt;Pour faire une synthèse des outils que nous avons vu, nous analyser ce qui se passe lorsque l’on communique avec le serveur dans le vlan depuis internet.&lt;/p&gt;
&lt;p&gt;Ayant maintenant les termes et leur compréhension, nous pouvons annoter le schéma initial.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-35.jpg&quot; /&gt;
&lt;p&gt;On se retrouve avec notre seveur web et la base de données connectée sur un port d’accès sur le VLAN 3.&lt;/p&gt;
&lt;p&gt;Les postes de la comptabilité sont isolés dans le VLAN 4.&lt;/p&gt;
&lt;p&gt;Les switchs sont sur un trunk acceptant les VLAN 3 et 4.&lt;/p&gt;
&lt;p&gt;La passerelle est également vlan aware et donc possède une interface capable de manipuler et de comprendre les trames possédant des tags. L’interface réseau physique
possède deux interfaces réseau virtuelles, l’une qui tag les trames pour le VLAN 3, l’autre pour le VLAN 4.&lt;/p&gt;
&lt;p&gt;Seul l’interface sur le VLAN 3 est routée vers internet.&lt;/p&gt;
&lt;p&gt;L’autre partie de la passerelle connectée à un internet n’est pas non plus vlan aware, et donc il n’y aura pas de trames identifiées venant ou partant sur internet.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;Router signifie manipuler la partie “IP” du contenu de la trame, on verra en long en large et en travers le routing dans le prochain article de la série.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La trame arrive non tagguée depuis internet.&lt;/p&gt;
&lt;p&gt;Cette trame réseau encapsule un paquet IP qui possède:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une addresse IP de destination : l’IP publique de la box internet de l’entreprise&lt;/li&gt;
&lt;li&gt;une addresse IP de source : l’IP publique du client qui fait la requête sur le serveur web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La trame arrive sur la passerelle et désencapsule le paquet.&lt;/p&gt;
&lt;p&gt;Une règle de routage sur la box redirige le paquet vers l’interface du VLAN 3.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-36.jpg&quot; /&gt;
&lt;p&gt;Il se passe alors plusieurs choses qui se déroule dans cet ordre.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le paquet est encapsulé dans une trame réseau.&lt;/li&gt;
&lt;li&gt;la trame reçoit l’adresse MAC du serveur web comme destination et la MAC de la passerelle comme source grâce à la table ARP de la passerelle.&lt;/li&gt;
&lt;li&gt;la trame est également identifiée avec le tag 3&lt;/li&gt;
&lt;li&gt;la trame sort du port trunk tagguée 3&lt;/li&gt;
&lt;/ul&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-37.jpg&quot; /&gt;
&lt;p&gt;Elle se déplace alors dans le câble qui relie la passerelle au switch taggué 3.&lt;/p&gt;
&lt;p&gt;Le port trunk du switch appartenant au vlan 3, la trame est acceptée.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-38.jpg&quot; /&gt;
&lt;p&gt;Le port acceptant étant un trunk, le tag demeure intact.&lt;/p&gt;
&lt;p&gt;La table de correspondance du switch indique que le serveur web est sur le port 3 dans le VLAN 3.&lt;/p&gt;
&lt;p&gt;La trame possède le tag 3, elle est donc dirigée vers le port 3.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-39.jpg&quot; /&gt;
&lt;p&gt;Le port 3 est un trunk du vlan 3, la trame est donc transféré sur le réseau tagguée.&lt;/p&gt;
&lt;p&gt;La trame tagguée arrive par le port trunk 2 du vlan 3, elle est acceptée.&lt;/p&gt;
&lt;p&gt;La table de correspondance redirige vers le port 1.&lt;/p&gt;
&lt;p&gt;Cette fois-ci, le port 1 est un port d’accès, la trame part donc vers le serveur web sans tag.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-40.jpg&quot; /&gt;
&lt;p&gt;Le serveur web répond par une trame réseau ayant comme destination la passerelle encapsulant un paquet possédant l’IP public du client.&lt;/p&gt;
&lt;p&gt;Le port d’accès avec le PVID 3, rajoute le tag 3 à la trame.&lt;/p&gt;
&lt;p&gt;La table de correspondance dirige la trame tagguée vers le port 2 qui est un trunk du vlan 3.&lt;/p&gt;
&lt;p&gt;La trame sort du switch 2 tagguée.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-41.jpg&quot; /&gt;
&lt;p&gt;Elle fait le trajet de retour dans le câble qui relie les 2 switchs.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-42.jpg&quot; /&gt;
&lt;p&gt;Atteint le port 3 qui est un trunk, la trame tagguée traverse le switch.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-43.jpg&quot; /&gt;
&lt;p&gt;Sort tagguée de l’autre port trunk en direction de la passerelle.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-44.jpg&quot; /&gt;
&lt;p&gt;La trame tagguée arrive sur l’interface virtuelle du VLAN 3.&lt;/p&gt;
&lt;p&gt;Une autre règle de routage basée sur le fait que l’adresse IP de destination est sur internet redirige le paquet vers l’interface réseau côté internet.&lt;/p&gt;
&lt;p&gt;La trame non tagguée part sur internet.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-45.jpg&quot; /&gt;
&lt;p&gt;Bon voyage! 😀&lt;/p&gt;
&lt;h2 id=&quot;qualite-de-service&quot;&gt;Qualité de service&lt;/h2&gt;
&lt;p&gt;On a un petit peu de temps pour nous attarder sur l’autre bienfait de la virtualisation: rajouter de la logique et du service.&lt;/p&gt;
&lt;p&gt;Prenons un réseau composé de laptop et de téléphones IP connecté à switch.&lt;/p&gt;
&lt;p&gt;Les ports bleus sont dans le vlan 3 et les rouges dans le vlan 4.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-46.jpg&quot; /&gt;
&lt;p&gt;Chacun de ces matériels sont vlan unaware et sont donc connectés à des ports d’accès et communiquent en trames sans tag.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-47.jpg&quot; /&gt;
&lt;p&gt;La VOIP ou voix par IP est un type de données qui n’est pas gourmand en trafic, mais celui-ci doit rester extrêment stable durant la conversation.&lt;/p&gt;
&lt;p&gt;Or nous sommes dans un monde ou la vraie parallélisation est quelque chose d’extrêment rare, très souvent l’unité de traitement réalise les opération séquentiellement
mais suffisament vite pour donner l’impression que tout se déroule en parrallèle.&lt;/p&gt;
&lt;p&gt;Le switch ne fait pas exception, bien qu’il existe des &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://www.fiber-optic-tutorial.com/what-is-a-core-switch.html&quot;&gt;versions bien énervé qui réalise de la vraie parrallélisation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le notre n’en fait pas.&lt;/p&gt;
&lt;p&gt;Ainsi un des laptop se met à réaliser du gros transfert de données, il va oblitérer la capacité de calcul du switch.&lt;/p&gt;
&lt;p&gt;La voix va se voir hâchée et la discussion deviendra très difficile.&lt;/p&gt;
&lt;p&gt;Comment résoudre cette situation ?&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-48.jpg&quot; /&gt;
&lt;p&gt;La réponse est d’ajouté plus de donnée pour priorisée les trames à traiter.&lt;/p&gt;
&lt;p&gt;Nous avons déjà deux VLAN qui découpent le trafic.&lt;/p&gt;
&lt;p&gt;Nous pouvons alors utiliser les ports dissociés pour leur donner un nouveau rôle de priorisation.&lt;/p&gt;
&lt;p&gt;Lors du tagging, il sera alors possible de rajouter une indication de priorité.&lt;/p&gt;
&lt;p&gt;Les trames du port rouge sont désormais 3 fois plus importante que les trames du port bleu.&lt;/p&gt;
&lt;p&gt;Autrement dit le VLAN 3 à la priorité sur le VLAN 2.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;40%&quot; src=&quot;/assets/images/reseau-3/vlan-49.jpg&quot; /&gt;
&lt;p&gt;Ainsi cette information de priorité doit être portée par la trame elle-même.&lt;/p&gt;
&lt;p&gt;Pour cela le tag ne porte plus uniquement le VLAN ID mais également la priorisation.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-50.jpg&quot; /&gt;
&lt;p&gt;Pour des raisons de lisibilité je simplifie la notation.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;40%&quot; src=&quot;/assets/images/reseau-3/vlan-51.jpg&quot; /&gt;
&lt;p&gt;Voici le schéma (très simplifié) de principe d’un switch uniquement composé de port d’accès.&lt;/p&gt;
&lt;p&gt;De haut en bas, nous avons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l’entrée du switch qui vient tagguer la trame et la prioriser&lt;/li&gt;
&lt;li&gt;la répartition en fonction de la priorité&lt;/li&gt;
&lt;li&gt;l’unité de traitement qui réalise la commutation&lt;/li&gt;
&lt;li&gt;le port de sortie qui retire le tag&lt;/li&gt;
&lt;/ul&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-52.jpg&quot; /&gt;
&lt;p&gt;Comme tout à l’heure nous pouvons faire le voyage des trames mais cette fois-ci dans le switch lui-même. 😀&lt;/p&gt;
&lt;p&gt;Les trames arrivent non-identifiées du réseau, sont tagguées et priorisées en fonction du port d’entrée.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-53.jpg&quot; /&gt;
&lt;p&gt;Elles sont alors réparties en fonction de leur priorisation dans ce que l’on nomme des &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/File_de_priorit%C3%A9&quot;&gt;files de priorités&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
	&lt;p&gt;Dans la réalité ce sont plutôt des &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/Buffer_circulaire&quot;&gt;ring-buffers&lt;/a&gt; qui ont la capacité d’“oublier” les trames les plus anciennes pour ne pas engorger le système.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je représente ici ces files par des réciptient, qui contiennent les trames de même priorité.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-54.jpg&quot; /&gt;
&lt;p&gt;Le fonctionnement d’une file de priorité est que l’on traite toujours les éléments de plus haute priorité en premier.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-55.jpg&quot; /&gt;
&lt;p&gt;Puis les priorités les plus faibles par la suite.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-56.jpg&quot; /&gt;
&lt;p&gt;Ainsi, dès qu’une autre trame de priorité 3 porteur de VOIP arrive sur le switch elle sera traité le plus rapidement possible même si les trames du téléchargement
continuent d’affluer.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-57.jpg&quot; /&gt;
&lt;p&gt;Finalement la commutation est réalisée et les trames sort de leur port d’accès respectif non tagguées.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;70%&quot; src=&quot;/assets/images/reseau-3/vlan-58.jpg&quot; /&gt;
&lt;p&gt;Le VLAN outre d’avoir permis d’isoler les domaine de diffusion entre les laptop et les téléphones IP a également permis de rajouter une information de priorité sur
un trafic par rapport à un autre.&lt;/p&gt;
&lt;p&gt;On nomme ceci la QoS (Quality of Service) ou qualité de service en français.&lt;/p&gt;
&lt;h4 id=&quot;en-serie&quot;&gt;En série&lt;/h4&gt;
&lt;p&gt;Et une dernière choses avant de nous quitter.&lt;/p&gt;
&lt;p&gt;Imaginez que vous soyez un peut ric-rac en termes de nombres de port disponible sur un switch et que chacun de vos collaborateurs veut disposer d’un téléphone IP.&lt;/p&gt;
&lt;p&gt;Le téléphone peut tout à fait être vlan aware et envoyer des trames tagguées au switch.&lt;/p&gt;
&lt;p&gt;On viendra alors connecter le laptop toujours vlan unaware derrière le téléphone.&lt;/p&gt;
&lt;p&gt;Le téléphone ne sera alors pas connecté sur un port d’accès mais sur une sorte de trunk (la littérature n’est pas claire sur le nom à donner à ce type de port, j’ai lu parfois port hybride). Un trunk avec un vlan natif ici le 66.&lt;/p&gt;
&lt;p&gt;Ainsi le laptop continuera de transmettre des trames non tagguées qui seront relayées par le téléphone.&lt;/p&gt;
&lt;p&gt;Toute ces trames voyageront dans le même câble et ne mobiliseront qu’un unique port.&lt;/p&gt;
&lt;img class=&quot;&quot; width=&quot;100%&quot; src=&quot;/assets/images/reseau-3/vlan-59.jpg&quot; /&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Paradoxalement cet article est celui où j’avais le plus de matière mais où les informations étaient également les plus contradictoires entres-elles.&lt;/p&gt;
&lt;p&gt;J’espère ne pas avoir trop simplifier de choses pour le profit de la vulgarisation.&lt;/p&gt;
&lt;p&gt;En espérant que vous ayez appris quelques petites choses.&lt;/p&gt;
&lt;p&gt;Je vous remercie de votre lecture et je vous dis à la prochaine pour l’article du le routage de paquets. ❤️&lt;/p&gt;
&lt;p&gt;Si vous avez des corrections à réaliser vous pouvez le faire via une &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://gitlab.com/Akanoa/blogv2/-/blob/main/content/wireguard-2.md?ref_type=heads&quot;&gt;merge request&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/wireguard-1&quot;&gt;Lien vers la partie 2&lt;/a&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="fr">
        <title>Le Réseau de zéro (partie 2)</title>
        <published>2022-01-27T00:00:00+00:00</published>
        <updated>2022-01-27T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://staging.lafor.ge/wireguard-1/"/>
        <id>https://staging.lafor.ge/wireguard-1/</id>
        
        <content type="html" xml:base="https://staging.lafor.ge/wireguard-1/">&lt;p&gt;Bonjour à toutes et tous :)&lt;/p&gt;
&lt;p&gt;Chose promise chose due, voici la deuxième partie du prologue de l’article sur Wireguard.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je vous jure un jour cet article verra le jour 🤣&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mais pour ça j’ai envie de creuser un petit peu les choses.&lt;/p&gt;
&lt;p&gt;Et donc aujourd’hui, nous allons détailler la communication entre deux
noeuds &lt;span style=&quot;color:#ff3333&quot;&gt;rouges&lt;/span&gt; d’un réseau.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/sub-network.png&quot; alt=&quot;sous réseau&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous verrons plus tard comment un noeud &lt;span style=&quot;color:#ff3333&quot;&gt;rouge&lt;/span&gt; peut discuter avec un noeud &lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt;, c’est un poil plus complexe.&lt;/p&gt;
&lt;p&gt;C’est parti ! 😁&lt;/p&gt;
&lt;h2 id=&quot;l-adresse-mac&quot;&gt;L’adresse MAC&lt;/h2&gt;
&lt;p&gt;L’adresse MAC ou &lt;strong&gt;M&lt;/strong&gt;edia &lt;strong&gt;A&lt;/strong&gt;ccess &lt;strong&gt;C&lt;/strong&gt;ontrol est un identifiant unique (en théorie 😛 ) qui est affecté à chaque interface du réseau.&lt;/p&gt;
&lt;p&gt;Pour les révisions c’est &lt;a href=&quot;/wireguard-0/#interface&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cet idenfiant se compose de 48 bits, généralement écrits sous forme hexadécimale.&lt;/p&gt;
&lt;p&gt;En fonction des systèmes d’exploitation, la représentation peut-être différente.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/adresse-mac.png&quot; alt=&quot;représentation des adresses MAC selon l’OS&quot; /&gt;.&lt;/p&gt;
&lt;p&gt;Cette adresse est en quelque sorte la plaque d’immatriculation de votre interface réseau.&lt;/p&gt;
&lt;p&gt;Nous allons donc pouvoir améliorer notre schéma en affectant non plus seulement une adresse IP à notre interface mais aussi une adresse MAC.&lt;/p&gt;
&lt;p&gt;Pour m’épagner l’écriture complète des adresses MAC dans la suite des exemples. Je vais utiliser une notation simplifiée.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/adresse-mac-simple.png&quot; alt=&quot;notation simplifiée d’adresse MAC&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce qui nous permet d’écrire ceci:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/interface-avec-mac.png&quot; alt=&quot;interface muni d’une adresse MAC&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ceci est une machine possédant une interface &lt;strong&gt;eth0&lt;/strong&gt; qui a comme adresse IP &lt;code&gt;192.168.1.12&lt;/code&gt; et comme adresse MAC &lt;code&gt;.e6f1&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;adresse-mac-de-broadcast&quot;&gt;Adresse MAC de broadcast&lt;/h3&gt;
&lt;p&gt;Tout comme il existe une adresse IP de &lt;a href=&quot;/wireguard-0/#adresse-de-broadcast&quot;&gt;broadcast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/broadcast-mac.png&quot; alt=&quot;adresse MAC de broadcast&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cette adresse va être extrêmement importante par la suite. 😉&lt;/p&gt;
&lt;h2 id=&quot;le-fonctionnement-des-switchs&quot;&gt;Le fonctionnement des switchs&lt;/h2&gt;
&lt;h3 id=&quot;les-ports-d-un-switch&quot;&gt;Les ports d’un switch&lt;/h3&gt;
&lt;p&gt;Je vais révéler un terrible secret. 🧐&lt;/p&gt;
&lt;p&gt;Un switch est incapable de comprendre une adresse IP. Les seules choses qu’ils connaissent sont les &lt;strong&gt;adresses MAC&lt;/strong&gt;! 😮&lt;/p&gt;
&lt;p&gt;Dans les faits, les switchs possèdent une table qui associe un port à une adresse MAC et donc extension l’ordinateur qui y est branché.&lt;/p&gt;
&lt;p&gt;Par exemple, un ordinateur qui possède une adresse MAC &lt;code&gt;.ae20&lt;/code&gt; sur le port 1. Donnerait cette association.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;port 1 -&amp;gt; .ae20&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et on peut avoir la même chose pour tous les ports qui y sont branchés.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;port 2 -&amp;gt; .ef12&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;port 3 -&amp;gt; .6af1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si on représente graphiquement ces associations:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch.png&quot; alt=&quot;Un LAN classique&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;transmettre-l-information&quot;&gt;Transmettre l’information&lt;/h3&gt;
&lt;p&gt;Lorsque l’ordinateur possédant l’adresse MAC &lt;code&gt;.ae20&lt;/code&gt; veut communiquer avec l’ordinateur qui a l’adresse MAC &lt;code&gt;.ef12&lt;/code&gt;, il va se passer ceci.&lt;/p&gt;
&lt;h4 id=&quot;trame-reseau&quot;&gt;Trame réseau&lt;/h4&gt;
&lt;p&gt;Pour permettre à notre message d’être compris par le switch nous avons besoin de lui rajouter des informations supplémentaires.&lt;/p&gt;
&lt;p&gt;Le message composé de nos données et du bloc d’information indiquant entre autre, de l’adresse MAC de destination et de source est appelé une &lt;code&gt;trame&lt;/code&gt; ou &lt;code&gt;frame&lt;/code&gt; en anglais.&lt;/p&gt;
&lt;p&gt;Ce bloc d’information supplémentaire par rapport aux données que l’on veut transmettre, se nomme un &lt;code&gt;entête&lt;/code&gt; ou &lt;code&gt;header&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/frame.png&quot; alt=&quot;définition d’une trame ethernet&quot; /&gt;&lt;/p&gt;
&lt;h4 id=&quot;le-voyage-d-une-trame&quot;&gt;Le voyage d’une trame&lt;/h4&gt;
&lt;p&gt;A l’état initial nous sommes ainsi.&lt;/p&gt;
&lt;p&gt;Le switch connait tout le monde et l’ordinateur de gauche souhaite communiquer avec l’ordinateur de droite.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch2.png&quot; alt=&quot;l’ordinateur de gauche initie un envoie de messages&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L’ordinateur de gauche génère une trame réseau, qui contient deux parties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les données à transmettre ( ici en blanc )&lt;/li&gt;
&lt;li&gt;Les addresses MAC à usage du switch: ( ici en orange )
&lt;ul&gt;
&lt;li&gt;de destination : &lt;strong&gt;DST&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;de source      : &lt;strong&gt;SRC&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/mac_nomen.png&quot; alt=&quot;un message avec l’information MAC&quot; /&gt;.&lt;/p&gt;
&lt;p&gt;Ce message, sort alors de l’interface et suit le fil qui le conduit jusqu’au switch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch3.png&quot; alt=&quot;l’ordinateur de gauche initie un envoie de messages&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le message arrive dans le switch par le &lt;strong&gt;port 1&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch4.png&quot; alt=&quot;le message arrive dans le switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L’adresse MAC de destination du message est lue par le switch. Elle est détectée comme étant &lt;code&gt;.ef12&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le switch, grâce à sa table de correspondance, “sait” que le &lt;strong&gt;port 2&lt;/strong&gt; y est associé.&lt;/p&gt;
&lt;p&gt;Il va alors créer un pont entre le port d’entrée &lt;code&gt;1&lt;/code&gt; et le port de sortie &lt;code&gt;2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch5.png&quot; alt=&quot;le switch réalise la jonction de ports&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le message suit alors le “câble” ainsi créé pour atteindre la destination voulue.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch6.png&quot; alt=&quot;le message arrive à destination&quot; /&gt;&lt;/p&gt;
&lt;h4 id=&quot;generalisation&quot;&gt;Généralisation&lt;/h4&gt;
&lt;p&gt;Bien sûr, ce comportement fonctionne avec plus de 2 ports branchés.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch7.png&quot; alt=&quot;le message arrive à destination&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le PC possédant l’adresse mac &lt;code&gt;.ae12&lt;/code&gt; et branché sur le &lt;strong&gt;port 1&lt;/strong&gt; du switch envoie un message en direction de l’adresse mac &lt;code&gt;.32a9&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le switch connait le port sur lequel est branché la machine qui correspond à l’adresse mac &lt;code&gt;.32a9&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ici l’adresse mac &lt;code&gt;.32a9&lt;/code&gt; est associée au &lt;strong&gt;port 3&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il réalise la jonction entre les ports &lt;code&gt;1&lt;/code&gt; et &lt;code&gt;3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le message peut alors arriver à destination.&lt;/p&gt;
&lt;h3 id=&quot;broadcast-reseau&quot;&gt;Broadcast réseau&lt;/h3&gt;
&lt;p&gt;Un peu plus haut dans l’article, je vous ai parlé de &lt;a href=&quot;/wireguard-1/#adresse-mac-de-broadcast&quot;&gt;l’adresse mac de broadcast&lt;/a&gt; nous allons tout de suite voir sa spécificité.&lt;/p&gt;
&lt;p&gt;Lorsque l’adresse MAC de destination est &lt;code&gt;.ffff&lt;/code&gt; alors le switch a pour comportement de dupliquer le message sur l’ensemble des ports excepté celui d’entrée.&lt;/p&gt;
&lt;p&gt;Ce processus se nomme &lt;strong&gt;innondation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/switch8.png&quot; alt=&quot;innondation réseau par le switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il nous sera très pratique dans la suite de nos besoins.&lt;/p&gt;
&lt;h2 id=&quot;et-les-ips-dans-tout-ca&quot;&gt;Et les IPs dans tout ça ?&lt;/h2&gt;
&lt;p&gt;Mais allez me dire:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Moi quand je parle à une machine c’est par adresse IP et pas par adresse MAC&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et vous avez tout à fait raison ! 😁&lt;/p&gt;
&lt;p&gt;En fait, le bloc données n’est pas ce qu’il semble être au premier abord.&lt;/p&gt;
&lt;p&gt;Il n’est pas uniquement constitué des données veut transmettre. Nous avons, en autre, aussi “caché” l’adresse IP de destination.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/ip.png&quot; alt=&quot;encapsulation des données IP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dont on peut simplifier l’écriture ainsi:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/ip2.png&quot; alt=&quot;encapsulation des données IP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce qui nous permet de rajouter une couche d’information à notre message qui cette fois ci ne concerne plus l’adresse MAC mais l’adresse IP.&lt;/p&gt;
&lt;p&gt;L’ensemble &lt;em&gt;header&lt;/em&gt; IP et données est appelé un &lt;code&gt;paquet&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Lorsque paquet transite sur le réseau, il est toujours inclu dans une trame et donc possède un &lt;em&gt;header&lt;/em&gt; MAC.&lt;/p&gt;
&lt;h2 id=&quot;et-mon-port-j-en-fait-quoi-pig2&quot;&gt;Et mon port j’en fait quoi ? 🐖&lt;/h2&gt;
&lt;p&gt;Dans l’article précédent je vous avait parlé de la notion de &lt;a href=&quot;/wireguard-0/#ports-logiques&quot;&gt;port logique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Qui consistait à contacter le service d’une machine au moyen d’un numéro.&lt;/p&gt;
&lt;p&gt;On va voir comment ce numéro est défini dans les données transmises par un paquet.&lt;/p&gt;
&lt;p&gt;Tout comme, lorque vous rédigez une lettre vous allez écrire l’adresse du destinataire sur le recto de l’enveloppe.&lt;/p&gt;
&lt;p&gt;Et si vous désirez que ce destinataire puisse vous répondre vous avez la possibilité d’inscrire votre adresse sur le rabat de l’enveloppe au verso.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/enveloppe_verso.png&quot; alt=&quot;Verso d’une enveloppe&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;port-dynamique&quot;&gt;Port dynamique&lt;/h3&gt;
&lt;p&gt;Imaginons vous naviguez sur internet, vous souhaitez afficher twitter.com comme on l’a réalisé dans l’exemple de &lt;a href=&quot;/wireguard-0/#le-serveur-dns&quot;&gt;l’article précédent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vous allez recevoir une IP sur laquelle vous rendre et étant donné qu’il s’agit d’HTTPS, votre navigateur va s’y connecter avec le port normalisé 443.&lt;/p&gt;
&lt;p&gt;Or, pour que twitter.com soit dans la capacité de vous répondre, il faut que votre ordinateur définisse un port de réponse.&lt;/p&gt;
&lt;p&gt;Pour cela il va piocher un numéro aléatoirement choisi dans la liste des ports qui ne sont pas encore utilisé par une application de votre machine.&lt;/p&gt;
&lt;p&gt;Sur un windows par exemple, cette plage port de réponse s’étend de &lt;strong&gt;49152&lt;/strong&gt; à &lt;strong&gt;65535&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On va par exemple choisir le &lt;code&gt;60816&lt;/code&gt; pour notre exemple.&lt;/p&gt;
&lt;h3 id=&quot;segment&quot;&gt;Segment&lt;/h3&gt;
&lt;p&gt;Pour stocker cette information de port, nous allons définir un nouvel header dans le paquet envoyé à twitter qui contiendra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l’IP de destination : &lt;strong&gt;104.244.42.129&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;notre propre IP : &lt;strong&gt;82.109.194.218&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;le port lequel on souhaite communiquer : &lt;strong&gt;443&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;le port de réponse sur lequel on invite twitter à nous répondre.: &lt;strong&gt;60816&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;on désire communiquer en &lt;strong&gt;TCP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici le paquet ainsi créé:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/paquet.png&quot; alt=&quot;paquet TCP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Que l’on va lui aussi détailler.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/paquet2.png&quot; alt=&quot;paquet TCP détaillé&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Les données et leur information de ports sont appelés un &lt;code&gt;segment&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Et d’ailleurs lorsque vous demandé l’adresse IP de twitter au serveur DNS vous avez aussi réalisé une requête, mais celle-ci UDP sur le port &lt;strong&gt;53&lt;/strong&gt; de l’IP &lt;strong&gt;1.1.1.1&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ce qui nous donne ce paquet par exemple.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/paquet3.png&quot; alt=&quot;paquet UDP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce paquet explique au serveur DNS sur quel port nous répondre lorsqu’il nous renverra l’IP de twitter.com, ici le &lt;strong&gt;51203&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;arp&quot;&gt;ARP&lt;/h2&gt;
&lt;p&gt;Dans la &lt;a href=&quot;/wireguard-1/#le-fonctionnement-des-switchs&quot;&gt;partie précédente&lt;/a&gt;, je vous ai expliqué que les switchs étaient incapables de comprendre ce qu’était une IP et donc de traiter un paquet.&lt;/p&gt;
&lt;p&gt;Or, dans notre exemple nous avons défini des IP de destination et de source.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Quel mécanisme permet la construction de la trame nécessaire à l’acheminement au travers du réseau et plus particulièrement au travers des switchs ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce mécanisme s’appelle l’ARP (&lt;strong&gt;A&lt;/strong&gt;ddress &lt;strong&gt;R&lt;/strong&gt;esolution &lt;strong&gt;P&lt;/strong&gt;rotocol) ou PRA (&lt;strong&gt;P&lt;/strong&gt;rotocole de &lt;strong&gt;R&lt;/strong&gt;ésolution d’&lt;strong&gt;A&lt;/strong&gt;dresses). Mais personne n’emploie ce terme. ^^’&lt;/p&gt;
&lt;h3 id=&quot;table-arp&quot;&gt;Table ARP&lt;/h3&gt;
&lt;p&gt;Chaque ordinateur possède une table d’association entre les adresses MAC qu’il connait et leur adresse IP correspondante.&lt;/p&gt;
&lt;p&gt;Cette table est appelée la &lt;strong&gt;table ARP&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;probleme-a-resoudre&quot;&gt;Problème à résoudre&lt;/h3&gt;
&lt;p&gt;Par exemple, si nous avons le réseau suivant:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp.png&quot; alt=&quot;situation initiale&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sur le dessin, j’ai représenté les &lt;strong&gt;tables ARP&lt;/strong&gt; sont ici vides.&lt;/p&gt;
&lt;p&gt;Dans notre exemple nous avons l’ordinateur 1 qui souhaite communiquer avec l’ordinateur 2.&lt;/p&gt;
&lt;p&gt;Il connait l’IP de l’ordinateur 2, c’est l’adresse &lt;code&gt;192.168.10.13&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Notre ordinateur est donc capable de concevoir un paquet possédant les information :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d’IP de destination&lt;/li&gt;
&lt;li&gt;d’IP source&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp2.png&quot; alt=&quot;paquet IP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le souci est d’être capable de concevoir la trame qui permettra d’acheminer le message dans le réseau.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp3.png&quot; alt=&quot;trame incomplète&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Tout l’objet du protocole ARP va être de trouver un moyen de remplir les points d’interrogations.&lt;/p&gt;
&lt;h3 id=&quot;fonctionnement&quot;&gt;Fonctionnement&lt;/h3&gt;
&lt;p&gt;Pour obtenir l’adresse MAC associée à l’IP &lt;strong&gt;192.168.10.13&lt;/strong&gt;. L’ordinateur 1 va créer un paquet ARP.&lt;/p&gt;
&lt;p&gt;Celui-ci possède un certain nombre de données dont:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HW_SRC: l’adresse MAC du demandeur: &lt;strong&gt;.ae12&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;IP_SRC: l’adresse IP du demandeur: &lt;strong&gt;192.168.10.2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;IP_TRG: l’adresse IP demandée: &lt;strong&gt;192.168.10.13&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp4.png&quot; alt=&quot;paquet ARP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il ne possède pas de champ de données.&lt;/p&gt;
&lt;p&gt;Pour qu’il puisse transiter dans le réseau, il lui faut une trame car souvenez vous les paquets ne sont pas compris par les switchs.&lt;/p&gt;
&lt;p&gt;Pour constituer notre trame, nous allons nous appuyer sur l’addresse MAC de &lt;a href=&quot;/wireguard-1/#adresse-mac-de-broadcast&quot;&gt;broadcast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ce qui nous donne la trame suivante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type de trame : &lt;strong&gt;ARP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Adresse MAC de source : &lt;strong&gt;.ae12&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Adresse MAC de destination : &lt;strong&gt;.ffff&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp5.png&quot; alt=&quot;trame ARP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cette trame ARP sort de l’interface de l’ordinateur 1 et se propage dans le réseau en suivant le câble en direction du switch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp6.png&quot; alt=&quot;trame ARP arrive au switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Lorsque la trame arrive dans le switch par le port 1, il se passe une série d’actions.&lt;/p&gt;
&lt;p&gt;Tout d’abord la trame est lue et on défini la destination qu’elle doit prendre.&lt;/p&gt;
&lt;p&gt;Or, ici la destination est l’adresse de broadcast, on va donc procéder à une innondation réseau.&lt;/p&gt;
&lt;p&gt;Il se passe également une seconde chose. La trame étant de type ARP, on vient lire le champ contenant l’adresse MAC de source, ici &lt;code&gt;.ae12&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Et connaissant déjà de quel port provient la trame analysée, nous pouvons remplir la table association du switch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp7.png&quot; alt=&quot;remplissage de table d’association du switch par analyse de la trame ARP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La trame ARP est alors dupliquée sur l’ensemble des ports excepté le port 1.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp8.png&quot; alt=&quot;processus d’innondation ARP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Maintenant nous devons différencier 2 cas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le paquet ARP est destiné à l’hôte ( cas de l’hôte 2 )&lt;/li&gt;
&lt;li&gt;le paquet ARP n’est pas destiné à l’hôte ( cas de l’hôte 3 )&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;paquet-arp-ignore&quot;&gt;Paquet ARP ignoré&lt;/h3&gt;
&lt;p&gt;Voyons le cas de l’hôte 3. La trame ARP possédant l’adresse de MAC de broadcast est acceptée par l’interface de l’hôte 3.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp9-1.png&quot; alt=&quot;trame ARP acceptée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Par contre l’adresse IP de cible du paquet ARP est différent de celui de l’hôte. Ne sachant pas quoi en faire il drop le paquet ARP sans se poser de question.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp9-2.png&quot; alt=&quot;paquet ARP ignoré&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;paquet-arp-accepte&quot;&gt;Paquet ARP accepté&lt;/h3&gt;
&lt;p&gt;Cette fois-ci, nous passons au traitement de notre paquet ARP par l’hôte 2 à qui le paquet ARP est réellement destiné.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp10-1.png&quot; alt=&quot;paquet ARP traité et table ARP complétée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le paquet ARP ayant l’IP de destination, il est traité au lieu d’être ignoré contrairement au cas de l’hôte 3.&lt;/p&gt;
&lt;p&gt;Le paquet ARP est alors lu et les informations de l’adresse de MAC de source ainsi que l’adresse IP de source sont utilisés pour compléter la table ARP précédemment vide.&lt;/p&gt;
&lt;h3 id=&quot;creation-de-la-reponse-arp&quot;&gt;Création de la réponse ARP&lt;/h3&gt;
&lt;p&gt;Pour répondre à la requête ARP l’hôte va devoir créer un nouveau paquet ARP qui va contenir les informations suivantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HW_SRC : sa propre adresse MAC : &lt;strong&gt;.f32a&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;HW_TRG : l’adresse MAC de l’hôte qui a envoyé la requête : &lt;strong&gt;.ae12&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;IP_SRC : sa propre adresse IP : &lt;strong&gt;192.168.10.13&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;IP_TRG : l’adresse IP de l’hôte qui a envoyé la requête : &lt;strong&gt;192.168.10.2&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remarquez que l’adresse de source a changé entre la requête et sa réponse. C’est normal les rôles sont inversés.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp11-1.png&quot; alt=&quot;création du paquet ARP de réponse&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il faut alors une trame recopiant ces information d’adresse MAC:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp11-2.png&quot; alt=&quot;création du paquet ARP de réponse&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cette trame se dirige alors vers le switch, via port 2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp12.png&quot; alt=&quot;la trame sort de l’interface et rentre dans le switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La trame est alors analysée par le switch qui peut remplir sa table d’association avant de rediriger la trame vers le port 1 étant donné que l’adresse de destination est la &lt;code&gt;.ae12&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp13.png&quot; alt=&quot;la trame sort du switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cette trame arrive dans l’hôte par l’interface qui possède l’adresse MAC de destination. La trame est accepte la trame est acceptée.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp14-1.png&quot; alt=&quot;le paquet ARP de réponse est traité et la table ARP complétée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le paquet ARP possède également l’IP destination correcte, ce qui permet de compléter la table ARP.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp14-2.png&quot; alt=&quot;le paquet ARP de réponse est traité et la table ARP complétée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A l’issu de cet échange de paquets ARP entre les hôtes 1 et 2, nous retrouvons avec la situation suivante:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp15.png&quot; alt=&quot;situation après échange de paquet ARP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Les hôtes 1 et 2 connaissent les adresses MAC de l’un de l’autre.&lt;/p&gt;
&lt;p&gt;De plus le switch, connait désormais les adresses MAC associées aux ports 1 et 2.&lt;/p&gt;
&lt;h2 id=&quot;envoye-un-paquet-ip-sur-le-reseau&quot;&gt;Envoyé un paquet IP sur le réseau&lt;/h2&gt;
&lt;p&gt;Imaginez que vous ouvriez un onglet dans votre navigateur et que vous tapiez l’URL &lt;code&gt;https://192.168.10.13&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Que va-t-il se passer ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A chaque fois que vous ouvrez un onglet, un nouveau processus est créé et un port lui est attribué. Ici par exemple, son port dynamique sera le &lt;strong&gt;60816&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Lorsque le navigateur désire récupérer le contenu d’une page web sur un serveur, il va venir définir un message qui aura cette forme:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;GET / HTTP1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ceci permet de récupérer la page à la racine du serveur.&lt;/p&gt;
&lt;p&gt;Nous avons ainsi notre brique &lt;code&gt;DATA&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nous pouvons aussi créer le segment TCP correspondant car nous savons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Que HTTPS utilise le &lt;strong&gt;TCP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Que le port de destination du protocole HTTPS est &lt;strong&gt;443&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Que le port le port dynamique affecté à l’onglet est &lt;strong&gt;60816&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel7.png&quot; alt=&quot;l’onglet créé une requête&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous connaissons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notre IP : &lt;strong&gt;192.168.10.2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;L’IP de destination : &lt;strong&gt;192.168.10.13&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous pouvons créer le paquet correspondant.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel8.png&quot; alt=&quot;le segment est encapsulé dans un paquet&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Rappelez-vous que notre paquet va devoir traverser un switch qui ne comprend pas la notion d’adresse IP.&lt;/p&gt;
&lt;p&gt;Nous devons absolument définir une adresse MAC de destination.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/arp3.png&quot; alt=&quot;trame incomplète&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fort heureusement, la vie étant bien faite nous avons détaillé le fonctionnement du protocole ARP.&lt;/p&gt;
&lt;p&gt;Qui comme par hasard nous permet de récupérer l’adresse MAC associée à une adresse IP. C’est fou les coïcidences, hein ?! 🤣&lt;/p&gt;
&lt;p&gt;Grâce au protocole ARP, nous avons capacité de récupérer cette adresse MAC de destination, qui est désormais est stockée dans la table ARP de l’hôte.&lt;/p&gt;
&lt;p&gt;Nous savons désormais que l’hôte qui possède l’IP &lt;code&gt;192.168.10.13&lt;/code&gt; a pour adresse MAC &lt;code&gt;.f32a&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nous pouvons ainsi compléter la trame avec la destination.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel9.png&quot; alt=&quot;trame complétée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ouf! On a enfin notre trame prête à être propager dans le réseau !! 🥳&lt;/p&gt;
&lt;p&gt;Notre trame arrive sur le port 1 du switch, son adresse MAC de destination est alors lue.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel4.png&quot; alt=&quot;commutation au travers du switch&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le switch va alors commuter la trame vers le port 2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel5.png&quot; alt=&quot;trame commutée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La trame arrive alors à l’intérieur de la machine 2 où elle y est analysée. La destination de la trame correspondant à l’adresse MAC de la machine. La trame est acceptée et le paquet transmis au reste du système.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel6.png&quot; alt=&quot;trame analysée et acceptée&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le paquet est alors transmis pour être à son tour analysé.&lt;/p&gt;
&lt;p&gt;Remarquez, on ne perd pas les informations précédemment analysées, ça nous sera pratique dans un prochain article. ^^’&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel10.png&quot; alt=&quot;paquet analysé et accepté&quot; /&gt;&lt;/p&gt;
&lt;p&gt;C’est au tour du segment de ce faire analyser pour lui affecter une destination de processus.&lt;/p&gt;
&lt;p&gt;Ici le port de destination est le *&lt;em&gt;443&lt;/em&gt; autrement dit le serveur HTTP.&lt;/p&gt;
&lt;p&gt;(dans les faits c’est un petit peu plus complexe que ça mais faut bien garder de la matière pour un autre article non ? 😁).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel11.png&quot; alt=&quot;segment analysé&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous avons finalement notre requête HTTP qui atteint le serveur Web.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;GET / HTTP1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Celui-ci, maintenant, peut répondre:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt; html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Ma super page&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Bonjour !!&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et donc on fait le circuit dans le sens inverse:&lt;/p&gt;
&lt;p&gt;On défini à la destination du header de transport: le précédent port de source de la requête qui nous a été affecté pour que l’on puisse répondre.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel12.png&quot; alt=&quot;création du segment de réponse&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Même combat pour l’adresse IP&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel13.png&quot; alt=&quot;création du paquet de réponse&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et finalement, la trame utilise aussi la table ARP pour venir définir sa destination.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel14.png&quot; alt=&quot;création de la trame de réponse&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La trame sort sur le réseau.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel15.png&quot; alt=&quot;trame de réponse sur le réseau&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le switch commute la trame à destination&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel16.png&quot; alt=&quot;trame de réponse commutée sur le réseau&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On passe les étapes d’analyse et d’acceptation et on saute tout de suite à la redirection du message vers l’onglet qui a demandé la page:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/reseau-2/travel17.png&quot; alt=&quot;trame de réponse sur le réseau&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt; html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Ma super page&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Bonjour !!&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;z-l-8 z-d-8&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et voilà on a notre page !!! 🥳&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Et voilà pour la première partie de l’explication de certains protocoles réseaux.&lt;/p&gt;
&lt;p&gt;On a vu comment deux machines d’un même réseau étaient capable de communiquer.&lt;/p&gt;
&lt;p&gt;Nous verrons dans l’article prochain, comment deux machines de deux réseaux différents peuvent le faire aussi.&lt;/p&gt;
&lt;p&gt;Je vous remercie pour votre lecture et je vous donne rendez-vous pour la suite (date non fixée) ❤️&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="fr">
        <title>Le Réseau de zéro (Partie 1)</title>
        <published>2021-09-23T00:00:00+00:00</published>
        <updated>2021-09-23T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://staging.lafor.ge/wireguard-0/"/>
        <id>https://staging.lafor.ge/wireguard-0/</id>
        
        <content type="html" xml:base="https://staging.lafor.ge/wireguard-0/">&lt;h1 id=&quot;le-reseau-de-zero&quot;&gt;Le Réseau de zéro&lt;/h1&gt;
&lt;p&gt;Bonjour à toutes et tous ! 😀&lt;/p&gt;
&lt;p&gt;Cet article est un prologue à un autre article qui sera dédié au VPN Wireguard.&lt;/p&gt;
&lt;p&gt;Les deux parties devaient à l’origine faire partie d’un même article.&lt;/p&gt;
&lt;p&gt;Mais au vue de la longueur déjà conséquente de celui-ci. J’ai décidé d’en faire deux.&lt;/p&gt;
&lt;p&gt;L’article que vous avez sous les yeux est donc une initiation au Réseau et à ses concepts de bases qui seront nécessaires à la compréhension du fonctionnement et de la configuration de Wireguard.&lt;/p&gt;
&lt;p&gt;Je vous souhaites une bonne lecture. 😎&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
  &lt;img src=&quot;https://i.giphy.com/media/l41YvpiA9uMWw5AMU/giphy.webp&quot; alt=&quot;&quot;/&gt;
&lt;/p&gt;
&lt;h2 id=&quot;reseau&quot;&gt;Réseau&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Qu’est ce qu’un réseau ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un réseau est un ensemble de machines connectées. Ces machines s’échangent des informations aux moyen de protocoles de communications.&lt;/p&gt;
&lt;p&gt;Il existe diverses façons de constituer un réseau.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/network.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Chaque noeud peut-être ce que l’on veut: un ordinateur portable, un serveur, un smartphone, un PC de bureau, une box internet et même une cafetière connectée si l’on veut ! 😀&lt;/p&gt;
&lt;p&gt;De même les “traits” qui relient nos noeuds peuvent aussi être de natures diverses. Nous pouvons connecter nos machine avec un bon vieux câble ethernet, mais aussi en Wi-Fi ou 4G/5G.&lt;/p&gt;
&lt;h2 id=&quot;interface&quot;&gt;Interface&lt;/h2&gt;
&lt;p&gt;Si l’on zoom sur un des noeuds nous allons observer ceci.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/interface.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Les “rectangles colorés” constituent les interfaces de nos noeuds.&lt;/p&gt;
&lt;p&gt;Une &lt;code&gt;interface&lt;/code&gt; est une porte d’entrée/sortie d’une machine et lui permet de discuter sur le réseau.&lt;/p&gt;
&lt;p&gt;Une même machine peut posséder plusieurs interfaces.&lt;/p&gt;
&lt;p&gt;Pour les désigner on leur donne des noms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;eth0&lt;/code&gt;, &lt;code&gt;eth1&lt;/code&gt; : pour les branchement par câble&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wlan0&lt;/code&gt; : pour l’antenne Wi-Fi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En fonction des système d’exploitation ces dénominations peuvent varier.&lt;/p&gt;
&lt;h2 id=&quot;les-commutateurs-et-les-routeurs&quot;&gt;Les commutateurs et les routeurs&lt;/h2&gt;
&lt;p&gt;Afin de permettre de connecter plusieurs machines entre-elles sans multiplier le nombre d’interfaces nécessaires.&lt;/p&gt;
&lt;p&gt;Nous allons brancher l’ensemble des noeuds qui désirent discuter entre eux sur machine commune appelée &lt;code&gt;commutateur&lt;/code&gt; ou &lt;code&gt;routeur&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/concentrator.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ceux dits “intelligents”, cela veut dire qu’ils sont capables de comprendre les messages qui leurs sont transmis et de modifier le traffic en fonction de règles, on y retrouve majoritairement les routeurs dont les boxes internet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/livebox.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et ceux qui sont “non-intelligents”, il ne servent que de “passe-plats”, ils ne comprennent que la destination de ce qu’ils doivent transmettre. C’est ce qu’on appelle communément un switch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/switch.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;sous-reseau&quot;&gt;Sous réseau&lt;/h2&gt;
&lt;p&gt;La grande force des réseaux est qu’ils peuvent discuter avec d’autres réseaux.&lt;/p&gt;
&lt;p&gt;On appelle se procéder &lt;code&gt;l&#39;interconnexion&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/sub-network.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pour cela, un &lt;span style=&quot;color:#ff3333&quot;&gt;réseau 1&lt;/span&gt; discute avec un &lt;span style=&quot;color:#33c1ff&quot;&gt;réseau 2&lt;/span&gt; en utilisant comme intermédiaire un &lt;span style=&quot;color:#49ff33&quot;&gt;réseau neutre&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Très schématiquement, ici nous avons le fonctionnement d’Internet. Un ensemble de sous-réseaux communiquants.&lt;/p&gt;
&lt;h2 id=&quot;passerelle&quot;&gt;Passerelle&lt;/h2&gt;
&lt;p&gt;Ce qui se passe à l’interconnexion entre réseau est aussi intéressante.&lt;/p&gt;
&lt;p&gt;Zoomons un peu:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/gateway.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous avons une machine qui possède deux interfaces, une &lt;strong&gt;eth1&lt;/strong&gt; et une &lt;span style=&quot;color:#49ff33&quot;&gt;eth0&lt;/span&gt;. L’interface &lt;span style=&quot;color:#49ff33&quot;&gt;eth0&lt;/span&gt; appartient au réseau d’interconnexion et l’interface &lt;strong&gt;eth1&lt;/strong&gt; à un autre réseau (&lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt; ou &lt;span style=&quot;color:#ff3333&quot;&gt;rouge&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;Ce genre de noeud possédant des interfaces dans plusieurs réseaux est appelé une &lt;code&gt;passerelle&lt;/code&gt; ou &lt;code&gt;gateway&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ici nous nous limitons à l’interconnexion de deux réseaux, mais il est possible d’en interconnecter bien plus sur une même passerelle.&lt;/p&gt;
&lt;h2 id=&quot;le-protocole-ip&quot;&gt;Le protocole IP&lt;/h2&gt;
&lt;p&gt;Je vous ai dis que dans un réseau il y avait des messages qui transitaient sur les liaisons entre noeuds.&lt;/p&gt;
&lt;p&gt;Mais un peu comme pour la Poste, il faut que l’on sache qui habite où.&lt;/p&gt;
&lt;p&gt;C’est ainsi que l’on a créé le protocole internet ou &lt;code&gt;IP&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il existe plusieurs versions de ce protocole. Deux sont actuellement en usage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l’&lt;code&gt;IPv4&lt;/code&gt; : très largement répandu&lt;/li&gt;
&lt;li&gt;l’&lt;code&gt;IPv6&lt;/code&gt; : en cours d’adoption depuis 2008 (LOL 🤣).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L’IPv6 a été mise en place pour faire face à phénomène de &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://www.arcep.fr/la-regulation/grands-dossiers-internet-et-numerique/lipv6/suivi-de-lepuisement-des-adresses-ipv4.html&quot;&gt;raréfaction&lt;/a&gt; des adresses IPv4.&lt;/p&gt;
&lt;p&gt;En effet il existe un nombre fini d’adresses, et comme chaque utilisateur doit posséder une adresse unique, comme dans la vraie vie avec la Poste pour recevoir son courrier. Plus le nombre d’utilisateurs sur internet a grandit plus le nombre d’adresses disponibles a diminué.&lt;/p&gt;
&lt;p&gt;La principale différence entre la version 4 et la version 6 est le nombre de bits utilisé pour écrire l’adresse.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IPv4 =&amp;gt; 32 bits&lt;/li&gt;
&lt;li&gt;IPv6 =&amp;gt; 128 bits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On va revenir sur cette notion de bit très vite.&lt;/p&gt;
&lt;p&gt;Etant donné que l’on est pas encore prêt à utiliser l’IPv6 en 2021, je vais majoritairement vous parler de ce que je connais et utilise, l’IPv4.&lt;/p&gt;
&lt;h3 id=&quot;adressage-ipv4&quot;&gt;Adressage IPv4&lt;/h3&gt;
&lt;p&gt;Une adresse IPv4 est composée de 4 octets séparés par des points.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/ipv4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On appelle cette notation, la notation décimale pointée d’une adresse IPv4.&lt;/p&gt;
&lt;p&gt;Cette notation avec des points n’est valable que pour des humains, la machine elle le comprend comme des nombres et plus précisément comme des nombres binaires.&lt;/p&gt;
&lt;p&gt;Les machines ne manipulent pas de chaines de caractères car leur traitement est lent et couteux en ressources.&lt;/p&gt;
&lt;p&gt;Pour ceux qui aurait des lacunes avec cette notation, je vous propose cette &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;http://villemin.gerard.free.fr/Wwwgvmm/Numerati/BINAIRE/Debutant.htm&quot;&gt;excellente ressource&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un octet est un paquet de 8 bits, et un bit est la brique élémentaire de l’informatique permettant de représenter absolument tout lorsque l’on manipule des données en memoire.&lt;/p&gt;
&lt;p&gt;La notation décimale existe afin d’être plus facilement manipulée par des humains.&lt;/p&gt;
&lt;p&gt;Si l’on devais écrire la même adresse du point de vue de la machine on aurait plutôt ceci.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;11000000.10101000.00000001.00000001&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et encore ici, je vous conserve les séparateurs, la machine ne les voit même pas et donc si on se ramène à une valeur décimale notre adresse vaut &lt;code&gt;3232235777&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Une autre adresse comme &lt;code&gt;10.0.0.2&lt;/code&gt; vaut &lt;code&gt;167772162&lt;/code&gt; du point de vue de la machine.&lt;/p&gt;
&lt;p&gt;Ce qui n’est pas très pratique à se rappeler pour nous pauvres êtres faits de chair et de sang. 😅&lt;/p&gt;
&lt;h3 id=&quot;masque-de-reseau&quot;&gt;Masque de réseau&lt;/h3&gt;
&lt;p&gt;Je vous ai dit qu’un réseau est un ensemble de machines qui discutent entre elles.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mais comment expliquer à un ordinateur ce qu’est un réseau et si oui ou non telle ou telle machine appartient à ce réseau ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C’est tout le but d’un masque réseau.&lt;/p&gt;
&lt;p&gt;Cela fonctionne un peu comme un indicatif de numéro national.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/phone.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Un même numéro de téléphone correspond à différents usagers en fonction de leur indicatif national.&lt;/p&gt;
&lt;p&gt;En réseau on va réaliser la même chose.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/phone_and_network.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ici en &lt;span style=&quot;color:#ff3333&quot;&gt;rouge&lt;/span&gt; nous allons avoir “l’indicatif du réseau” et en &lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt; “le numéro de l’usager”.&lt;/p&gt;
&lt;p&gt;Notre “usager” étant la machine connectée au réseau.&lt;/p&gt;
&lt;p&gt;On remarque que le dernier numéro peut-être identique d’une machine à l’autre mais ne pas correspondre à la même machine.&lt;/p&gt;
&lt;p&gt;Toutes les machines possédant un même indicatif peuvent discuter entre elles.&lt;/p&gt;
&lt;p&gt;En réseau, on va définir cet indicatif d’une manière un peu spéciale.&lt;/p&gt;
&lt;p&gt;Comme vu précédemment sur la &lt;a href=&quot;/wireguard-0/#adressage-ipv4&quot;&gt;partie sur l’adressage&lt;/a&gt; la machine ne manipule que des nombres.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Comment faire pour définir que les machines &lt;code&gt;192.168.1.2&lt;/code&gt; et &lt;code&gt;192.168.1.3&lt;/code&gt; sont dans le même réseau mais pas la machine &lt;code&gt;192.168.9.4&lt;/code&gt;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Les concepteurs de l’IPv4 ont créé un concept astucieux: le masque de réseau.&lt;/p&gt;
&lt;p&gt;L’idée est de profiter des propriétés des nombres binaires et une en particulier appelée le &lt;code&gt;ET binaire&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Table de vérité&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1 &amp;amp; 1 = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1 &amp;amp; 0 = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0 &amp;amp; 1 = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0 &amp;amp; 0 = 0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On va effectuer cette opération sur chaque bit d’une adresse.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/and.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La partie du haut est ce que l’on désire masquer et la partie du bas le masque.&lt;/p&gt;
&lt;p&gt;Tout ce qui est à l’aplomb d’un &lt;code&gt;1&lt;/code&gt; est conservé, sinon il sera transformé en &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Comme pour les adresses on peut définir nos masques avec une notation décimale pointée.&lt;/p&gt;
&lt;p&gt;Entre les adresses &lt;code&gt;192.168.1.2&lt;/code&gt; et &lt;code&gt;192.168.1.3&lt;/code&gt;, nous voyons que la racine commune est &lt;code&gt;192.168.1&lt;/code&gt; qui n’est pas partagée par &lt;code&gt;192.168.9.4&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cela semble une bonne méthode pour départager nos adresses.&lt;/p&gt;
&lt;p&gt;Nous voulons conserver les 3 premiers octets de nos adresses et supprimer le quatrième.&lt;/p&gt;
&lt;p&gt;Nous avons vu que les &lt;code&gt;1&lt;/code&gt; des masques conservaient les données et les &lt;code&gt;0&lt;/code&gt; les supprimaient.&lt;/p&gt;
&lt;p&gt;Comme nous voulons conserver des octets complets, nous cherchons un masque constitué uniquement de &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/and-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A l’inverse le quatrième octet ne doit pas être conservé, on cherche un masque uniquement constitué de &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/and-3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Prenons maintenant la notation décimale de ces 2 masques:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/mask.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et maintenant écrivons le masque complet:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;masque = 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si l’on applique celui ci à nos adresses:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/mask2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous n’avons plus qu’à comparer les adresses masquée entre elles.&lt;/p&gt;
&lt;p&gt;Si elles sont identiques, elles appartiennent au même réseau et discutent entre elles. Sinon ce n’est pas le cas.&lt;/p&gt;
&lt;p&gt;En faisant nos calculs de masques, on observe bien que les deux premières adresses sont dans le même réseau mais ce n’est pas le cas de la dernière.&lt;/p&gt;
&lt;p&gt;Pour définir si une adresse à appartient ou non à un réseau on va comparer si l’adresse testée masquée est égale à l’adresse du réseau masquée.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/network_owning.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On peut réaliser la même opération sur des adresses différentes, des masques différents et des réseaux différents.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/network_and_mask_examples.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;notation-cidr&quot;&gt;Notation CIDR&lt;/h3&gt;
&lt;p&gt;Les informaticiens sont fainéants de nature et écrire des masques toute la journée n’est pas très enrichissant.&lt;/p&gt;
&lt;p&gt;Cette situation fastidieuse a poussé les concepteurs de l’IPv4 à inventer une notation basée sur le nombre de &lt;code&gt;1&lt;/code&gt; consécutif d’un masque.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/cidr.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et donc pour notre réseau&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;adresse : 192.168.1.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;masque : 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On écrira plutôt:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;192.168.1.0/24&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ce réseau peut s’écrire indifféremment &lt;code&gt;192.168.1.1/24&lt;/code&gt; ou &lt;code&gt;192.168.1.8/24&lt;/code&gt; ou &lt;code&gt;192.168.1.0/24&lt;/code&gt;, cela n’a pas d’importance. Seule compte l’adresse masquée.&lt;/p&gt;
&lt;h3 id=&quot;plage-adressable&quot;&gt;Plage adressable&lt;/h3&gt;
&lt;p&gt;Maintenant que nous savons comment définir si une adresse appartient ou non à un réseau, il est temps de parler de plage d’adresses.&lt;/p&gt;
&lt;p&gt;De la même manière que dans une rue avec une longeur défini. Le nombre de maisons et donc de numéros dans la rue est lui aussi fini.&lt;/p&gt;
&lt;p&gt;Un octet est un paquet de 8 bits. Ce qui signifie que la valeur la plus basse
qu’il peut prendre est &lt;code&gt;0&lt;/code&gt; et la plus haute &lt;code&gt;255&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Si on reprend notre réseau &lt;code&gt;192.168.1.0/24&lt;/code&gt; on obtient:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/addressing1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Deux adresses sont un peu spéciales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;192.168.1.0&lt;/code&gt; : l’adresse du réseau, ne peut pas être utilisée par une machine&lt;/li&gt;
&lt;li&gt;&lt;code&gt;192.168.1.255&lt;/code&gt; : l’adresse de broadcast, on y revient dans la suite, ne peut pas non plus être utilisée par une machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout le reste est appelée, &lt;code&gt;plage adressage&lt;/code&gt; du réseau &lt;code&gt;192.168.1.0/24&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Bien-sûr on peut réaliser le même décompte des adresses possibles dans un réseau différent.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/addressing2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;adresse-de-broadcast&quot;&gt;Adresse de broadcast&lt;/h3&gt;
&lt;p&gt;L’adresse de broadcast est l’une des deux adresses qui existent sur les réseaux mais qu’il n’est pas possible d’obtenir comme IP d’une machine.&lt;/p&gt;
&lt;p&gt;Cette adresse est toujours la dernière de la plage du réseau.&lt;/p&gt;
&lt;p&gt;On calcule cette adresse via une formule qui utilise deux opérateurs.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#La négation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;~ 1 = 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;~ 0 = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;#Le OU binaire&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1 | 1 = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1 | 0 = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0 | 1 = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0 | 0 = 0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Par exemple:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/broadcast.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cette adresse est utilisée pour transmettre des informations à l’ensemble des machines connectées sur le réseau.&lt;/p&gt;
&lt;p&gt;Lorsqu’un switch reçoit un message qui a pour destinataire l’adresse de broadcast, il retransmet le message sur tous les ports.&lt;/p&gt;
&lt;p&gt;C’est pour cela qu’elle n’est pas utilisé pour adresser une machine en particulier car elle désigne toutes les machines du réseau par définition.&lt;/p&gt;
&lt;h2 id=&quot;les-passerelles-de-sous-reseaux&quot;&gt;Les passerelles de sous-réseaux&lt;/h2&gt;
&lt;p&gt;Maintenant que nous sommes des champions du réseau il est temps de les faire parler entre eux. 😎&lt;/p&gt;
&lt;p&gt;Si vous vous rappelez bien on a parlé des passerelles réseau plus haut.&lt;/p&gt;
&lt;p&gt;Et bien c’est leur heure de gloire.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/gateway-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nos passerelles possèdent 2 adresses IP dans deux sous-réseaux différents.&lt;/p&gt;
&lt;p&gt;Une adresse dans le réseau &lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt; et une adresse dans le réseau &lt;span style=&quot;color:#49ff33&quot;&gt;vert&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;C’est ainsi que fonctionne les boxes Internet, elles ont à la fois une IP dite publique qui leur permet de se connecter à Internet. Mais aussi une IP privée généralement &lt;code&gt;192.168.1.1&lt;/code&gt; qui permet de communiquer avec des pareils de la maison.&lt;/p&gt;
&lt;p&gt;Cette box internet est la passerelle de votre réseau domestique.&lt;/p&gt;
&lt;p&gt;Pour l’instant les sous-réseaux ne communiquent pas entre-eux il manque un mécanisme permettant de transmettre les informations, du réseau &lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt; vers le réseau &lt;span style=&quot;color:#49ff33&quot;&gt;vert&lt;/span&gt; et inversement.&lt;/p&gt;
&lt;h3 id=&quot;routage&quot;&gt;Routage&lt;/h3&gt;
&lt;p&gt;Ce mécanisme se nomme le routage.&lt;/p&gt;
&lt;p&gt;Il consiste en une série de règles qui définissent comment les paquets entrants et sortants d’une passerelles doivent se comporter.&lt;/p&gt;
&lt;p&gt;Ainsi que les échanges qui sont réalisés entre les interfaces de la passerelle.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/routing.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;ports-logiques&quot;&gt;Ports logiques&lt;/h3&gt;
&lt;p&gt;Sur une machine il tourne généralement plusieurs applications, le souci est de savoir à qui l’on doit remettre le message.&lt;/p&gt;
&lt;p&gt;Pour reprendre l’exemple de la Poste. Chaque immeuble possède un numéro unique mais plusieurs appartements.&lt;/p&gt;
&lt;p&gt;Ici le numéro d’immeuble serait l’IP de la machine et le numéro de porte, le port logique.&lt;/p&gt;
&lt;p&gt;On défini ce couple de numéros par une notation standardisée, qui sépare l’adresse de la machine du numéro de port par un &lt;code&gt;:&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/address_port.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Les numéros de ports sont en parti standardisés et correspondent généralement des applications bien définies.&lt;/p&gt;
&lt;p&gt;Par exemple un serveur HTTP aura comme de port &lt;code&gt;80&lt;/code&gt; et un serveur sécurisé HTTP, le fameux HTTPS, le &lt;code&gt;443&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il existe une &lt;a rel=&quot;nofollow noreferrer external&quot; href=&quot;https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels&quot;&gt;liste&lt;/a&gt; qui répertorie les numéros de port les plus connus.&lt;/p&gt;
&lt;h3 id=&quot;routage-de-ports&quot;&gt;Routage de ports&lt;/h3&gt;
&lt;p&gt;Maintenant que nous sommes capable de distinguer des messages ayant pour destination plusieurs applications situées sur une même machine.&lt;/p&gt;
&lt;p&gt;Nous allons pouvoir router nos messages en fonction de nos besoins.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/routing-ports.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Par exemple rediriger tout le flux HTTP/S vers une machine A et les mails vers un machine B.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/rules.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On a un flux d’entré de l’interface &lt;code&gt;eth0&lt;/code&gt; qui sont composé de messages tous adressés à l’IP &lt;code&gt;10.0.0.2&lt;/code&gt; mais sur des ports différents.&lt;/p&gt;
&lt;p&gt;Nous routons les messages pour qu’ils soient transmis vers la bonne destination.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les port &lt;code&gt;80&lt;/code&gt; et &lt;code&gt;443&lt;/code&gt; vers la machine &lt;code&gt;192.168.1.2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;le port &lt;code&gt;25&lt;/code&gt; vers la machine &lt;code&gt;192.168.1.3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le port &lt;code&gt;22&lt;/code&gt; n’étant routé nulle part, les messages sont supprimés et ne seront perdu.&lt;/p&gt;
&lt;p&gt;A l’inverse tous les messages venant du switch sont librement renvoyés vers l’interface &lt;code&gt;eth0&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;reseau-etendu-et-local&quot;&gt;Réseau étendu et local&lt;/h3&gt;
&lt;p&gt;La distinction entre réseau local (&lt;strong&gt;L&lt;/strong&gt;ocal &lt;strong&gt;A&lt;/strong&gt;rea &lt;strong&gt;N&lt;/strong&gt;etwork) et le réseau étendu (&lt;strong&gt;W&lt;/strong&gt;ide &lt;strong&gt;A&lt;/strong&gt;rea &lt;strong&gt;N&lt;/strong&gt;etwork) réside principalement dans sa taille en nombre de machines et en surface couverte.&lt;/p&gt;
&lt;p&gt;Le premier va concerné des petits réseaux domestiques ou d’entreprise. Un petit milliers de machines dans le cas général.&lt;/p&gt;
&lt;p&gt;Tandis que le second s’intéresse aux réseau à l’échelle d’une région, d’un pays, d’un continent ou même de la planète entière.&lt;/p&gt;
&lt;p&gt;Le WAN le plus célèbre s’appelle Internet.&lt;/p&gt;
&lt;p&gt;Comme nos machines sur notre réseau &lt;code&gt;192.168.1.1/24&lt;/code&gt; notre réseau va lui aussi posséder une adresse dans WAN Internet.&lt;/p&gt;
&lt;p&gt;Cette adresse est appellée &lt;code&gt;IP publique&lt;/code&gt;, elle permet à l’ensemble des machines qui sont connectées à Internet de vous contacter et vous de pouvoir explorer Internet ! 😀&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/thierry-lhermitte-thierry.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Si l’on schématise extrêmement grossièrement le fonctionnent d’Internet, on peut créer un schéma comme celui-ci:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/lan-wan.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Nous avons deux passerelle qui ont chacune deux interfaces: une &lt;span style=&quot;color:#33c1ff&quot;&gt;bleu&lt;/span&gt; qui le rélie au &lt;strong&gt;LAN&lt;/strong&gt;  et une &lt;span style=&quot;color:#ff3333&quot;&gt;rouge&lt;/span&gt; qui le relie au &lt;strong&gt;WAN&lt;/strong&gt; (Internet).&lt;/p&gt;
&lt;p&gt;Le réseau de gauche possède sur Internet l’adresse IP publique &lt;code&gt;101.42.77.12&lt;/code&gt; et le réseau droite &lt;code&gt;43.12.65.9&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Lorsque le réseau de gauche veut discuter avec des machines dans le réseau de droite, il adresse ses message sur l’IP &lt;code&gt;43.12.65.9&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ensuite, en fonction des règles de routage définie sur la passerelle de droite, les messages arrivent à destination.&lt;/p&gt;
&lt;p&gt;Si l’on veut faire l’inverse, il suffit d’adresser ses messages non plus à &lt;code&gt;43.12.65.9&lt;/code&gt; mais à &lt;code&gt;101.42.77.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;dns&quot;&gt;DNS&lt;/h2&gt;
&lt;h3 id=&quot;nom-de-domaine&quot;&gt;Nom de domaine&lt;/h3&gt;
&lt;p&gt;Avant de pouvoir parler de DNS nous allons devoir expliquer la notion de nom de domaine.&lt;/p&gt;
&lt;p&gt;Je vous ai expliqué que la notation décimale des adresses IP était faite pour les humains, pour qu’il puisse se rappeller plus facilement que d’utiliser la notation binaire ou même entière.&lt;/p&gt;
&lt;p&gt;Mais si vous demandez tata Jacqueline d’aller sur Google et qu’il faut qu’elle se rappelle de l’IP publique du serveur Google par exemple : &lt;code&gt;216.58.208.195&lt;/code&gt;. Il risque d’y avoir peu de personne qui retrouveront Google sur Internet.&lt;/p&gt;
&lt;p&gt;C’est pour cette raison qu’a été créé le concept de &lt;code&gt;nom de domaine&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Son principe de fonctionnement est associer une chaîne de caractères à une adresse IP.&lt;/p&gt;
&lt;p&gt;Par exemple:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;google.fr -&amp;gt; 216.58.208.195&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;facebook.com -&amp;gt; 157.240.14.35&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On peut même avoir plusieurs IPs associées à un même nom de domaine.&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;twitter.com -&amp;gt; 104.244.42.129 et 104.244.42.193&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Le problème c’est où stocké ces associations pour les mettre à disposition du reste d’Internet ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C’est là qu’intervient le serveur de nom de domaine autrement appelé &lt;strong&gt;D&lt;/strong&gt;omain &lt;strong&gt;N&lt;/strong&gt;ame &lt;strong&gt;S&lt;/strong&gt;erver.&lt;/p&gt;
&lt;h3 id=&quot;le-serveur-dns&quot;&gt;Le serveur DNS&lt;/h3&gt;
&lt;p&gt;Est une machine comme une autre, située dans un LAN qui dispose comme tous les autres réseaux d’une adresse publique.&lt;/p&gt;
&lt;p&gt;A ceci près qu’un serveur DNS possède un service qui écoute sur le port &lt;code&gt;53&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ce service possède la table d’association entre les noms de domaines et les IP publiques dont on parlait tout à l’heure.&lt;/p&gt;
&lt;p&gt;Il répond à l’ensemble des demandes venant de l’extérieur en renvoyant pour le nom de domaine demander, l’IP publique qui lui est associée.&lt;/p&gt;
&lt;p&gt;Une autre différence est que l’on ne joint pas le serveur DNS par son nom de domaine mais par son IP publique. Sinon on se retrouverait dans le paradoxe de l’oeuf et de la poule.&lt;/p&gt;
&lt;p&gt;Par exemple si un utlisateur situé dans un LAN, mettons une maison, souhaite se connecter à &lt;code&gt;twitter.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il va d’abord joindre le serveur DNS qu’il connait, ici le &lt;code&gt;1.1.1.1&lt;/code&gt;. Qui va lui répondre que l’IP publique du LAN contenant le site &lt;code&gt;twitter.com&lt;/code&gt; se trouve à l’IP &lt;code&gt;104.244.42.129&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il va ensuite faire une requête vers &lt;code&gt;104.244.42.129&lt;/code&gt; pour atteindre le LAN de twitter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/dns.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;tcp-udp&quot;&gt;TCP/UDP&lt;/h2&gt;
&lt;p&gt;Ce qui nous fais poser une autre question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Comment fait-on pour s’assurer que les informations aillent bien au bon endroit ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dans cette partie on ne détaillera pas complètement le fonctionnement. Je voudrai juste que vous ayez l’intution de ce qui se passe.&lt;/p&gt;
&lt;p&gt;Les réseaux communiquant au travers de IP utilise deux principales manières: le TCP et l’UDP.&lt;/p&gt;
&lt;h3 id=&quot;udp&quot;&gt;UDP&lt;/h3&gt;
&lt;p&gt;L’&lt;strong&gt;U&lt;/strong&gt;ser &lt;strong&gt;D&lt;/strong&gt;atagram &lt;strong&gt;P&lt;/strong&gt;rotocol d’abord, c’est la manière la plus simple des deux d’acheminer un message.&lt;/p&gt;
&lt;p&gt;Imaginez ça comme un pigeon voyageur, vous envoyez un message et c’est tout. Vous ne saurez jamais si ce message a
bien été reçu par le destinataire.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/pigeon.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce protocole est utilisé lorsque les messages sont répétés et peu importants.&lt;/p&gt;
&lt;p&gt;Son intérêt est d’être rapide et peu contraignant. On envoie les messages et adviennent que pourra.&lt;/p&gt;
&lt;p&gt;On l’utilise par exemple dans les jeux vidéos pour connaître la position d’un joueur lors d’une partie en ligne par exemple. On peut se permettre de perdre la position du joueur à la frame 1001 puisque la frame 1002 va corriger le souci.&lt;/p&gt;
&lt;h3 id=&quot;tcp&quot;&gt;TCP&lt;/h3&gt;
&lt;p&gt;Le second, le &lt;strong&gt;T&lt;/strong&gt;ransmission &lt;strong&gt;C&lt;/strong&gt;ontrol &lt;strong&gt;P&lt;/strong&gt;rotocol est plus à rapprocher à une discussion par talkie-walkie.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/roger.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il y a une notion de retour d’information, en anglais on nomme ceci acknowledgement (reconnaissance).&lt;/p&gt;
&lt;p&gt;Ce qui si signifie que pour tout les messages qui vont être envoyés. Nous allons attendre un retour du destinataire qui va reconnaître qu’il a bien reçu le message.&lt;/p&gt;
&lt;p&gt;Et si l’on veut une autre analogie, on peut rapprocher cela d’une lettre recommandée. L’accusé de réception fait foi du bon transport du message et de sa réception.&lt;/p&gt;
&lt;p&gt;Par contre, tout comme dans la vraie vie, une lettre avec accusé de réception est plus lourde et si elle se perd en chemin ou que le destinataire n’est pas trouvée. Elle est renvoyé à l’expéditeur.&lt;/p&gt;
&lt;p&gt;Expéditeur qui essaiera de renvoyer le message.&lt;/p&gt;
&lt;p&gt;Ce protocole est utilisé dans le cas ou chaque message compte. La perte d’un message peut avoir des conséquence sur la cohérence de la communication.&lt;/p&gt;
&lt;p&gt;Comme avec nos talkie-walkie, si la qualité de réception n’est pas bonne. Il va manquer des phrases ou des bouts de phrases. Et ainsi brouiller le sens de la conversation.&lt;/p&gt;
&lt;p&gt;Faire répéter son interlocuteur est parfois essentiel.&lt;/p&gt;
&lt;h2 id=&quot;vpn&quot;&gt;VPN&lt;/h2&gt;
&lt;p&gt;Comme disait Mufasa&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/mufasa.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Notre Royaume étant notre LAN, et le WAN le Cimetière d’éléphants rempli de hyènes qui vous veulent du mal.&lt;/p&gt;
&lt;p&gt;Imaginons que nous voulions connecter deux LANs entre eux. Si ces LANs sont séparés géographiquement, ils devront forcément passer par le WAN pour communiquer.&lt;/p&gt;
&lt;p&gt;Or, il se peut que les données qui vont y transiter soient sensibles et nécessite des sécurités pour éviter que des personnes mal-intentionnés ne puisse y avoir accès.&lt;/p&gt;
&lt;p&gt;Nous devons donc trouver un moyen de faire transiter nos messages de manière sécurisée.&lt;/p&gt;
&lt;p&gt;Une des techniques qui a été mise au point pour y arriver se nomme le &lt;strong&gt;V&lt;/strong&gt;irtual &lt;strong&gt;P&lt;/strong&gt;rivate &lt;strong&gt;N&lt;/strong&gt;etwork ou autrement appelé IPsec.&lt;/p&gt;
&lt;p&gt;L’idée est de créer une interface réseau virtuelle dans chacun des deux LANs que l’on souhaite relier.&lt;/p&gt;
&lt;p&gt;L’interface est dite virtuelle car elle ne concerne ni une interface ethernet, ni une interface Wi-Fi.&lt;/p&gt;
&lt;p&gt;Sur le schéma dessous elle est représentée par l’interface &lt;span style=&quot;color:#ff3333&quot;&gt;tun0&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;La liaison entre ces deux interfaces virtuelles, va créer dans le WAN une sorte de câble réseau virtuelle.&lt;/p&gt;
&lt;p&gt;Cette liaison est appelée un &lt;code&gt;tunnel&lt;/code&gt; et de la même manière qu’un tunnel de montagne, il permet d’accéder rapidement d’un côté et de l’autre de celui-ci.&lt;/p&gt;
&lt;p&gt;Une autre contrainte d’un tunnel est d’acheminer de manière sécurisée les messages qui y transitent.&lt;/p&gt;
&lt;p&gt;L’idée est que si une personne qui n’est pas habilité à lire les messages tente de le faire, il ne verra que du bruit numérique.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../assets/images/wireguard/vpn.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Ouf ! On est arrivé au bout. 😀&lt;/p&gt;
&lt;p&gt;Nous possédons tous les concepts de bases du réseau pour comprendre le fonctionnement du VPN Wireguard et sa
configuration.&lt;/p&gt;
&lt;p&gt;J’espère que l’article vous a plu.&lt;/p&gt;
&lt;p&gt;Je me suis particulièrement amusé à vulgariser du mieux que j’ai pu tout ça.&lt;/p&gt;
&lt;p&gt;La prochaine partie arrive très vite.&lt;/p&gt;
&lt;p&gt;On s’attaquera au gros du morceau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chiffrement asymétrique&lt;/li&gt;
&lt;li&gt;Configuration du VPN&lt;/li&gt;
&lt;li&gt;Cas d’utilisation&lt;/li&gt;
&lt;li&gt;Automatisation de la gestion des utilisateurs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Merci de m’avoir lu et à la prochaine! 🥰&lt;/p&gt;
</content>
        
    </entry>
</feed>
