Utiliser Public NAT avec Compute Engine
Cette page présente une démonstration d'une passerelle NAT publique qui fournit des services de traduction d'adresse réseau pour une instance de VM Compute Engine. Avant de commencer, consultez la présentation de NAT public.
Prérequis
Vous devez effectuer les opérations suivantes avant de configurer NAT public.
Obtenir des autorisations IAM
Le rôle roles/compute.networkAdmin vous permet de créer une passerelle NAT sur Cloud Router, de réserver et d'attribuer des adresses IP NAT et de spécifier les sous-réseaux dont le trafic doit utiliser la traduction d'adresse réseau par la passerelle NAT.
Configurer Google Cloud
Avant de commencer, configurez les éléments suivants dans Google Cloud.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Exemple
Vous trouverez ci-dessous un exemple de bout en bout qui illustre une passerelle NAT publique et une VM Compute Engine qui utilise la passerelle NAT publique.
Étape 1 : Créer un réseau VPC et un sous-réseau
Si vous disposez déjà d'un réseau et d'un sous-réseau, vous pouvez ignorer cette étape.
Console
Dans Google Cloud Console, accédez à la page Réseaux VPC.
Cliquez sur Créer un réseau VPC.
Saisissez le nom
custom-network1
.Sous Sous-réseaux, définissez le paramètre Mode de création du sous-réseau sur Personnalisé.
Sous Nouveau sous-réseau, saisissez
subnet-us-east-192
pour le paramètre Nom.Dans le champ Région, sélectionnez us-east4.
Définissez le paramètre Plage d'adresses IP sur
192.168.1.0/24
.Cliquez sur Done (OK), puis sur Create (Créer).
gcloud
Créez un réseau VPC en mode personnalisé dans votre projet :
gcloud compute networks create custom-network1 \ --subnet-mode custom
Spécifiez le préfixe de sous-réseau pour la première région. Dans cet exemple, nous attribuons
192.168.1.0/24
à la régionus-east4
.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Terraform
Vous pouvez utiliser un module Terraform pour créer un réseau et un sous-réseau VPC personnalisés.
Étape 2 : Créer une instance de VM sans adresse IP externe
Console
Dans Google Cloud Console, accédez à la page Instances de VM.
Cliquez sur Créer une instance.
Définissez le paramètre Nom sur
nat-test-1
pour votre instance.Définissez le paramètre Région sur us-east4.
Définissez le paramètre Zone sur us-east4-c.
Cliquez sur le lien Gestion, sécurité, disques, mise en réseau et location unique.
Cliquez sur l'onglet Réseau.
Sous Interfaces réseau, cliquez sur
Modifier pour l'interface par défaut de la VM.- Définissez le paramètre Réseau sur
custom-network1
. - Définissez le paramètre Sous-réseau sur
subnet-us-east-192
. - Définissez le paramètre Adresse IP externe sur Aucune.
- Cliquez sur OK.
- Définissez le paramètre Réseau sur
Pour créer et démarrer l'instance, cliquez sur Créer.
gcloud
gcloud compute instances create nat-test-1 \ --image-family debian-9 \ --image-project debian-cloud \ --network custom-network1 \ --subnet subnet-us-east-192 \ --zone us-east4-c \ --no-address
Terraform
Vous pouvez utiliser une ressource Terraform pour créer une instance de VM.
Étape 3 : Créer une règle de pare-feu qui autorise les connexions SSH
Console
Dans la console Google Cloud, accédez à la page Règles d'administration.
Cliquez sur Créer une règle de pare-feu.
Saisissez le nom
allow-ssh
.Définissez le paramètre Réseau sur
custom-network1
.Définissez le paramètre Sens du trafic sur Entrée.
Définissez Action en cas de correspondance sur Autoriser.
Définissez le paramètre Cibles sur Toutes les instances du réseau.
Définissez Filtre source sur Plages IPv4.
Définissez le paramètre Plages d'adresses IP sources sur
35.235.240.0/20
.Définissez Protocoles et ports sur Protocoles et ports spécifiés.
Cochez la case tcp et saisissez comme port
22
.Cliquez sur Create (Créer).
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Vous pouvez utiliser une ressource Terraform pour créer une règle de pare-feu.
Étape 4 : Créer des autorisations SSH IAP pour votre instance de test
Lors d'une prochaine étape, vous vous connecterez à votre instance de test à l'aide d'Identity-Aware Proxy (IAP).
Console
Dans Google Cloud Console, accédez à la page Identity-Aware Proxy.
Sélectionnez l'onglet Ressources SSH et TCP.
Pour mettre à jour les autorisations des membres sur les ressources, cochez la case à côté de Toutes les ressources de tunnels > us-east4-c > nat-test-1.
Dans le volet de droite, cliquez sur Ajouter un membre.
Pour accorder aux utilisateurs, aux groupes ou aux comptes de service l'accès aux ressources, spécifiez leur adresse e-mail dans le champ Nouveaux membres.
Si vous ne testez que cette fonctionnalité, vous pouvez saisir votre propre adresse e-mail.
Pour accorder aux membres l'accès aux ressources via la fonctionnalité de transfert TCP de Cloud IAP, dans la liste déroulante Rôle, sélectionnez Cloud IAP > Utilisateur de tunnels sécurisés par IAP.
Cliquez sur Enregistrer.
gcloud
Cette commande accorde l'accès SSH à toutes les instances de VM de votre projet à l'aide d'IAP. Si vous souhaitez accorder l'accès SSH à une VM individuelle à l'aide d'IAP, suivez les instructions de Google Cloud Console.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_INFO \ --role=roles/iap.tunnelResourceAccessor
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.MEMBER_INFO
: liste de pairestype:email
membres séparées par une virgule Exemples :- Pour un seul utilisateur :
user:test-user@example.com
- Pour un groupe :
group:admins@example.com
- Pour un compte de service :
serviceAccount:test123@example.domain.com
- Pour un seul utilisateur :
Terraform
Vous pouvez utiliser une ressource Terraform pour créer des autorisations SSH IAP pour votre instance de test.
Étape 5 : Se connecter à nat-test-1
et confirmer qu'il ne peut pas accéder à Internet
Console
Dans Google Cloud Console, accédez à la page Instances de VM.
Pour
nat-test-1
, dans la colonne Connecter, cliquez sur la flèche du menu déroulant SSH, puis sélectionnez Ouvrir dans la fenêtre du navigateur.Lorsque vous y êtes invité, saisissez
curl example.com
et appuyez sur Entrée.Vous ne devriez obtenir aucun résultat. Dans le cas contraire, vous avez peut-être créé
nat-test-1
avec une adresse IP externe, ou il existe un autre problème. Pour résoudre le problème, consultez la section Les machines virtuelles peuvent accéder à Internet de façon inattendue sans Cloud NAT.Pour arrêter la commande, vous devrez peut-être saisir
Ctrl+C
.
gcloud
Ajoutez une clé SSH Compute Engine à votre hôte local :
ssh-add ~/.ssh/google_compute_engine
Connectez-vous à
nat-test-1
et exécutez une commande :gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Vous ne devriez obtenir aucun résultat. Dans le cas contraire, vous avez peut-être créé
nat-test-1
avec une adresse IP externe, ou il existe un autre problème. Pour résoudre le problème, consultez la section Les machines virtuelles peuvent accéder à Internet de façon inattendue sans Cloud NAT.Pour arrêter la commande, vous devrez peut-être saisir
Ctrl+C
.
Étape 6 : Créer une configuration NAT à l'aide de Cloud Router
Vous devez créer le routeur Cloud Router dans la même région que les instances qui utilisent le NAT public. Cloud Router sert uniquement à placer les informations NAT sur les VM. Ce service ne fait pas partie de la passerelle NAT.
Cette configuration permet à toutes les instances de la région d'utiliser le NAT public pour toutes les plages d'adresses IP primaires et d'adresses IP d'alias. De plus, elle attribue automatiquement les adresses IP externes de la passerelle NAT. Pour plus d'options, consultez la documentation sur Google Cloud CLI.
Console
Dans Google Cloud Console, accédez à la page Cloud NAT.
Cliquez sur Commencer ou Créer une passerelle NAT.
Définissez le paramètre Nom de la passerelle sur
nat-config
.Définissez le paramètre Réseau VPC sur
custom-network1
.Définissez le paramètre Région sur us-east4.
Sous Cloud Router, sélectionnez Créer un routeur.
- Saisissez le nom
nat-router
. - Cliquez sur Créer.
- Saisissez le nom
Cliquez sur Créer.
gcloud
Créez un routeur Cloud Router :
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Ajoutez une configuration au routeur :
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
Vous pouvez utiliser une ressource Terraform pour créer un routeur Cloud Router.
Vous pouvez utiliser un module Terraform pour créer une configuration NAT.
Étape 7 : Essayer de se reconnecter à Internet
La propagation de la configuration NAT peut prendre jusqu'à trois minutes. Attendez au moins une minute avant d'essayer d'accéder de nouveau à Internet.
Console
Dans Google Cloud Console, accédez à la page Instances de VM.
Pour
nat-test-1
, dans la colonne Connecter, cliquez sur la flèche du menu déroulant SSH, puis sélectionnez Ouvrir dans la fenêtre du navigateur.Lorsque vous y êtes invité, saisissez
curl example.com
et appuyez sur Entrée.
gcloud
Connectez-vous à nat-test-1
et exécutez une commande :
gcloud compute ssh nat-test-1 \ --zone us-east4-c \ --command "curl example.com" \ --tunnel-through-iap
Le résultat devrait contenir ce qui suit :
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You can use this domain in examples without prior coordination or asking for permission.</p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
Étape suivante
- Configurez une passerelle Public NAT.
- Créez un exemple de configuration Google Kubernetes Engine (GKE).