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

Cette page explique comment configurer une VM en tant que proxy réseau.

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 :
    gcloud compute instances create gateway-instance 
    --project=project_id
    --zone=zone
    --network-interface=network-tier=PREMIUM,subnet=default
    --scopes=https://www.googleapis.com/auth/cloud-platform
  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 :
    gcloud compute instances create hidden-instance 
    --project=project_id
    --zone=zone
    --network-interface=network-tier=PREMIUM,subnet=default,no-address
    --scopes=https://www.googleapis.com/auth/cloud-platform
  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