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 :
- 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 - Configurez une instance (ou plusieurs) sans adresse IP externe en spécifiant
gcloud compute instances create ... --no-address
. Pour cet exemple, nommez cette instancehidden-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 - Choisissez une option de connexion pour les VM internes uniquement, car vous ne pourrez pas vous connecter directement à vos instances uniquement internes.
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
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 instancesgateway-instance
ethidden-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 squid
Autorisez toutes les machines présentes sur le réseau local à utiliser le serveur Squid. Les commandes
sed
suivantes annulent la mise en commentaire et entraînent l'activation des entréesacl 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
Configurez l'instance
hidden-instance
pour qu'elle utilisegateway-instance
comme proxy. Utilisez ssh pour vous connecter à l'instancehidden-instance
et définir ses adresses URL de proxy de sorte qu'elles pointent vers l'instancegateway-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
Quittez
sudo
, chargez les variables et exécutezapt-get
sur l'instancehidden-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'instancehidden-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 à 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
- Pour en savoir plus sur les réseaux VPC, consultez la section Réseaux VPC.
- Pour créer, modifier et supprimer des réseaux VPC, consultez la page Créer et gérer des réseaux VPC.