Amazon Virtual Private Cloud
Guide de l'utilisateur

Instances NAT

Vous pouvez utiliser une instance de traduction d'adresses réseau (NAT) dans un sous-réseau public au sein de votre VPC pour permettre aux instances du sous-réseau privé d'initier un trafic IPv4 sortant vers Internet ou d'autres services AWS, mais empêcher les instances de recevoir du trafic entrant initié par une personne sur Internet.

Pour plus d'informations sur les sous-réseaux publics et privés, consultez Routage des sous-réseaux. Pour plus d'informations sur NAT, consultez NAT.

NAT n'est pas pris en charge pour le trafic IPv6— ; utilisez une passerelle Internet de sortie uniquement à la place. Pour plus d'informations, consultez Passerelles Internet de sortie uniquement.

Note

Vous pouvez également utiliser une passerelle NAT, qui est un service NAT géré qui offre une meilleure disponibilité et une bande passante plus large, et qui demande moins d'effort administratif. Pour les cas d'utilisation courants, nous vous recommandons d'utiliser une passerelle NAT plutôt qu'une instance NAT. Pour plus d'informations, consultez Passerelles NAT et Comparaison d'instances NAT et de passerelles NAT.

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


        Configuration d'une instance NAT

Amazon fournit des AMI Linux Amazon qui sont configurées pour s'exécuter en tant qu'instances NAT. Ces AMI comprennent la chaîne amzn-ami-vpc-nat dans leurs noms, afin que vous pussiez les chercher dans la console Amazon EC2.

Lorsque vous lancez une instance depuis une AMI NAT, la configuration suivante s'effectue sur l'instance :

  • Le transfert IPv4 est activé et les redirections ICMP (Internet Control Message Protocol) sont désactivées dans /etc/sysctl.d/10-nat-settings.conf

  • Un script situé à /usr/sbin/configure-pat.sh s'exécute au startup et configure les masques d'adresses IP iptables.

Note

Nous vous recommandons d'utiliser systématiquement la dernière version de l'AMI NAT afin de bénéficier des mises à jour de la configuration.

Si vous ajoutez et supprimez des blocs d'adresse CIDR IPv4 secondaires sur votre VPC, veillez à utiliser la version d'AMI amzn-ami-vpc-nat-hvm-2017.03.1.20170623-x86_64-ebs ou ultérieure.

La limite de votre instance NAT dépend de la limite de votre type d'instance pour la région. Pour plus d'informations, consultez la FAQ Amazon EC2. Pour une liste des AMI NAT disponibles, consultez AMI Amazon Linux.

Configuration de l'instance NAT

