Instances NAT - Amazon Virtual Private Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Instances NAT

Une instance NAT fournit la traduction d'adresses réseau (NAT). Vous pouvez utiliser une instance NAT pour permettre aux ressources d'un sous-réseau privé de communiquer avec des destinations situées en dehors du cloud privé virtuel (VPC), telles qu'Internet ou un réseau sur site. Les ressources du sous-réseau privé peuvent initier le trafic IPv4 sortant vers Internet, mais elles ne peuvent pas recevoir de trafic entrant initié sur Internet.

Important

L'AMI NAT est basée sur la dernière version de l'AMI Amazon Linux, 2018.03, qui a atteint la fin du support standard le 31 décembre 2020 et la fin du support de maintenance le 31 décembre 2023. Pour plus d'informations, consultez le billet de blog sur la fin de vie de l'Amazon Linux AMI.

Si vous utilisez une AMI NAT existante,AWS vous recommande de migrer vers une passerelle NAT. Les passerelles NAT offrent une meilleure disponibilité, une bande passante plus importante et elles demandent un moindre effort administratif. Pour plus d’informations, consultez Comparer des passerelles NAT et des instances NAT..

Si les instances NAT correspondent mieux à votre cas d'utilisation que les passerelles NAT, vous pouvez créer votre propre AMI NAT à partir d'une version actuelle d'Amazon Linux, comme décrit dansCréer une AMI NAT.

Principes de base d'une instance NAT

Le graphique suivant illustre les principes de base d'une instance NAT. La table de routage associée au sous-réseau privé envoie le trafic Internet depuis les instances du sous-réseau privé vers l'instance NAT dans le sous-réseau public. L'instance NAT envoie ensuite le trafic à la passerelle Internet. Le trafic est attribué à l'adresse IP publique de l'instance NAT. L'instance NAT spécifie un numéro de port élevé pour la réponse ; si une réponse revient, l'instance NAT l'envoie à une instance dans le sous-réseau privé en fonction du numéro de port de la réponse.

L'instance NAT doit avoir un accès à Internet, elle doit donc se trouver dans un sous-réseau public (un sous-réseau qui a une table de routage avec une route vers la passerelle Internet) et disposer d'une adresse IP publique ou d'une adresse IP Elastic.


        Configuration d'une instance NAT

Pour commencer à utiliser les instances NAT, créez une AMI NAT, créez un groupe de sécurité pour l'instance NAT et lancez l'instance NAT dans votre VPC.

Le quota de votre instance NAT dépend du quota des instances pour la Région. Pour plus d'informations, consultez Quotas du service Amazon EC2 dans le Références générales AWS.

Créer un VPC pour l'instance NAT

Utilisez la procédure suivante pour créer un VPC avec un sous-réseau public et un sous-réseau privé.

Pour créer le VPC
  1. Ouvrez la console Amazon VPC à l’adresse https://console.aws.amazon.com/vpc/.

  2. Sélectionnez Create VPC (Créer un VPC).

  3. Sous Resources to create (Ressources à créer), choisissez VPC and more (VPC et autres).

  4. Pour Name tag auto-generation (Génération automatique de balises de nom), saisissez un nom pour le VPC.

  5. Pour configurer les sous-réseaux, procédez comme suit :

    1. Pour Number of Availability Zones (Nombre de zones de disponibilité), choisissez 1 ou 2, selon vos besoins.

    2. Pour Number of public subnets (Nombre de sous-réseaux publics), assurez-vous de disposer d'un sous-réseau public par zone de disponibilité.

    3. Pour Number of private subnets (Nombre de sous-réseaux privés), assurez-vous de disposer d'un sous-réseau privé par zone de disponibilité.

  6. Sélectionnez Create VPC (Créer un VPC).

Créer un groupe de sécurité pour l'instance NAT

Créez un groupe de sécurité avec les règles décrites dans le tableau suivant. Ces règles permettent à votre instance NAT de recevoir du trafic lié à Internet depuis des instances dans le sous-réseau privé, ainsi que du trafic SSH depuis votre réseau. L'instance NAT peut également envoyer le trafic vers Internet pour permettre aux instances du sous-réseau privé de recevoir des mises à jour logicielles.

