Configura las VM para casos prácticos de Herramientas de redes

En esta página, se describen las configuraciones de Herramientas de redes especiales de las instancias de máquina virtual (VM) de Compute Engine, como las siguientes opciones:

  • Configura una conexión HTTP externa a una VM
  • Configura una VM como un proxy de red

Configura una conexión HTTP externa a una VM

Las reglas predeterminadas de firewall no permiten conexiones HTTP o HTTPS a las instancias. Sin embargo, es bastante simple agregar una regla que permita tales conexiones. Ten en cuenta que una VM debe tener una dirección IP externa (estática o efímera) antes de poder recibir tráfico desde fuera de la red de su nube privada virtual (VPC).

Puedes usar la herramienta de línea de comandos de gcloud o Google Cloud Console para agregar una regla de firewall que permita las conexiones HTTP o HTTPS. También puedes agregar una regla de firewall mediante la API.

Console

Puedes usar Cloud Console a fin de crear una regla de firewall general para todas las instancias de la red de VPC, o bien permitir el acceso de las instancias individuales a las conexiones HTTP y HTTPS mediante la selección de la opción correspondiente durante la creación de esa instancia. La última opción se describe primero, porque proporciona más control sobre las instancias individuales.

  1. En Cloud Console ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. En la sección Firewall, selecciona Permitir tráfico HTTP y Permitir tráfico HTTPS.
  4. Haz clic en Crear para crear la instancia.

Cuando se seleccionan estas casillas de verificación, en la red de VPC, se crea de forma automática una regla default-http o default-https que se aplica a todas las instancias que contengan las etiquetas http-server o https-server. A la instancia nueva también se aplica la etiqueta correspondiente según la selección de la casilla de verificación.

Si ya cuentas con las reglas de firewall default-http y default-https, puedes habilitar las opciones Permitir HTTP o Permitir HTTPS en la página de detalles de la instancia y, de este modo, aplicar la regla de firewall a las instancias existentes.

  1. Ve a la página Instancias de VM.
  2. Haz clic en el nombre de la instancia deseada.
  3. Haz clic en el botón Editar en la parte superior de la página.
  4. Desplázate hacia abajo hasta la sección Firewalls.
  5. Marca las opciones Permitir HTTP o Permitir HTTPS en la red de VPC deseada.
  6. Haz clic en Guardar.

De manera similar, también puedes inhabilitar el acceso HTTP o HTTPS externo para una VM mediante la desactivación de una o ambas casillas de verificación.

Gracias a la posibilidad de etiquetar determinadas instancias para el tráfico HTTP y HTTPS en lugar de crear una regla de firewall general aplicable a todas las instancias, en Google Cloud, se limitan las posibles consecuencias de seguridad de permitir tráfico externo a todas las máquinas virtuales de un proyecto. Sin embargo, si deseas crear una regla de firewall que permita tráfico HTTP o HTTPS a todas las instancias de máquina virtual, puedes crear tu propia regla de firewall; para ello, haz lo siguiente:

  1. Ve a la página Redes de VPC.
  2. Selecciona la red de VPC en la cual deseas aplicar la regla de firewall.
  3. En la sección Reglas de firewall, haz clic en Agregar regla de firewall.
  4. Asigna un nombre a tu regla de firewall y agrega tcp:80 en el cuadro Protocolos y puertos, o bien tcp:443 para el tráfico HTTPS.
  5. Haz clic en Crear.
Herramienta de línea de comandos de gcloud

Si deseas permitir el tráfico HTTP y HTTPS a todas las máquinas virtuales en un proyecto, utiliza el siguiente comando a fin de crear un firewall para permitir las solicitudes HTTP y HTTPS entrantes desde cualquier lugar a cualquiera de las instancias conectadas a esta red de VPC.

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

**Ejemplo**

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

Configura una VM como un proxy de red

Puedes diseñar una red de VPC para otorgar acceso externo solo a una instancia y, que en todas las demás instancias de la red de VPC, se utilice esa instancia como un servidor proxy para el mundo exterior. Esto resulta útil si deseas controlar el acceso dentro o fuera de la red de VPC, o reducir el costo que implica pagar varias direcciones IP externas.

En este ejemplo particular, se analiza cómo configurar un proxy de red en las instancias de VM en las que se utiliza una imagen de Debian. Utiliza una instancia de puerta de enlace como un servidor proxy de Squid, pero esta es solo una forma de configurar un servidor proxy.

A fin de configurar un servidor proxy de Squid, haz lo siguiente:

  1. Configura una instancia con una dirección IP externa (estática o efímera). Para este ejemplo, asígnale el nombre gateway-instance a la instancia.
  2. Especifica gcloud compute instances create ... --no-address para configurar una o más instancias sin direcciones IP externas. Para este ejemplo, asigna el nombre hidden-instance a la instancia.
  3. Aprende cómo conectarte de una instancia a otra, porque no podrás conectarte directamente a las instancias solo para uso interno.
  4. Agrega un firewall para permitir el tráfico de TCP en el puerto 3128 con el siguiente comando:

    gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
    
  5. Instala Squid en gateway-instance y configúralo para permitir el acceso desde cualquier máquina en la red de VPC (direcciones IP de subred válidas). De este modo, se supone que las instancias gateway-instance y hidden-instance están conectadas a la misma red de VPC, lo que permite que se conecten entre sí.

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

    Habilita cualquier máquina de la red local para utilizar el servidor Squid3. Mediante los siguientes comandos sed, se quitan los comentarios de las entradas acl localnet src en los archivos de configuración de Squid y se las habilita para las redes y las máquinas locales.

    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. Configura hidden-instance para usar gateway-instance como su proxy. Conéctate a hidden-instance mediante SSH y define las direcciones URL del proxy de modo que apunten a gateway-instance en el puerto 3128 (la configuración predeterminada de Squid) como se muestra a continuación:

    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
    

    Actualiza el archivo sudoers para que se pase por estas variables del entorno.

    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. Sal de sudo, carga las variables y ejecuta apt-get en hidden-instance. Ahora debería funcionar con la puerta de enlace como proxy. Si la puerta de enlace no se usara como un proxy, apt-get no funcionará porque hidden-instance no tiene ninguna conexión directa a Internet.

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

Configura una VM como una puerta de enlace de VPN

Este contenido ya no está disponible y se quitó. Para obtener una solución de VPN administrada, consulta la documentación de Cloud VPN.

Configura una VM como una puerta de enlace NAT

Este contenido dejó de estar disponible y se quitó. Para obtener una solución NAT administrada, consulta la documentación de Cloud NAT.

Compila puertas de enlace de NAT con alta disponibilidad y ancho de banda alto

Este contenido ya no está disponible y se quitó. Para obtener una solución de NAT administrada, consulta la documentación de Cloud NAT.

Qué sigue