Instances NAT - Amazon Virtual Private Cloud

Instances NAT

Important

L'AMI NAT repose sur la dernière version d'Amazon Linux, 2018.03, qui a atteint la fin de la prise en charge standard le 31 décembre 2020. Pour plus d'informations, consultez le billet de blog sur la fin de vie de l'Amazon Linux AMI. Cette AMI ne recevra que les mises à jour de sécurité critiques (il n'y aura pas de mises à jour régulières).

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. Si les instances NAT sont mieux adaptées à votre cas d'utilisation, vous pouvez créer votre propre AMI NAT. Pour de plus amples informations, veuillez consulter Comparer des passerelles NAT et des instances NAT..

Vous pouvez créer une AMI qui assure la traduction d'adresses réseau et vous servir de votre propre AMI pour lancer une instance EC2 en tant qu'instance NAT. Si le lancement d'une instance NAT dans un sous-réseau public permet d'activer les instances au sein du sous-réseau privé pour initier le trafic IPv4 sortant vers Internet ou d'autres services AWS, cela empêche en revanche les instances de recevoir le trafic entrant initié sur Internet.

Limites

Principes de base d'une instance NAT

Le graphique suivant illustre les principes de base d'une instance NAT. La table de routage principale est associée au sous-réseau privé et envoie le trafic 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 pour le VPC. Le trafic est attribué à l'adresse IP Elastic 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.

Le trafic Internet en provenance des instances du sous-réseau privé est acheminé vers l'instance NAT, qui communique ensuite avec Internet. Par conséquent, l'instance NAT doit avoir un accès Internet. Elle doit 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

Configurer l'instance NAT

Utilisez la procédure suivante pour configurer un VPC et une instance NAT.

Exigence

Avant de commencer, créez une AMI configurée pour exécuter NAT sur votre instance. Les commandes à utiliser pour configurer NAT varient en fonction du système d'exploitation que vous exécutez. Par exemple, pour Amazon Linux 2, utilisez les commandes suivantes :

sudo sysctl -w net.ipv4.ip_forward=1 sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo yum install iptables-services sudo service iptables save

Pour configurer une instance NAT

  1. Créez un VPC avec deux sous-réseaux.

    1. Créez un VPC (consultez Créer un VPC)

    2. Créez deux sous-réseaux (consultez Création d'un sous-réseau).

    3. Attachez une passerelle Internet au VPC (consultez Créer et attacher une passerelle Internet).

    4. Créez une table de routage personnalisée qui envoie du trafic destiné à l'extérieur du VPC vers la passerelle Internet et associez-la à un sous-réseau, pour en faire un sous-réseau public (consultez Créer une table de routage personnalisée).

  2. Créez le groupe de sécurité NATSG (consultez Créer le groupe de sécurité NATSG). Vous spécifiez ce groupe de sécurité au moment de lancer l'instance NAT.

  3. Lancez une instance dans votre sous-réseau public depuis une AMI qui a été configurée pour s'exécuter en tant qu'instance NAT.

    1. Ouvrez la console Amazon EC2.

    2. Sur le tableau de bord, choisissez le bouton Launch Instance et exécutez l'assistant comme suit :

      1. Sur la page Choose an Amazon Machine Image (AMI) (Choisir une Amazon Machine Image [AMI]), définissez le filtre sur Owned by me (M'appartenant), puis sélectionnez votre AMI.

      2. Sur la page Choose an Instance Type, sélectionnez le type d'instance, puis choisissez Next: Configure Instance Details.

      3. Sur la page Configure Instance Details, sélectionnez le VPC que vous avez créé dans la liste Network, puis votre sous-réseau public dans la liste Subnet.

      4. (Facultatif) Activez la case à cocher Public IP pour demander que votre instance NAT reçoive une adresse IP publique. Si vous choisissez de ne pas attribuer d'adresse IP publique maintenant, vous pouvez allouer une adresse IP Elastic et l'assigner à votre instance après son lancement. Pour plus d'informations sur l'attribution d'une adresse IP publique au lancement, consultez Attribuer une adresse IPv4 publique lors du lancement d'une instance. Choisissez Next: Add Storage (Suivant : Ajouter le stockage).

      5. Vous pouvez choisir d'ajouter du stockage à votre instance, et vous pouvez ajouter des balises sur la page suivante. Choisissez Next: Configure Security Group (Suivant : Configurer le groupe de sécurité) une fois que vous avez terminé.

      6. Sur la page Configure Security Group, sélectionnez l'option Select an existing security group, puis le groupe de sécurité NATSG que vous avez créé. Choisissez Review and Launch.

      7. Passez en revue les paramètres que vous avez choisis. Effectuez tous les changements nécessaires, puis sélectionnez Launch pour choisir une paire de clés et lancer votre instance.

  4. Désactivez l'attribut SrcDestCheck pour l'instance NAT (consultez Désactiver des contrôles de source/destination)

  5. Si vous n'avez pas attribué d'adresse IP publique à votre instance NAT pendant le lancement (étape 3), vous devez y associer une adresse IP Elastic.

    1. Ouvrez la console Amazon VPC à l’adresse https://console.aws.amazon.com/vpc/.

    2. Dans le volet de navigation, choisissez Elastic IPs, puis Allocate new address.

    3. Choisissez Allocate (Allouer).

    4. Sélectionnez l'adresse IP Elastic dans la liste et choisissez Actions, Associate address.

    5. Sélectionnez la ressource d'interface réseau, puis sélectionnez l'interface réseau pour l'instance NAT. Sélectionnez l'adresse à associer à l'adresse IP Elastic dans la liste Private IP, puis choisissez Associate.

  6. Mettez à jour la table de routage principale pour envoyer du trafic vers l'instance NAT. Pour plus d'informations, consultez Mettre à jour la table de routage principale.

Lancer une instance NAT à l'aide de la ligne de commande

Pour lancer une instance NAT dans votre sous-réseau, utilisez l'une des commandes suivantes. Pour plus d'informations, consultez Accéder à Amazon VPC. Vous pouvez utiliser l'ID AMI de l'AMI que vous avez configurée pour s'exécuter en tant qu'instance NAT. Pour en savoir plus sur la création d'une AMI sur Amazon Linux 2, reportez-vous à la section Création d'AMI d'Amazon EBS dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

Créer le groupe de sécurité NATSG

Définissez le groupe de sécurité NATSG comme décrit dans le tableau suivant pour permettre à votre instance NAT de recevoir du trafic lié à Internet depuis des instances dans un 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 Allow inbound HTTP traffic from servers in the private subnet
CIDR du sous-réseau privé TCP 443 Allow inbound HTTPS traffic from servers in the private subnet
Plage d'adresses IP publiques de votre réseau TCP 22 Allow inbound SSH access to the NAT instance from your network (over the internet gateway)
Sortant
Destination Protocole Plage de ports Commentaires
0.0.0.0/0 TCP 80 Allow outbound HTTP access to the internet
0.0.0.0/0 TCP 443 Allow outbound HTTPS access to the internet

Créer le groupe de sécurité NATSG

  1. Ouvrez la console Amazon VPC à l’adresse https://console.aws.amazon.com/vpc/.

  2. Dans le volet de navigation, choisissez Groupes de sécurité, puis Créer un groupe de sécurité.

  3. Dans la boîte de dialogue Créer un groupe de sécurité, spécifiez NATSG comme nom du groupe de sécurité et fournissez une description. Sélectionnez l'ID de votre VPC dans la liste VPC, puis choisissez Oui, Créer.

  4. Sélectionnez le groupe de sécurité NATSG que vous venez de créer. Le volet des détails affiche les détails du groupe de sécurité, ainsi que des onglets pour utiliser ses règles de trafic entrant et sortant.

  5. Ajoutez des règles pour le trafic entrant à l'aide de l'onglet Inbound Rules comme suit :

    1. Choisissez Edit (Modifier).

    2. Choisissez Add another rule, et sélectionnez HTTP dans la liste Type. Dans le champ Source, spécifiez la plage d'adresses IP de votre sous-réseau privé.

    3. Choisissez Add another rule, et sélectionnez HTTPS dans la liste Type. Dans le champ Source, spécifiez la plage d'adresses IP de votre sous-réseau privé.

    4. Choisissez Add another rule, et sélectionnez SSH dans la liste Type. Dans le champ Source, spécifiez la plage d'adresses IP publiques de votre réseau.

    5. Choisissez Enregistrer.

  6. Ajoutez des règles pour le trafic sortant à l'aide de l'onglet Outbound Rules comme suit :

    1. Choisissez Edit (Modifier).

    2. Choisissez Add another rule, et sélectionnez HTTP dans la liste Type. Dans le champ Destination, spécifiez 0.0.0.0/0

    3. Choisissez Add another rule, et sélectionnez HTTPS dans la liste Type. Dans le champ Destination, spécifiez 0.0.0.0/0

    4. Choisissez Enregistrer.

Pour plus d'informations, consultez Contrôler le trafic vers les ressources à l'aide de groupes de sécurité.

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.

Vous pouvez désactiver l'attribut SrcDestCheck pour une instance NAT qui est en cours d'exécution ou arrêtée à l'aide de la console ou de la ligne de commande.

Désactiver le source/destination checking à l'aide de la console

  1. Ouvrez la console Amazon EC2 sur https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Instances.

  3. Sélectionnez l'instance NAT, sélectionnez Actions, Networking (Mise en réseau), Change source/destination check (Modifier la vérification de source/destination).

  4. Vérifiez que la vérification de source/destination est arrêtée. Sinon, sélectionnez Stop (Arrêter).

  5. Choisissez Enregistrer.

  6. 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).

Désactiver le source/destination checking à l'aide de la ligne de commande

Vous pouvez utiliser l'une des commandes suivantes. Pour plus d'informations, consultez Accéder à Amazon VPC.

Mettre à jour la table de routage principale

Le sous-réseau privé dans votre VPC n'est pas associé à une table de routage personnalisée. Il utilisera donc la table de routage principale. Par défaut, la table de routage principale permet aux instances dans votre VPC de communiquer entre elles. Vous devez ajouter une route pour envoyer tout le reste du trafic du sous-réseau vers l'instance NAT.

Mettre à jour la table de routage principale

  1. Ouvrez la console Amazon VPC à l’adresse https://console.aws.amazon.com/vpc/.

  2. Dans le volet de navigation, choisissez Tables de routage.

  3. Sélectionnez la table de routage principale pour votre VPC (la colonne Principale affiche Oui). Le volet des détails affiche des onglets pour utiliser ses acheminements, ses associations et la propagation du routage.

  4. Dans l’onglet Routes, procédez comme suit :

    1. Choisissez Edit routes (Modifier des routes), puis Add route (Ajouter une route).

    2. Spécifiez 0.0.0.0/0 pour Destination et l'ID d'instance de l'instance NAT pour Target (Cible).

    3. Choisissez Enregistrer les modifications.

  5. Sur l'onglet Associations de sous-réseau, choisissez Modifier les associations de sous-réseau. Cochez la case correspondant au sous-réseau privé, puis choisissez Save associations (Enregistrer les associations).

Pour de plus amples informations, veuillez consulter Gestion des tables de routage de votre VPC.

Tester la configuration de votre instance NAT

Après avoir lancé une instance NAT et effectué les étapes de configuration ci-dessus, vous pouvez effectuer un test pour vérifier 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. Pour cela, mettez à jour les règles du groupe de sécurité NATSG pour autoriser le trafic ICMP entrant et sortant et autoriser le trafic SSH sortant, lancez une instance dans votre sous-réseau privé, configurez le transfert de l'agent SSH pour accéder aux instances de votre sous-réseau privé, connectez-vous à votre instance, puis testez la connexion Internet.

Mettre à jour le groupe de sécurité de votre instance NAT

  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

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

  3. Cochez la case correspondant au groupe de sécurité NATSG associé à votre instance NAT.

  4. Sur l'onglet Règles entrantes, choisissez Modifier les règles entrantes.

  5. Choisissez Add rule. Sélectionnez All ICMP - IPv4 (Tous les ICMP - IPV4) pour Type. Sélectionnez Custom (Personnalisé) pour Source et saisissez la plage d'adresses IP de votre sous-réseau privé (par exemple, 10.0.1.0/24). Sélectionnez Enregistrer les règles.

  6. Sélectionnez Edit 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 Custom (Personnalisé) pour Destination et saisissez la plage d'adresses IP de votre sous-réseau privé (par exemple, 10.0.1.0/24).

  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.

Lancer une instance dans votre sous-réseau privé

  1. Ouvrez la console Amazon EC2 sur https://console.aws.amazon.com/ec2/.

  2. Dans le panneau de navigation, choisissez Instances.

  3. Lancez une instance dans votre sous-réseau privé. Pour plus d'informations, consultez Lancer une instance dans votre sous-réseau.. Assurez-vous d'avoir configuré les options suivantes dans l'assistant de lancement, puis choisissez Launch :

    • Sur la page Choose an Amazon Machine Image (AMI), sélectionnez une Amazon Linux AMI dans la catégorie Quick Start.

    • Sur la page Configure Instance Details, sélectionnez votre sous-réseau privé dans la liste Subnet et n'assignez pas d'adresse IP publique à votre instance.

    • Sur la page Configure Security Group, assurez-vous que votre groupe de sécurité comprenne une règle entrante qui autorise l'accès SSH depuis l'adresse IP privée de votre instance NAT ou depuis la plage d'adresses IP de votre sous-réseau public, et assurez-vous d'avoir une règle sortante qui autorise le trafic ICMP sortant.

    • Dans la boîte de dialogue Select an existing key pair or create a new key pair, sélectionnez la même paire de clés utilisée pour lancer l'instance NAT.

Configurer le transfert de l'agent SSH pour Linux ou OS X

  1. Depuis votre machine locale, ajoutez votre clé privée à l'agent d'authentification.

    Pour Linux, utilisez la commande suivante :

    ssh-add -c mykeypair.pem

    Pour OS X, utilisez la commande suivante :

    ssh-add -K mykeypair.pem
  2. Connectez-vous à votre instance NAT à l'aide de l'option -A pour activer le transfert de l'agent SSH, par exemple :

    ssh -A ec2-user@54.0.0.123

Configurer le transfert de l'agent SSH pour Windows (PuTTY)

  1. Téléchargez et installez Pageant depuis la page de téléchargement PuTTY, s'il n'est pas déjà installé.

  2. Convertissez votre clé privée au format .ppk. Pour de plus amples informations, veuillez consulter Conversion de votre clé privée à l'aide de PuTTYgen.

  3. 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 Add Key. Sélectionnez le fichier .ppk que vous avez créé, entrez le mot de passe si nécessaire et choisissez Open.

  4. Démarrez une session PuTTY pour vous connecter à votre instance NAT. Dans la catégorie Auth, assurez-vous d'avoir sélectionné l'option Allow agent forwarding, puis laissez le champ Private key file for authentication vide.

Pour tester la connexion Internet

  1. Vérifiez que votre instance NAT puisse communiquer avec Internet en exécutant la commande ping pour un site Web dont l'ICMP est activé ; par exemple :

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=48 time=74.9 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=48 time=75.1 ms ...

    Appuyez sur Ctrl+C sur votre clavier pour annuler la commande ping.

  2. Depuis votre instance NAT, connectez-vous à votre instance dans votre sous-réseau privé en utilisant son adresse IP privée, par exemple :

    ssh ec2-user@10.0.1.123
  3. Depuis votre instance privée, vérifiez que vous pouvez vous connecter à Internet en exécutant la commande ping :

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...

    Appuyez sur Ctrl+C sur votre clavier pour annuler la commande ping.

    Si la commande ping échoue, vérifiez les informations suivantes :

    • Vérifiez que les règles du groupe de sécurité de votre instance NAT autorisent le trafic ICMP entrant depuis 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 correctement configuré vos tables de routage. Pour plus d'informations, consultez Mettre à jour la table de routage principale.

    • Assurez-vous d'avoir désactivé le source/destination checking pour votre instance NAT. Pour plus d'informations, consultez Désactiver des contrôles de source/destination.

    • Assurez-vous d'avoir effectué un test ping du site Web dont l'ICMP est activé. Si ce n'est pas le cas, vous ne recevez pas de paquets de réponse. Pour le tester, exécutez la même commande ping depuis le terminal de la ligne de commande sur votre propre ordinateur.

  4. (Facultatif) Mettez fin à votre instance privée si vous n'en n'avez plus besoin. Pour de plus amples informations, veuillez consulter Terminer votre instance dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.