Configurar VMs para casos de uso de rede
Nesta página, descrevemos a configuração de uma VM como um proxy de rede.
Configurar uma VM como um proxy de rede
Projete sua rede VPC para que apenas uma instância tenha acesso externo e todas as outras usem essa instância como um servidor proxy para comunicação externa. Isso será útil para controlar o acesso de entrada ou saída da rede VPC ou para reduzir o custo de pagamento de vários endereços IP externos.
Esse exemplo específico trata da configuração de um proxy de rede nas instâncias de VM que usam uma imagem Debian. Ele usa uma instância de gateway como um servidor proxy Squid, mas esse é apenas um modo de configurar um servidor proxy.
Para configurar um servidor proxy Squid:
- Configure uma instância com um endereço IP externo estático ou temporário.
Para este exemplo, nomeie sua instância
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 - Configure uma ou mais instâncias sem endereços IP externos especificando
gcloud compute instances create ... --no-address
. Para este exemplo, chame esta instânciahidden-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 - Aprenda a conectar-se de uma instância à outra, visto que não é possível conectar-se diretamente às suas instâncias somente internas.
Adicione um firewall para permitir o tráfego TCP na porta 3128:
gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
Instale o Squid em
gateway-instance
e configure-o para permitir o acesso de qualquer máquina na rede VPC (endereços IP de sub-rede válidos). O processo presume quegateway-instance
ehidden-instance
estão conectados à mesma rede VPC, o que permite que eles se conectem uns aos outros.user@gateway-instance:~$ sudo apt-get install squid
Autorize todas as máquinas na rede local a usar o servidor Squid. Os seguintes comandos
sed
descompactam e ativam as entradasacl localnet src
nos arquivos de configuração do Squid para redes e máquinas locais.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
Configure
hidden-instance
para usargateway-instance
como proxy. Use SSH para se conectar ahidden-instance
e defina seus endereços URL do proxy que apontem paragateway-instance
na porta 3128 (a configuração padrão do Squid) como mostrado aqui: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
Atualize o sudoers para transmitir estas variáveis 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
Saia de
sudo
, carregue as variáveis e executeapt-get
emhidden-instance
. Agora, isso funcionará usando o gateway como um proxy. Se o gateway não estiver sendo exibido como um proxy,apt-get
não funcionará porquehidden-instance
não tem conexão direta com a Internet.root@hidden-instance:~# exit
user@hidden-instance:~$ source ~/.profile
user@hidden-instance:~$ sudo apt-get update
Configurar uma VM como um gateway de VPN
Este conteúdo foi suspenso e removido. Para uma solução de VPN gerenciada, consulte a documentação do Cloud VPN.
Configurar uma VM como um gateway NAT
Este conteúdo foi suspenso e removido. Para uma solução NAT gerenciada, consulte a documentação do Cloud NAT.
Criar gateways NAT de alta disponibilidade e grande largura de banda
Este conteúdo foi suspenso e removido. Para uma solução NAT gerenciada, consulte a documentação do Cloud NAT.
A seguir
- Para saber mais sobre redes VPC, consulte Redes VPC.
- Para criar, modificar ou excluir redes VPC, consulte Criar e gerenciar redes VPC.