Les règles recommandées sont décrites ci-dessous.

Entrant
Source Protocole Plage de ports Commentaires
CIDR du sous-réseau privé TCP 80 Autorisez le trafic HTTP entrant depuis les serveurs dans le sous-réseau privé
CIDR du sous-réseau privé TCP 443 Autorisez le trafic HTTPS entrant depuis les serveurs dans le sous-réseau privé
Plage d'adresses IP publiques de votre réseau TCP 22 Autoriser l'accès SSH entrant vers l'instance NAT depuis votre réseau (via la passerelle Internet)
Sortant
Destination Protocole Plage de ports Commentaires
0.0.0.0/0 TCP 80 Autoriser l'accès à Internet du HTTP sortant
0.0.0.0/0 TCP 443 Autoriser l'accès HTTPS sortant à Internet
Pour créer le groupe de sécurité
  1. Ouvrez la console Amazon VPC à l'adresse https://console.aws.amazon.com/vpc/.

  2. Dans le panneau de navigation, choisissez Groupes de sécurité.

  3. Sélectionnez Create security group (Créer un groupe de sécurité).

  4. Saisissez un nom et une description pour le groupe de sécurité.

  5. Pour VPC, sélectionnez l'ID du VPC pour votre instance NAT.

  6. Ajoutez des règles pour le trafic entrant sous Règles entrantes comme suit :

    1. Choisissez Ajouter une règle. Sélectionnez HTTP pour Type et saisissez la plage d'adresses IP de votre sous-réseau privé pour Source.

    2. Choisissez Ajouter une règle. Sélectionnez HTTPS pour Type et saisissez la plage d'adresses IP de votre sous-réseau privé pour Source.

    3. Choisissez Ajouter une règle. Sélectionnez SSH pour Type et saisissez la plage d'adresses IP de votre réseau pour Source.

  7. Ajoutez des règles pour le trafic sortant sous Règles sortantes comme suit :

    1. Choisissez Ajouter une règle. Choisissez HTTP pour le Type et entrez 0.0.0.0/0 pour Destination.

    2. Choisissez Ajouter une règle. Choisissez HTTPS pour le Type et entrez 0.0.0.0/0 pour Destination.

  8. Sélectionnez Créer un groupe de sécurité.

Pour plus d’informations, consultez Groupes de sécurité.

Créer une AMI NAT

Une AMI NAT est configurée pour exécuter NAT sur une instance EC2. Vous devez créer une AMI NAT, puis lancer votre instance NAT à l'aide de votre AMI NAT.

Si vous prévoyez d'utiliser un système d'exploitation autre qu'Amazon Linux pour votre AMI NAT, reportez-vous à la documentation de ce système d'exploitation pour savoir comment configurer la NAT. Veillez à enregistrer ces paramètres afin qu'ils soient conservés même après le redémarrage d'une instance.

