Como configurar VMs para casos de uso de rede

Nesta página, descrevemos a configuração de uma VM como um proxy de rede.

Como 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:

  1. 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
  2. Configure uma ou mais instâncias sem endereços IP externos especificando gcloud compute instances create ... --no-address. Para este exemplo, chame esta instância 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. Aprenda a conectar-se de uma instância à outra, visto que não é possível conectar-se diretamente às suas instâncias somente internas.
  4. Adicione um firewall para permitir o tráfego TCP na porta 3128:

    gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
    
  5. 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 que gateway-instance e hidden-instance estão conectados à mesma rede VPC, o que permite que eles se conectem uns aos outros.

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

    Autorize todas as máquinas na rede local a usar o servidor Squid3. Os seguintes comandos sed descompactam e ativam as entradas acl 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
    
  6. Configure hidden-instance para usar gateway-instance como proxy. Use SSH para se conectar a hidden-instance e defina seus endereços URL do proxy que apontem para gateway-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
    
  7. Saia de sudo, carregue as variáveis e execute apt-get em hidden-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á porque hidden-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
    

Como 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.

Como 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.

Como 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