Configurer des VM pour des cas d'utilisation de mise en réseau

Cette page décrit plusieurs configurations réseau spéciales pour les instances de machine virtuelle (VM) Compute Engine. Par exemple :

  • Configurer une connexion HTTP externe à une VM
  • Configurer une VM en tant que proxy réseau

Configurer une connexion HTTP externe à une VM

Les règles de pare-feu par défaut n'autorisent pas les connexions HTTP ou HTTPS à vos instances. Cependant, il est assez simple d'ajouter une règle autorisant ces connexions. Notez qu'une VM doit disposer d'une adresse IP externe (statique ou éphémère) pour recevoir du trafic provenant de l'extérieur de son réseau cloud privé virtuel (VPC).

Vous pouvez ajouter une règle de pare-feu pour autoriser les connexions HTTP ou HTTPS à l'aide de l'outil de ligne de commande gcloud ou de Google Cloud Console. Vous pouvez également ajouter une règle de pare-feu via l'API.

Console

Vous pouvez utiliser Cloud Console pour créer une règle de pare-feu globale couvrant toutes les instances du réseau VPC, ou autoriser individuellement des instances à accéder aux connexions HTTP et HTTPS en sélectionnant l'option correspondante lors de la création de ces instances. Cette dernière option est décrite en premier, car elle permet de mieux contrôler individuellement les instances.

  1. Dans Cloud Console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Dans la section Pare-feu, sélectionnez Autoriser le trafic HTTP et Autoriser le trafic HTTPS.
  4. Cliquez sur Créer pour créer l'instance.

Lorsque ces cases sont cochées, le réseau VPC crée automatiquement une règle default-http ou default-https qui s'applique à toutes les instances avec les tags http-server ou https-server. La nouvelle instance est également étiquetée avec la balise correspondant aux cases à cocher que vous avez sélectionnées.

Si vous disposez déjà de règles de pare-feu default-http et default-https, vous pouvez les appliquer aux instances existantes en activant l'option Autoriser le trafic HTTP ou Autoriser le trafic HTTPS sur la page des détails de chacune des instances.

  1. Accédez à la page Instances de VM.
  2. Cliquez sur le nom de l'instance souhaitée.
  3. Cliquez sur le bouton Modifier en haut de la page.
  4. Faites défiler l'affichage jusqu'à la section Pare-feu.
  5. Cochez la case Autoriser le trafic HTTP et/ou la case Autoriser le trafic HTTPS sous le réseau VPC souhaité.
  6. Cliquez sur Enregistrer.

Vous pouvez de même désactiver l'accès HTTP ou HTTPS externe pour une VM en décochant l'une des cases ou les deux.

En vous permettant de taguer certaines instances pour le trafic HTTP et HTTPS plutôt que de créer une règle de pare-feu commune à toutes les instances, Google Cloud limite les problèmes de sécurité potentiels liés au fait d'autoriser le trafic externe vers toutes les machines virtuelles d'un projet. Toutefois, si vous souhaitez créer une règle de pare-feu autorisant le trafic HTTP ou HTTPS vers toutes les instances de machine virtuelle, vous pouvez créer votre propre règle de pare-feu :

  1. Accédez à la page Réseaux VPC.
  2. Sélectionnez le réseau VPC sur lequel vous souhaitez appliquer la règle de pare-feu.
  3. Dans la section Règles de pare-feu, cliquez sur Ajouter une règle de pare-feu.
  4. Attribuez un nom à votre règle de pare-feu et ajoutez tcp:80 dans la zone Protocoles et ports, ou tcp:443 pour le trafic HTTPS.
  5. Cliquez sur Créer.
Outil de ligne de commande gcloud

Si vous souhaitez autoriser le trafic HTTP et HTTPS vers toutes les machines virtuelles d'un projet, la commande suivante crée un pare-feu autorisant les requêtes HTTP et HTTPS entrantes à partir de n'importe quelle instance connectée à ce réseau VPC.

gcloud compute firewall-rules create FIREWALL_RULE --allow tcp:80,tcp:443

**Exemple**

gcloud compute firewall-rules create sample-http \
 --description "Incoming http and https allowed." \
 --allow tcp:80,tcp:443
gcloud compute firewall-rules describe sample-http
allowed:
- IPProtocol: tcp
  ports:
  - '80'
  - '443'
creationTimestamp: '2014-06-13T13:27:12.206-07:00'
id: '5057780722612413546'
kind: compute#firewall
name: sample-http
network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/samplehttp
sourceRanges:
- 0.0.0.0/0

Configurer une VM en tant que proxy réseau

Vous pouvez concevoir un réseau VPC de sorte qu'une seule instance dispose d'un accès externe, afin que toutes les autres instances présentes dans ce réseau utilisent cette instance comme serveur proxy pour communiquer avec le monde extérieur. Une telle configuration est utile si vous souhaitez contrôler les accès à destination ou en provenance de votre réseau VPC, ou réduire vos coûts en évitant de payer plusieurs adresses IP externes.