Pour créer une AMI NAT pour Amazon Linux
  1. Lancez une instance EC2 exécutant AL2023 ou Amazon Linux 2. Assurez-vous de spécifier le groupe de sécurité que vous avez créé pour l'instance NAT.

  2. Connectez-vous à votre instance et exécutez les commandes suivantes sur l'instance pour activer les iptables.

    sudo yum install iptables-services -y sudo systemctl enable iptables sudo systemctl start iptables
  3. Procédez comme suit sur l'instance pour activer le transfert d'IP de manière à ce qu'il perdure après le redémarrage :

    1. À l'aide d'un éditeur de texte, tel que nano ou vim, créez le fichier de configuration suivant : /etc/sysctl.d/custom-ip-forwarding.conf.

    2. Ajoutez la ligne suivante au fichier de configuration.

      net.ipv4.ip_forward=1
    3. Enregistrez le fichier de configuration et quittez l'éditeur de texte.

    4. Exécutez la commande suivante pour appliquer le fichier de configuration.

      sudo sysctl -p /etc/sysctl.d/custom-ip-forwarding.conf
  4. Exécutez la commande suivante sur l'instance et notez le nom de l'interface réseau principale. Vous aurez besoin de ces informations pour l'étape suivante.

    netstat -i

    Dans la sortie de l'exemple suivant, docker0 est une interface réseau créée par docker, eth0 est l'interface réseau principale et lo est l'interface de bouclage.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg docker0 1500 0 0 0 0 0 0 0 0 BMU eth0 9001 7276052 0 0 0 5364991 0 0 0 BMRU lo 65536 538857 0 0 0 538857 0 0 0 LRU

    Dans la sortie de l'exemple suivant, l'interface réseau principale est enX0.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enX0 9001 1076 0 0 0 1247 0 0 0 BMRU lo 65536 24 0 0 0 24 0 0 0 LRU

    Dans la sortie de l'exemple suivant, l'interface réseau principale est ens5.

    Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens5 9001 14036 0 0 0 2116 0 0 0 BMRU lo 65536 12 0 0 0 12 0 0 0 LRU
  5. Exécutez les commandes suivantes sur l'instance pour configurer le NAT. Si l'interface réseau principale n'est pas eth0, remplacez eth0 par l'interface réseau principale que vous avez notée à l'étape précédente.

    sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo /sbin/iptables -F FORWARD sudo service iptables save
  6. Créez une AMI NAT à partir de l'instance EC2. Pour plus d'informations, consultez Créer une AMI Linux à partir d'une instance dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

Lancer une instance NAT

Utilisez la procédure suivante pour lancer une instance NAT à l'aide du VPC, du groupe de sécurité et de l'AMI NAT que vous avez créés.

