À présent, nous allons ajouter des passerelles pour permettre à notre réseau de communiquer à l’extérieur.
Créez une passerelle de sortie
Vous l’attendiez, vous en rêviez, nous allons maintenant le faire. Nous allons associer une passerelle de sortie à notre VPC.
C’est quoi une passerelle de sortie ? À quoi ça sert ?
Afin de communiquer avec l’extérieur, AWS met en place des passerelles de sortie ; il en existe deux sortes :
les passerelles Internet, permettant de router du trafic réseau dans et hors de votre VPC. Les passerelles Internet supportent l’IPv4 et l’IPv6 ;
les passerelles de sortie uniquement, permettant de router du trafic réseau uniquement en sortie de votre VPC. Cela peut être une alternative à la création d’une instance NAT ou d’une passerelle NAT. Les passerelles de sortie uniquement ne supportent que l’IPv6.
Comment on fait ?
Cliquez sur InternetGateway.
Cliquez sur Create Internet Gateway.
Donnez un nom à votre passerelle.
Cliquez sur Create.
Cliquez sur Close.
Et c’est fini. Oui, c’est terriblement simple. Vous constatez cependant que la passerelle est détachée comme ci-dessous.
Qu’est-ce que cela signifie ?
Une passerelle de sortie détachée est une passerelle de sortie qui n’est pas associée à un VPC. En d’autres termes, elle ne sert à rien car elle n’est attachée à aucun réseau virtuel. Il va donc falloir l’attacher à notre VPC créé tantôt ; pour cela :
Cliquez sur la passerelle que vous avez créée.
Cliquez sur Action et choisissez Attach to VPC.
Dans la liste déroulante, choisissez votre VPC.
Cliquez sur Attach.
Votre passerelle est maintenant attachée :
Créez une IP élastique
Qu’est-ce qu’une IP élastique ?
Dans AWS, une IP élastique est une adresse IPv4 publique, accessible depuis Internet. Une fois allouée, cette adresse IP peut être considérée comme statique : vous la conserverez jusqu’à ce que vous décidiez de la désenregistrer ; elle sera alors allouée à une autre personne faisant la requête d’une telle adresse.
Pourquoi créer une IP élastique ?
Dans AWS, si vous créez une passerelle NAT, vous avez l’obligation d’y associer une IP élastique. Dans le cas d’une instance NAT, ce n’est pas obligatoire, mais fortement recommandé. Gros avantage d’une IP élastique : avoir une IP stable pour d’éventuelles listes blanches dans vos proxy réseau. En effet, l’adresse IP visible en sortie pour le trafic des machines derrière la passerelle NAT sera celle de la passerelle.
Comment on fait ?
Les étapes sont les suivantes :
Cliquez sur Elastic IPs sur la gauche.
Cliquez sur Allocate new address.
Cliquez sur Allocate.
L’adresse IP s’affiche, cliquez sur Close.
Créez une passerelle NAT
Attends, ça veut dire quoi, NAT ?
NAT signifie “Network Address Translation” ou “Translation d’adresse réseau” en français. C’est un mécanisme qui permet de faire correspondre des adresses IP à d’autres adresses IP.
Et dans AWS ?
Dans AWS, la translation d’adresse n’est possible (pour le moment) qu’avec des adresses en IPv4. Vous avez deux manières de faire de la translation d’adresses réseau :
installer une instance NAT au sein d’un sous-réseau public. Une instance NAT est une machine capable de réceptionner le trafic de votre sous-réseau, et de le transférer correctement sur Internet ;
associer une passerelle NAT à un sous-réseau public. Une passerelle NAT est une instance NAT gérée par AWS et dimensionnée horizontalement.
Nous allons à présent créer une passerelle NAT dans AWS, afin de permettre aux futures machines de notre réseau privé de pouvoir communiquer vers l’extérieur à leur demande :
sur la gauche, cliquez sur NAT Gateway ;
cliquez sur Create NAT Gateway ;
choisissez un de vos sous-réseaux publics. Cette information (public/privé) n’est pas visible dans l’interface ; reportez-vous aux identifiants de sous-réseaux créés précédemment, afin d’identifier celui à associer, comme ci-dessous :
cliquez sur Close ; nous configurerons les tables de routage plus tard ;
patientez jusqu’à ce que la passerelle soit disponible (cela peut prendre quelques minutes).
C’est bon pour le NAT ?
Non, malheureux ! Prenons un moment pour nous poser et détailler ce que nous avons fait.
Nous avons un VPC avec 4 sous-réseaux :
un sous-réseau privé en zone de disponibilité A ;
un sous-réseau privé en zone de disponibilité B ;
un sous-réseau public en zone de disponibilité A ;
un sous-réseau public en zone de disponibilité B.
Nous avons également des composants attachés au VPC ou aux sous-réseaux :
une adresse IP élastique ;
une passerelle NAT associée à l’adresse IP et au sous-réseau de la zone de disponibilité A.
Et bah, il ne manque rien. Si ?
Si ! Votre passerelle NAT n’est pas redondée.
En effet, la passerelle NAT n’est pas un composant régional dans Amazon (contrairement à une passerelle Internet, par exemple). Vous pouvez la voir comme une instance NAT gérée par AWS, mais elle n’est pas conçue par défaut comme hautement disponible, car elle réside dans une seule zone de disponibilité.
Recommencez les étapes Création d’une adresse IP élastique et Création d’une passerelle NAT, en créant la passerelle dans le second sous-réseau public. Vous devriez avoir quelque chose qui ressemble à ceci :
Configurez le routage
Vous avez tout qui est disponible, mais il faut pouvoir les connecter entre eux. Il vous reste donc à configurer les tables de routage.
C’est quoi une table de routage ?
Dans un réseau, les éléments ne se propagent pas de manière magique à la bonne destination ; ils s’appuient sur les tables de routage pour trouver leur chemin à travers les différents composants du réseau. Davantage d’informations sont disponibles dans la section sur le routage du cours Concevez votre réseau TCP/IP.
Si vous êtes déjà familier avec des notions réseau hors AWS, le fonctionnement est identique. Par défaut, vous allez avoir une table de routage associée à votre VPC, qui est propagée à tous les sous-réseaux, comme indiqué par l’interface :
Nous allons donc créer les éléments suivants :
une table de routage pour le sous-réseau privé de la zone de disponibilité A, pointant sur la passerelle NAT du sous-réseau public de la zone de disponibilité A en sortie ;
une table de routage pour le sous-réseau privé de la zone de disponibilité B, pointant sur la passerelle NAT du sous-réseau public de la zone de disponibilité B en sortie ;
une table de routage pour le sous-réseau public de la zone de disponibilité A, pointant sur la passerelle Internet en sortie ;
une table de routage pour le sous-réseau public de la zone de disponibilité B, pointant sur la passerelle Internet en sortie.
Il est important de faire correspondre les passerelles avec les sous-réseaux privés de leur zone de disponibilité, c’est-à-dire :
le sous-réseau privé de la zone A doit avoir son trafic de sortie routé vers la passerelle de la zone A ;
le sous-réseau privé de la zone B doit avoir son trafic de sortie routé vers la passerelle de la zone B.
La raison est simple : si une zone de disponibilité est momentanément indisponible, les instance privées de la zone encore saine doivent pouvoir continuer à accéder à Internet avec une passerelle saine.
Comment on fait ?
Soyez attentif, car une erreur dans votre routage peut engendrer un réseau non fonctionnel. Les étapes sont les suivantes :
cliquez sur Route Tables sur la gauche ;
cliquez sur Create route table ;
choisissez un nom et sélectionnez votre VPC, puis cliquez sur Create ;
cliquez sur Close pour voir s’afficher votre table de routage ;
cliquez sur votre table de routage nouvellement créée dans la liste, puis cliquez sur l’onglet Subnet Association ;
cliquez sur Edit Subnet Association ;
Sélectionnez le sous-réseau privé A ;
Vous devriez avoir quelque chose qui ressemble à ceci :
À présent, cliquez sur l’onglet Routes.
Vous constatez que vous avez déjà une route qui pointe sur Local. Cela signifie que toutes les adresses dont la destination est dans la plage IP 10.0.0.0/16 seront routées dans le VPC. Nous allons à présent rajouter une route pour indiquer que les adresses externes doivent être dirigées vers notre passerelle :
cliquez sur Edit routes puis sur Add route ;
entrez la valeur 0.0.0.0/0 dans la colonne Destination, et entrez l’identifiant de la passerelle NAT de la zone A ;
cliquez sur Save routes. La table ressemble à présent à ceci :
L’adresse 0.0.0.0/0 est la plage IP “passe-partout”. Elle permet de désigner n’importe quelle IPv4.
Cela veut dire que tout va être dirigé vers l’instance NAT ?
Non, bien sûr ! Une table de routage est un ensemble de règles qui sont évaluées dans un ordre précis. Ici, la règle “routage à l’intérieur du VPC” est exécutée avant la règle “routage NAT” ; ainsi, la table de routage essaie d’abord de voir si l’IP correspond à une IP du VPC, avant de tenter de la diriger vers la passerelle NAT.
L’ordre d’évaluation des règles de la table de routage est détaillé dans la documentation AWS sur les tables de routage. De manière générale, vous pouvez retenir que la règle la plus précise est évaluée avant la règle la plus générique.
Par exemple, si j’ai une règle pour une IP seule (pointage en /32), une règle pour un sous-réseau (en /24), et une règle générale (en /0), l’ordre d’évaluation sera le suivant :
Est-ce que l’IP de destination est x.x.x.x/32 ?
Est-ce que l’IP de destination est dans x.x.x.0/24 ?
Est-ce que l’IP de destination est dans 0.0.0.0/0 ?
C’est fini ?
Eh non ! Vous n’avez créé et associé qu’une seule table de routage, pour le moment ! Recommencez les étapes pour créer :
une table de routage pour le sous-réseau privé B, contenant :
une règle 0.0.0.0/0 vers la passerelle NAT de la zone B ;
la règle par défaut 10.0.0.0/16 vers Local ;
une table de routage pour le sous-réseau public A, contenant :
une règle 0.0.0.0/0 vers la passerelle Internet ;
la règle par défaut 10.0.0.0/16 vers Local ;
une table de routage pour le sous-réseau public B, contenant :
une règle 0.0.0.0/0 vers la passerelle Internet ;
la règle par défaut 10.0.0.0/16 vers Local.
Une fois terminé, vous devriez avoir l’infrastructure suivante :
En résumé
les sous-réseaux communiquent à l’extérieur à l’aide de passerelles Internet ;
AWS fournit un composant géré par ses soins pouvant faire de la translation d’adresse (ou NAT), appelé passerelle NAT ;
les tables de routage permettent de configurer la façon dont les réseaux communiquent ;
vous pouvez attacher un ou plusieurs sous-réseaux à une table de routage ;
une passerelle Internet doit être attachée au VPC ;
pour créer une passerelle NAT, vous aurez besoin d’une adresse IP élastique ;
afin d’avoir un réseau hautement disponible, vous devez dupliquer votre infrastructure sur au moins deux zones de disponibilité.
Vous avez désormais construit un réseau dans AWS pour l’entreprise Cat’s eyes, via la console web. Vous l’avez constaté, c’est assez long et si quelqu’un à côté de vous ne vous a pas vu faire, il sera incapable de le refaire, ou bien de savoir à quoi ressemble votre réseau. En outre, il est compliqué de mesurer l’impact d’éventuelles modifications, car vous n’avez pas de vue globale de tout ce qui a été effectué. Il est temps de passer à l’automatisation, et refaire tout ce que vous venez de construire avec un outil fourni par AWS : CloudFormation.