L'exemple qui suit indique comment configurer un proxy réseau sur des instances de VM utilisant une image Debian. Cet exemple fait intervenir une instance de passerelle en tant que serveur proxy Squid, mais ce n'est là qu'un moyen parmi d'autres de configurer un serveur proxy.

Pour configurer un serveur proxy Squid :

  1. Configurez une instance avec une adresse IP externe (statique ou éphémère). Pour cet exemple, nommez votre instance gateway-instance.
  2. Configurez une instance (ou plusieurs) sans adresse IP externe en spécifiant gcloud compute instances create ... --no-address. Pour cet exemple, nommez cette instance hidden-instance.
  3. Apprenez à vous connecter d'une instance à une autre, car vous ne pourrez pas vous connecter directement à vos instances uniquement internes.
  4. Ajoutez un pare-feu pour autoriser le trafic TCP sur le port 3128 :

    gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
    
  5. Installez Squid sur l'instance gateway-instance, puis configurez-le pour autoriser l'accès à partir de n'importe quelle machine du réseau VPC (adresses IP de sous-réseau valides). Cela suppose que les instances gateway-instance et hidden-instance sont toutes deux connectées au même réseau VPC, ce qui leur permet de se connecter l'une à l'autre.

    user@gateway-instance:~$ sudo apt-get install squid3
    

    Autorisez toutes les machines présentes sur le réseau local à utiliser le serveur Squid3. Les commandes sed suivantes annulent la mise en commentaire et entraînent l'activation des entrées acl localnet src correspondant aux réseaux et machines locaux dans les fichiers de configuration Squid.

    user@gateway-instance:~$ sudo sed -i 's:#\(http_access allow localnet\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(http_access deny to_localhost\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 10.0.0.0/8.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 172.16.0.0/12.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 192.168.0.0/16.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fc00\:\:/7.*\):\1:' /etc/squid/squid.conf
    
    user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fe80\:\:/10.*\):\1:' /etc/squid/squid.conf
    
    # Prevent proxy access to metadata server
    user@gateway-instance:~$ sudo tee -a /etc/squid/squid.conf <<'EOF'
    acl to_metadata dst 169.254.169.254
    http_access deny to_metadata
    EOF
    
    # Start Squid
    user@gateway:~$ sudo service squid start
    
  6. Configurez l'instance hidden-instance pour qu'elle utilise gateway-instance comme proxy. Utilisez ssh pour vous connecter à l'instance hidden-instance et définir ses adresses URL de proxy de sorte qu'elles pointent vers l'instance gateway-instance sur le port 3128 (configuration par défaut de Squid), comme indiqué ici :

    user@gateway-instance:~$ ssh hidden-instance
    
    user@hidden-instance:~$ sudo -s
    
    root@hidden-instance:~# echo "export http_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export https_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export ftp_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
    
    root@hidden-instance:~# echo "export no_proxy=169.254.169.254,metadata,metadata.google.internal" >> /etc/profile.d/proxy.sh
    

    Mettez à jour les fichiers sudoers de façon à diffuser ces variables env.

    root@hidden-instance:~# cp /etc/sudoers /tmp/sudoers.new
    
    root@hidden-instance:~# chmod 640 /tmp/sudoers.new
    
    root@hidden-instance:~# echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy"\" >>/tmp/sudoers.new
    
    root@hidden-instance:~# chmod 440 /tmp/sudoers.new
    
    root@hidden-instance:~# visudo -c -f /tmp/sudoers.new && cp /tmp/sudoers.new /etc/sudoers
    
  7. Quittez sudo, chargez les variables et exécutez apt-get sur l'instance hidden-instance. Cette dernière devrait maintenant fonctionner en utilisant la passerelle comme proxy. Si la passerelle ne jouait pas le rôle de proxy, apt-get ne fonctionnerait pas puisque l'instance hidden-instance n'a pas de connexion directe à Internet.

    root@hidden-instance:~# exit
    
    user@hidden-instance:~$ source ~/.profile
    
    user@hidden-instance:~$ sudo apt-get update
    

Configurer une VM en tant que passerelle VPN

Ce contenu est obsolète et a été supprimé. Pour une solution VPN gérée, consultez la documentation de Cloud VPN.

Configurer une VM en tant que passerelle NAT

Ce contenu est obsolète et a été supprimé. Pour une solution NAT gérée, consultez la documentation de Cloud NAT.

Créer des passerelles NAT à haut débit et haute disponibilité

Ce contenu est obsolète et a été supprimé. Pour une solution NAT gérée, consultez la documentation de Cloud NAT.

Étapes suivantes