Pour lancer une instance NAT
  1. Ouvrez la console Amazon EC2 à l'adresse https://console.aws.amazon.com/ec2/.

  2. Sur le tableau de bord, choisissez Lancer une instance.

  3. Pour Nom, saisissez un nom pour votre instance NAT.

  4. Pour Images d'application et de système d'exploitation, sélectionnez votre AMI NAT (choisissez Parcourir plus d'AMI, Mes AMI).

  5. Dans Type d'instance, choisissez un type d'instance fournissant les ressources de calcul, de mémoire et de stockage dont votre instance NAT a besoin.

  6. Pour Paire de clés, sélectionnez une paire de clés existante ou choisissez Créer une paire de clés.

  7. Sous Network settings (Paramètres réseau), effectuez les opérations suivantes :

    1. Choisissez Modifier.

    2. Pour VPC, choisissez le VPC que vous avez créé.

    3. Pour Sous-réseau, choisissez le sous-réseau public que vous avez créé.

    4. Pour Auto-assign Public IP (Attribuer automatiquement l'adresse IP publique), choisissez Enable (Activer). Vous pouvez également, après avoir lancé l'instance NAT, allouer une adresse IP Elastic et l'attribuer à l'instance NAT.

    5. Pour Pre-feu, choisissez Sélectionner un groupe de sécurité existant, puis choisissez le groupe de sécurité que vous avez créé.

  8. Choisissez Launch instance (Lancer une instance). Sélectionnez l'ID de l'instance pour ouvrir la page des détails de l'instance. Attendez que l'état de l'instance passe à En cours d'exécution et que les vérifications de l'état réussissent.

  9. Désactiver les vérifications de la source/destination pour l'instance NAT (voir Désactiver des contrôles de source/destination).

  10. Mettez à jour la table de routage pour envoyer du trafic vers l'instance NAT (voir Mise à jour de la table de routage).

Désactiver des contrôles de source/destination

Chaque instance EC2 effectue des source/destination checks par défaut. Cela signifie que l'instance doit être la source ou la destination de tout trafic qu'elle envoie ou qu'elle reçoit. Cependant, une instance NAT doit pouvoir envoyer et recevoir du trafic quand elle n'est pas la source ni la destination. Par conséquent, vous devez désactiver les source/destination checks sur l'instance NAT.

Pour désactiver la vérification de la source/destination
  1. Ouvrez la console Amazon EC2 sur https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, sélectionnez Instances.

  3. Sélectionnez l'instance NAT.

  4. Sélectionnez Actions, Mise en réseau, Modifier la vérification de la source/destination.

  5. Pour Vérifier la source/destination, sélectionnez Arrêter.

  6. Choisissez Enregistrer.

  7. Si l'instance NAT possède une interface réseau secondaire, sélectionnez-la depuis Interfaces réseau sous l'onglet Networking (Mise en réseau). Sélectionnez l'ID d'interface pour accéder à la page Network interfaces (Interfaces réseau). Sélectionnez Actions, Change source/dest. check (Changer la vérification de source/destionation), désélectionnez Enable (Activer), puis sélectionnez Save (Enregistrer).

Mise à jour de la table de routage

La table de routage du sous-réseau privé doit contenir une route qui envoie le trafic Internet vers l'instance NAT.

Pour mettre à jour la table de routage
  1. Ouvrez la console Amazon VPC à l'adresse https://console.aws.amazon.com/vpc/.

  2. Dans le volet de navigation, choisissez Route tables (Tables de routage).

  3. Sélectionnez la table de routage pour le sous-réseau privé.

  4. Sous l'onglet Routes, choisissez Modifier les routes, puis Ajouter une route.

  5. Saisissez 0.0.0.0/0 pour Destination et l'ID d'instance de l'instance NAT pour Cible.

  6. Sélectionnez Enregistrer les modifications.

Pour plus d’informations, consultez Configuration des tables de routage.

Tester votre instance NAT

Après avoir lancé une instance NAT et effectué les étapes de configuration ci-dessus, vous pouvez tester si une instance de votre sous-réseau privé peut accéder à Internet par l'intermédiaire de l'instance NAT en utilisant l'instance NAT comme serveur bastion.

Étape 1 : mettez à jour le groupe de sécurité de l'instance NAT

Pour autoriser les instances de votre sous-réseau privé à envoyer du trafic ping à l'instance NAT, ajoutez une règle autorisant le trafic ICMP entrant et sortant. Pour permettre à l'instance NAT de servir de serveur bastion, ajoutez une règle autorisant le trafic SSH sortant vers le sous-réseau privé.

Pour mettre à jour le groupe de sécurité de votre instance NAT
  1. Ouvrez la console Amazon VPC à l'adresse https://console.aws.amazon.com/vpc/.

  2. Dans le panneau de navigation, choisissez Groupes de sécurité.

  3. Cochez la case du groupe de sécurité associé à votre instance NAT.

  4. Sous l’onglet Inbound Rules (Règles entrantes), sélectionnez Edit inbound rules (Modifier les règles entrantes).

  5. Choisissez Add rule. Sélectionnez Tout ICMP - IPv4 pour Type. Choisissez Personnalisé pour Source et saisissez la plage d'adresses IP de votre sous-réseau privé. Sélectionnez Enregistrer les règles.

  6. Sélectionnez Outbound rules (Modifier les règles sortantes) sous l'onglet Outbound rules (Règles sortantes).

  7. Choisissez Add rule. Sélectionnez SSH pour Type. Sélectionnez Personnalisé pour Destination et saisissez la plage d'adresses IP de votre sous-réseau privé.

  8. Choisissez Add rule. Sélectionnez Tout ICMP - IPv4 pour Type. Choisissez Anywhere - IPv4 (N'importe où - IPv4) pour Destination. Sélectionnez Enregistrer les règles.

Étape 2 : lancez une instance de test dans le sous-réseau privé

Lancez une instance dans votre sous-réseau privé. Vous devez autoriser l'accès SSH depuis l'instance NAT et utiliser la même paire de clés que celle que vous avez utilisée pour l'instance NAT.

Pour lancer une instance de test dans le sous-réseau privé
  1. Ouvrez la console Amazon EC2 à l'adresse https://console.aws.amazon.com/ec2/.

  2. Sur le tableau de bord, choisissez Lancer une instance.

  3. Sélectionnez votre sous-réseau privé.

  4. N'assignez pas d'adresse IP publique à cette instance.

  5. Assurez-vous que le groupe de sécurité de cette instance autorise l'accès SSH entrant depuis votre instance NAT ou depuis la plage d'adresses IP de votre sous-réseau public, ainsi que le trafic ICMP sortant.

  6. Sélectionnez la même paire de clés que celle que vous avez utilisée pour l'instance NAT.

Étape 3 : envoi d'un ping à un site Web compatible ICMP

Pour vérifier que l'instance de test de votre sous-réseau privé peut utiliser votre instance NAT pour communiquer avec Internet, exécutez la commande ping.

Pour tester la connexion Internet à partir de votre instance privée
  1. À partir de votre ordinateur local, configurez le transfert de l'agent SSH afin de pouvoir utiliser l'instance NAT comme serveur bastion.

    Linux and macOS
    ssh-add key.pem
    Windows

    Téléchargez et installez Pageant, s'il n'est pas déjà installé.

    Convertissez votre clé privée au format .ppk avec PuTTYgen.

    Démarrez Pageant, cliquez avec le bouton droit sur l'icône Pageant de la barre des tâches (il peut être masqué) et choisissez Ajouter une clé. Sélectionnez le fichier .ppk que vous avez créé, saisissez le mot de passe si nécessaire et choisissez Ouvrir.

  2. À partir de votre ordinateur local, connectez-vous à votre instance NAT.

    Linux and macOS
    ssh -A ec2-user@nat-instance-public-ip-address
    Windows

    Connectez-vous à votre instance NAT à l'aide de PuTTY. Pour Authentification, vous devez sélectionner Autoriser le transfert des agents et laisser Fichier de clé privée pour l'authentification vide.

  3. À partir de l'instance NAT, exécutez la commande ping et spécifiez un site Web compatible avec ICMP.

    [ec2-user@ip-10-0-4-184]$ ping ietf.org

    Pour vérifier que votre instance NAT dispose d'un accès à Internet, vérifiez que vous avez reçu une sortie telle que la suivante, puis appuyez sur Ctrl+C pour annuler la commande ping. Dans le cas contraire, vérifiez que l'instance NAT se trouve dans un sous-réseau public (sa table de routage contient une route vers une passerelle Internet).

    PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=7.88 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.09 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=7.97 ms ...
  4. Depuis votre instance NAT, connectez-vous à votre instance dans votre sous-réseau privé en utilisant son adresse IP privée.

    [ec2-user@ip-10-0-4-184]$ ssh ec2-user@private-server-private-ip-address
  5. Depuis votre instance privée, vérifiez que vous pouvez vous connecter à Internet en exécutant la commande ping.

    [ec2-user@ip-10-0-135-25]$ ping ietf.org

    Pour vérifier que votre instance privée dispose d'un accès à Internet via l'instance NAT, vérifiez que vous avez reçu une sortie telle que la suivante, puis appuyez sur Ctrl+C pour annuler la commande ping.

    PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=8.76 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.26 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=8.27 ms ...
Résolution des problèmes

Si la commande ping échoue à partir du serveur du sous-réseau privé, procédez comme suit pour résoudre le problème :

  • Vérifiez que vous avez effectué un test ping du site Web dont l'ICMP est activé. Dans le cas contraire, votre serveur ne pourra pas recevoir de paquets de réponse. Pour le tester, exécutez la même commande ping depuis un terminal de ligne de commande sur votre propre ordinateur.

  • Vérifiez que le groupe de sécurité de votre instance NAT autorise le trafic ICMP entrant provenant de votre sous-réseau privé. Si ce n'est pas le cas, votre instance NAT ne peut pas recevoir la commande ping depuis votre instance privée.

  • Vérifiez que vous avez désactivé la vérification source/destination pour votre instance NAT. Pour plus d’informations, consultez Désactiver des contrôles de source/destination.

  • Vérifiez que vous avez correctement configuré vos tables de routage. Pour plus d’informations, consultez Mise à jour de la table de routage.

Étape 4 : Nettoyer

Si vous n'avez plus besoin du serveur de test dans le sous-réseau privé, résiliez l'instance afin qu'elle ne vous soit plus facturée. Pour plus d'informations, consultez Résilier votre instance dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

Si vous n'avez plus besoin de l'instance NAT, vous pouvez l'arrêter ou la résilier afin qu'elle ne vous soit plus facturée. Si vous avez créé une AMI NAT, vous pouvez créer une nouvelle instance NAT chaque fois que vous en avez besoin.