Vous pouvez utiliser l'assistant VPC pour configurer un VPC avec une instance NAT ; pour plus d'informations, consultez Scénario 2 : VPC avec des sous-réseaux publics et privés (NAT). L'assistant effectue un grand nombre des étapes de configuration pour vous, dont le lancement d'une instance NAT et la configuration du routage. Cependant, vous pouvez, selon vos préférences, créer et configurer un VPC et une instance NAT manuellement en suivant les étapes ci-dessous.

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

    Note

    Les étapes suivantes sont destinées à une création et à une configuration manuelles d'un VPC ; elles ne sont pas destinées à la création d'un VPC à l'aide de l'assistant VPC.

    1. Créez un VPC (consultez Création d'un VPC)

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

    3. Attachez une passerelle Internet au VPC (consultez Création et attachement d'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, ce qui en fait un sous-réseau public (consultez Création d'une table de routage personnalisée)

  2. Créez le groupe de sécurité NATSG (consultez Création du 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. Amazon fournit des AMI Linux Amazon qui sont configurées pour s'exécuter en tant qu'instances NAT. Ces AMI comprennent la chaîne amzn-ami-vpc-nat dans leurs noms, afin que vous pussiez les chercher dans la console Amazon EC2.

    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), sélectionnez la catégorie Community AMI et recherchez amzn-ami-vpc-nat. Dans la liste des résultats, chaque nom d'AMI inclut la version vous permettant de sélectionner l'AMI la plus récente, par exemple 2013.09. Choisissez Select.

      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 Attribution d'une adresse IPv4 publique lors du lancement d'une instance. Choisissez Next: Add Storage.

      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 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. (Facultatif) Connectez-vous à l'instance NAT, faites toutes les modifications nécessaires, puis créez votre propre AMI qui est configurée pour s'exécuter en tant qu'instance NAT. Vous pouvez utiliser cette AMI la prochaine fois que vous avez besoin de lancer une instance NAT. Pour plus d'informations, consultez la section Création d'AMI d'Amazon EBS dans le Amazon EC2 Guide de l'utilisateur pour les instances Linux.

  5. Désactivez l'attribut SrcDestCheck pour l'instance NAT (consultez Désactivation des source/destination checks)

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

    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.

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

Lancement d'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ès à Amazon VPC.

Pour obtenir l'ID d'une AMI qui est configurée pour s'exécuter en tant qu'instance NAT, utilisez une commande pour décrire les images et utilisez des filtres pour retourner uniquement les résultats des AMI qui appartiennent à Amazon, et qui ont la chaîne amzn-ami-vpc-nat dans leur nom. L'exemple suivant utilise l'AWS CLI :

aws ec2 describe-images --filter Name="owner-alias",Values="amazon" --filter Name="name",Values="amzn-ami-vpc-nat*"

Création du 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 du trafic vers Internet pour permettre aux instances du sous-réseau privé de recevoir des mises à jour logicielles.

NATSG : règles recommandées

Inbound
Source Protocol Port Range Comments

10.0.1.0/24

TCP

80

Autorisez le trafic HTTP entrant depuis les serveurs dans le sous-réseau privé

10.0.1.0/24

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 domestique

TCP

22

Autorisez l'accès SSH entrant vers l'instance NAT depuis votre réseau domestique (via la passerelle Internet)

Outbound

Destination Protocol Port Range Comments

0.0.0.0/0

TCP

80

Autoriser l'accès à Internet de l'HTTP sortant

0.0.0.0/0

TCP

443

Autoriser l'accès HTTPS sortant à 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 Security Groups, puis Create Security Group.

  3. Dans la boîte de dialogue Create Security Group, 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 Yes, Create.

  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.

    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 Save.

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

    1. Choisissez Edit.

    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 Save.

Pour plus d'informations, consultez Groupes de sécurité pour votre VPC.

Désactivation des source/destination checks

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 à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Instances.

  3. Sélectionnez l'instance NAT, choisissez Actions, Mise en réseau, Change Source/Dest (Modifier Source/Dest). Check.

  4. Pour l'instance NAT, vérifiez que cet attribut est désactivé. Dans le cas contraire, choisissez Yes, Disable.

  5. Si l'instance NAT dispose d'une interface réseau secondaire, choisissez-la dans Interfaces réseau dans l'onglet Description et choisissez l'ID d'interface pour accéder à la page des interfaces réseau. Choisissez Actions, Change Source/Dest (Modifier Source/Dest). Vérifiez, désactivez le paramètre et choisissez 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ès à Amazon VPC.

Mise à jour de 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 Route Tables.

  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 routes, ses associations et la propagation du routage.

  4. Dans l'onglet Routes, choisissez Edit, spécifiez 0.0.0.0/0 dans la boîte Destination, sélectionnez l'ID d'instance de l'instance NAT dans la liste Target, puis choisissez Save.

  5. Dans l'onglet Subnet Associations, choisissez Edit, puis activez la case à cocher Associate pour le sous-réseau. Choisissez Save.

Pour plus d'informations, consultez Tables de routage.

Test de la configuration de votre instance NAT

Après avoir lancé une instance NAT et suivi les étapes de configuration ci-dessus, vous pouvez réaliser un test pour vérifier si une instance dans votre sous-réseau privé peut accéder à Internet via l'instance NAT en utilisant l'instance NAT comme serveur bastion. Pour cela, mettez à jour les règles du groupe de sécurité de votre instance NAT 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 dans 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 volet de navigation, choisissez Groupes de sécurité.

  3. Trouvez le groupe de sécurité associé à votre instance NAT et choisissez Edit dans l'onglet Inbound.

  4. Choisissez Add Rule (Ajouter une règle), sélectionnez All ICMP - IPv4 (Tous les ICMP - IPv4) dans la liste Type, puis Custom (Personnalisé) dans la liste Source. Entrez la plage d'adresses IP de votre sous-réseau privé, par exemple 10.0.1.0/24. Choisissez Save.

  5. Dans l'onglet Outbound, choisissez Edit.

  6. Choisissez Add Rule (Ajouter une règle), sélectionnez SSH dans la liste Type, puis Custom (Personnalisé) dans la liste Destination. Entrez la plage d'adresses IP de votre sous-réseau privé, par exemple 10.0.1.0/24. Choisissez Save.

  7. Choisissez Add Rule (Ajouter une règle), sélectionnez All ICMP - IPv4 (Tous les ICMP - IPv4) dans la liste Type, puis Custom (Personnalisé) dans la liste Destination. Entrez 0.0.0.0/0, puis choisissez Save.

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

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

  2. Dans le volet de navigation, choisissez Instances.

  3. Lancez une instance dans votre sous-réseau privé. Pour plus d'informations, consultez Lancement d'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 PuTTY download page, s'il n'est pas déjà installé.

  2. Convertissez votre clé privée au format .ppk. Pour plus d'informations, consultez 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 Mise à jour de 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ésactivation des source/destination checks.

    • 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 plus d'informations, consultez Terminate Your Instance dans le manuel Amazon EC2 Guide de l'utilisateur pour les instances Linux.