Puedes configurar una conexión de túnel de VPN clásica entre un sitio local y Google Cloud para que las direcciones IP de origen y de destino sean direcciones IP externas (que no sean RFC 1918). Por ejemplo, puedes configurar una conexión de VPN clásica a un sitio remoto para que los rangos de direcciones IP locales no entren en conflicto con la dirección IP de la VM de Google Cloud.
En este instructivo, usarás un proyecto de Google Cloud, la consola de Google Cloud, una instancia de máquina virtual (VM), VPN clásica y algunos comandos de Linux. Para probar la conexión, crea una instancia de VM nueva a fin de enviar y recibir tráfico entre la VM y un par remoto.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
- En tu estación de trabajo, instala la herramienta de línea de comandos de
gcloud
. - Configura la herramienta de línea de comandos de
gcloud
para usar tu proyecto. En el siguiente comando, reemplazaPROJECT_ID
por el ID del proyecto:gcloud config set project PROJECT_ID
- Asegúrate de que las subredes locales estén conectadas a la puerta de enlace de VPN local.
- Sigue las instrucciones que aparecen en Configura la puerta de enlace de VPN de intercambio de tráfico para establecer la puerta de enlace de VPN de intercambio de tráfico entre Google Cloud y la puerta de enlace de VPN local.
Reserva una dirección IP externa estática nueva
En Compute Engine, cada instancia de VM puede tener varias interfaces de red. Cada interfaz puede tener direcciones IP internas y externas. Las reglas de reenvío pueden tener direcciones IP externas destinadas al balanceo de cargas externo o direcciones internas para el balanceo de cargas interno. Para obtener más información sobre las direcciones IP estáticas, consulta Direcciones IP externas.
Una dirección IP externa estática es una dirección IP que se reserva para tu proyecto hasta que decidas liberarla. Si tienes una dirección IP en la que tus clientes confíen a fin de acceder a tu servicio, puedes reservarla para que solo tu proyecto la pueda usar. También puedes subir la categoría de una dirección IP externa efímera a una dirección IP externa estática.
Puedes reservar dos tipos de direcciones IP externas:
- Las instancias de VM con una o más interfaces de red o los balanceadores de cargas de red pueden usar una dirección IP regional.
- Una dirección IP global que se usa para balanceadores de cargas globales
Para obtener una lista de los balanceadores de cargas regionales y globales, consulta Resumen de los balanceadores de cargas de Google Cloud.
Reserva una dirección IP externa estática mediante Google Cloud CLI o la API. Después de reservar la dirección IP, asígnala a una instancia nueva mientras creas la instancia nueva o asigna la dirección IP a una instancia existente.
Console
Ir a la página Reservar una dirección estática
Elige un nombre para la dirección nueva.
Especifica si es una dirección IPv4 o IPv6. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de cargas globales.
Elige si esta dirección IP será regional o global. Si reservas una dirección IP estática para una instancia o un balanceador de cargas de red, elige Regional. Si reservas una dirección IP estática para un balanceador de cargas global, elige Global.
Si se trata de una dirección IP regional, selecciona la región a fin de crear la dirección.
Opcional: Selecciona un recurso para adjuntar a la dirección IP.
Haz clic en Reservar si deseas reservar la dirección IP.
gcloud
Para reservar una dirección IP externa estática mediante gcloud compute
, usa el comando compute addresses create
.
Para reservar una dirección IP global, usa los campos --global
y --ip-version
. En el campo --ip-version
, especifica IPV4
o IPV6
. Las direcciones IPv6 solo pueden ser globales y solo se pueden usar con balanceadores de cargas globales.
Reemplaza ADDRESS_NAME
por el nombre de esta dirección.
gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
Para reservar una dirección IP regional, usa el campo --region
:
gcloud compute addresses create ADDRESS_NAME \ --region=REGION
Reemplaza lo siguiente:
ADDRESS_NAME
: es el nombre de esta dirección.REGION
: es la región en la que se reservará esta dirección. Esta región debe ser la misma que la del recurso al que se asigna la dirección IP. Todas las direcciones IP regionales son IPv4.
Usa el comando compute addresses describe
para ver el resultado:
gcloud compute addresses describe ADDRESS_NAME
API
Para crear una dirección IPv4 regional, invoca el método addresses.insert
regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
El cuerpo de la solicitud debe contener la siguiente información:
{ "name": "ADDRESS_NAME" }
Reemplaza lo siguiente:
ADDRESS_NAME
: es el nombre de la direcciónREGION
: El nombre de la región para esta solicitud.PROJECT_ID
: El ID del proyecto de esta solicitud
Para direcciones IPv4 estáticas globales, llama al método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
El cuerpo de la solicitud debe contener la siguiente información:
{ "name": "ADDRESS_NAME" }
Para direcciones IPv6 estáticas globales, llama al método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
El cuerpo de la solicitud debe contener la siguiente información:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
Usa el método addresses.get
para ver el resultado.
Terraform
Puedes usar un módulo de Terraform para crear una dirección IP externa.
En el siguiente ejemplo, los argumentos de Terraform tienen valores de ejemplo que puedes cambiar. En el ejemplo, se crean tres direcciones IPv4 externas regionales.
En el siguiente ejemplo, se crea una dirección IPv6 externa global:
Habilita el reenvío de IP
Puedes habilitar el reenvío de IP cuando creas una VM o actualizas las propiedades de la instancia canIpForward
en una VM existente. El reenvío de IP está habilitado a nivel de la VM y se aplica a todas las interfaces conectadas a la VM.
Habilita el reenvío de IP cuando crees una VM
En estas instrucciones, se describe cómo habilitar el reenvío de IP cuando creas una VM. Si necesitas habilitar el reenvío de IP en una VM existente, actualiza las propiedades de la instancia canIpForward
.
Console
- Ve a la página Instancias de VM.
Ir a Instancias de VM - Haga clic en Crear instancia.
- En Disco de arranque, asegúrate de haber seleccionado una imagen de Linux; por ejemplo, Debian GNU/Linux.
- Haz clic en Herramientas de redes, discos, seguridad, administración, usuario único
- Haz clic en Herramientas de redes.
- Para el Reenvío de IP, selecciona Habilitar.
- Especifica el resto de los parámetros de la instancia.
- Haz clic en Crear.
gcloud
Cuando crees una instancia mediante gcloud
, agrega la marca --can-ip-forward
al siguiente comando:
gcloud compute instances create ... --can-ip-forward
API
Cuando crees una instancia, usa el campo canIpForward
para habilitar el reenvío de IP.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "canIpForward": true, ...other fields }
Reemplaza lo siguiente:
- PROJECT_ID: es el ID del proyecto en el que se crea tu instancia.
- ZONE: es la zona de Google Cloud en la que se crea la instancia.
Para obtener más información, consulta el método instances.insert
.
Terraform
Puedes usar el recurso de Terraform para crear una instancia de VM con el reenvío de IP habilitado.
En este ejemplo, los argumentos de Terraform tienen valores asignados que puedes cambiar.
Crear una ruta para el tráfico de entrada
Realiza los siguientes pasos para crear una ruta estática nueva. Antes de comenzar, asegúrate de estar familiarizado con la siguiente información:
Las rutas estáticas no pueden tener rangos de destino que coincidan con los que usa cualquier ruta de subred en tu red de VPC o que sean más específicos que estos.
- Cuando uses el intercambio de tráfico entre redes de VPC para conectar dos redes de VPC, las rutas estáticas personalizadas en una red no pueden tener destinos que coincidan con los de las rutas de subred en ambas redes o que sean más específicos que estos. Google Cloud rechaza las rutas estáticas personalizadas que entrarían en conflicto con las rutas de subred por este motivo.
Para evitar conflictos cuando usas una red de VPC de modo automático, no crees rutas estáticas cuyos destinos se ajusten a
10.128.0.0/9
. Revisa los rangos IPv4 del modo automático para obtener más detalles.Los destinos de las rutas estáticas personalizadas no se pueden superponer con ningún rango asignado interno.
Asegúrate de estar familiarizado con las instancias como siguientes saltos antes de crear una ruta estática personalizada que use una VM como su siguiente salto. Google Cloud solo valida que exista una VM en el momento en que creas la ruta si eliges una instancia de siguiente salto.
Si creas una ruta con una etiqueta de red, solo las VM con esa etiqueta reciben esa ruta. Sin embargo, las VM etiquetadas aún recibirán todas las rutas que no tengan una etiqueta de red.
Console
- Ve a la página Rutas en la consola de Google Cloud.
Ir a las Rutas - Haz clic en Crear ruta.
- Especifica un Nombre y una Descripción para la ruta.
- Selecciona una Red existente en la que se aplicará la ruta.
- Especifica un Rango de IP de destino para definir el destino de la ruta.
- Especifica una Prioridad para la ruta. La prioridad solo se usa para determinar el orden de enrutamiento si hay rutas con el mismo destino. Consulta Parámetros de ruta para obtener más detalles.
- Para que la ruta sea aplicable solo a instancias con etiquetas de red que coincidan, especifícalas en el campo Etiquetas de instancia. Deja el campo en blanco para que la ruta sea aplicable a todas las instancias de la red o si seleccionas un balanceador de cargas de TCP/UDP interno como el siguiente salto de la ruta. Las etiquetas de red no se aplican a las rutas que tienen un balanceador de cargas de TCP/UDP interno como un siguiente salto.
Selecciona un Próximo salto para la ruta:
- Especificar una instancia: te permite seleccionar una instancia por nombre. El tráfico se enrutará a esa instancia (o cualquier instancia de reemplazo con el mismo nombre en la misma zona) aunque cambie la dirección IP.
- Especificar dirección IP: te permite ingresar la dirección IP de una instancia existente en la red de VPC. Consulta Próximos saltos y funciones para ver las restricciones importantes de direcciones IP de siguiente salto válidas.
Haz clic en Crear.
gcloud
Crea una nueva ruta estática:
gcloud compute routes create ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --network=NETWORK \ NEXT_HOP_SPECIFICATION
Reemplaza los marcadores de posición de la siguiente forma:
- ROUTE_NAME es el nombre de la ruta.
- DESTINATION_RANGE representa las direcciones IP de destino a las que se aplicará esta ruta. El destino más amplio posible es
0.0.0.0/0
. - NETWORK es el nombre de la red de VPC que contendrá la ruta.
- NEXT_HOP_SPECIFICATION: el próximo salto de la ruta estática. Solo debes especificar uno de estos como siguiente salto. Para obtener más información sobre los diferentes tipos de siguientes saltos, consulta Próximos saltos y características.
--next-hop-instance=INSTANCE_NAME
--next-hop-instance-zone=ZONE
y : Usa este siguiente salto para dirigir el tráfico a una instancia de VM existente por nombre y zona. El tráfico se envía a la dirección IP interna principal de la interfaz de red de la VM que se encuentra en la misma red que la ruta.--next-hop-address=ADDRESS
: Usa este siguiente salto para dirigir el tráfico a la dirección IP de una instancia de VM existente.
Para que la ruta estática personalizada solo se aplique a ciertas VM por etiqueta de red, agrega la marca --tags
y especifica una o más etiquetas de red. Para obtener más información sobre cómo trabajan las etiquetas de red en conjunto con las rutas estáticas personalizadas, consulta Rutas aplicables. Puedes usar etiquetas con cualquier ruta estática personalizada.
Consulta la documentación del SDK para obtener más información sobre la sintaxis de gcloud
.
API
Crea una nueva ruta estática.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes { "destRange": "DESTINATION_RANGE", "name": "ROUTE_NAME", "network": "NETWORK_NAME", "priority": PRIORITY, "NEXT_HOP_SPECIFICATION": VALUE }
Reemplaza los marcadores de posición de la siguiente forma:
- PROJECT_ID es el ID del proyecto en el que se crea tu ruta.
- DESTINATION_RANGE representa las direcciones IP de destino a las que se aplicará esta ruta. El destino más amplio posible es
0.0.0.0/0
. - ROUTE_NAME es un nombre para la ruta.
- NETWORK_NAME es el nombre de la red de VPC que contendrá la ruta.
- El VALUE de NEXT_HOP_SPECIFICATION representa el siguiente salto para la ruta estática personalizada. Para NEXT_HOP_SPECIFICATION, debes especificar solo uno de estos campos de siguiente salto:
nextHopIp
,nextHopInstance
. Para obtener más información sobre los diferentes tipos de próximos saltos y funciones, consulta Próximos saltos y funciones.
Para obtener más información, consulta el método routes.insert
.
Terraform
Puedes crear una ruta estática mediante un módulo de Terraform.
Esta ruta estática crea una ruta predeterminada a Internet.
Crea una VPN clásica mediante enrutamiento estático
El asistente de configuración de VPN es la única opción de la consola de Google Cloud para crear una puerta de enlace de VPN clásica. En el asistente se incluyen todos los pasos de configuración necesarios para crear una puerta de enlace de VPN clásica, túneles, sesiones de BGP y un recurso de puerta de enlace de VPN externa. Sin embargo, puedes completar ciertos pasos más adelante, como configurar sesiones de BGP.
Console
Configura la puerta de enlace
En la consola de Google Cloud, ve a la página VPN.
Si estás creando una puerta de enlace por primera vez, haz clic en Crear conexión de VPN.
Selecciona el Asistente de configuración de VPN.
Selecciona el botón de opción VPN clásica.
Haz clic en Continuar.
En la página Crear una conexión de VPN, especifica la siguiente configuración de puerta de enlace:
- Nombre: El nombre de la puerta de enlace VPN. El nombre no se puede cambiar más adelante.
- Descripción: Si lo deseas, agrega una descripción.
- Red: Especifica una red de VPC existente en la que se creará la puerta de enlace de VPN y el túnel.
- Región: Las puertas de enlace y túneles de Cloud VPN son objetos regionales. Elige la región de Google Cloud en la que se ubicará la puerta de enlace. Las instancias y otros recursos en diferentes regiones pueden usar el túnel para el tráfico de salida sujeto al orden de las rutas. Para obtener un mejor rendimiento, ubica la puerta de enlace y el túnel en la misma región que los recursos relevantes de Google Cloud.
- Dirección IP: Crea o elige una dirección IP externa regional existente.
Configura túneles
En la sección Túneles del túnel nuevo, especifica la siguiente configuración:
- Nombre: El nombre del túnel VPN. El nombre no se puede cambiar más adelante.
- Descripción: Opcionalmente, escribe una descripción.
- Dirección IP de intercambio de tráfico remoto: Especifica la dirección IP externa de la puerta de enlace de VPN de intercambio de tráfico.
- Versión de IKE: Elige la versión de IKE adecuada compatible con la puerta de enlace de VPN de intercambio de tráfico. Se prefiere IKEv2 si es compatible con el dispositivo de intercambio de tráfico.
- Clave precompartida IKE: Proporciona una clave precompartida (secreto compartido) que se usa para la autenticación. La clave precompartida del túnel de Cloud VPN debe coincidir con la que se usa cuando configuras el túnel equivalente en la puerta de enlace de VPN de intercambio de tráfico. A fin de generar una clave precompartida criptográficamente segura, sigue estas instrucciones.
- Selecciona túneles basados en políticas.
- En Opciones de enrutamiento, selecciona Basado en políticas.
- En Rangos de IP de red remota, proporciona una lista separada por espacios de los rangos de direcciones IP que usa el tráfico local en la configuración de VPN local.
- En el campo Rangos de IP locales, ingresa el rango de direcciones IP externas que creaste antes con un prefijo de subred
/32
. - Haga clic en Listo.
- Haz clic en Crear.
gcloud
Para crear una puerta de enlace de Cloud VPN, completa la siguiente secuencia de comandos. En los comandos, reemplaza lo siguiente:
PROJECT_ID
: Es el ID de tu proyecto.NETWORK
: El nombre de tu red de Google CloudREGION
: La región de Google Cloud donde creas la puerta de enlace y el túnelGW_NAME
: El nombre de la puerta de enlaceGW_IP_NAME
: Un nombre para la dirección IP externa que usa la puerta de enlace- Opcional:
--target-vpn-gateway-region
es la región de la puerta de enlace de VPN clásica en la que se debe operar. Su valor debe ser el mismo que el de--region
. Si no se especifica, esta opción se configura de forma automática. Con esta opción se anula el valor predeterminado de la propiedad de procesamiento según región para esta invocación de comando.
Configura los recursos de la puerta de enlace
Crea el objeto de puerta de enlace VPN de destino.
gcloud compute target-vpn-gateways create GW_NAME \ --network=NETWORK \ --region=REGION \ --project=PROJECT_ID
Reserva una dirección IP externa regional (estática):
gcloud compute addresses create GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID
Anota la dirección IP (para que puedas usarla cuando configures tu puerta de enlace de VPN de intercambio de tráfico):
gcloud compute addresses describe GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID \ --format='flattened(address)'
Crea tres reglas de reenvío; Eetas reglas le indican a Google Cloud que envíe tráfico ESP (IPsec), UDP 500 y UDP 4500 a la puerta de enlace:
gcloud compute forwarding-rules create fr-GW_NAME-esp \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=ESP \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=4500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Crea el túnel de Cloud VPN
En los comandos, reemplaza lo siguiente:
TUNNEL_NAME
: Un nombre para el túnelON_PREM_IP
: La dirección IP externa de la puerta de enlace VPN de intercambio de tráficoIKE_VERS
:1
for IKEv1 or2
for IKEv2SHARED_SECRET
: es tu clave precompartida (secreto compartido). La clave precompartida del túnel de Cloud VPN debe coincidir con la que se usa cuando configuras el túnel equivalente en la puerta de enlace de VPN de intercambio de tráfico. A fin de generar una clave precompartida criptográficamente segura, sigue estas instrucciones.
Para la VPN basada en políticas, sigue estos pasos:
LOCAL_IP_RANGES
: es una lista delimitada por comas de los rangos de direcciones IP de Google Cloud. Por ejemplo, puedes suministrar el bloque CIDR para cada subred en una red de VPC. Este es el lado izquierdo desde la perspectiva de Cloud VPN.REMOTE_IP_RANGES
: es una lista delimitada por comas de los rangos de direcciones IP de la red de intercambio de tráfico. Este es el lado derecho desde la perspectiva de Cloud VPN.
Para configurar un túnel VPN basado en políticas, ejecuta el siguiente comando:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=LOCAL_IP_RANGES \ --remote-traffic-selector=REMOTE_IP_RANGES \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
En el caso de la VPN basada en rutas, los selectores de tráfico locales y remotos son
0.0.0.0/0
según lo que se define en las opciones de enrutamiento y los selectores de tráfico.Para configurar un túnel VPN basado en rutas, ejecuta el siguiente comando:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=0.0.0.0/0 \ --remote-traffic-selector=0.0.0.0/0 \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Crea una ruta estática para cada rango de dirección IP remota que especificaste en la opción
--remote-traffic-selector
del paso anterior. Repite este comando para cada rango de dirección IP remota. ReemplazaROUTE_NAME
por un nombre único para la ruta y reemplazaREMOTE_IP_RANGE
por el rango de dirección IP remota adecuado. Nota:gcloud compute routes create ROUTE_NAME \ --destination-range=REMOTE_IP_RANGE \ --next-hop-vpn-tunnel=TUNNEL_NAME \ --network=NETWORK \ --next-hop-vpn-tunnel-region=REGION \ --project=PROJECT_ID
Configura la VM para enviar y recibir tráfico
Para completar la configuración y probar si puedes enviar y recibir tráfico de la VM, sigue estos pasos:
Recibe tráfico
- En la consola de Google Cloud, ve a la página Instancias de VM.
- En la lista de instancias de máquina virtual, busca la VM que creaste previamente y haz clic en SSH.
Crea un alias de dirección IP para la VM mediante la dirección IP pública que reservaste antes. Podrás recibir tráfico en la VM después de completar este paso.
Ejecuta el siguiente comando:
sudo ip address add EXTERNAL_IP_ADDRESS/32 dev eth0
Reemplaza
EXTERNAL_IP_ADDRESS
por la dirección IP pública que reservaste antes.
Envía tráfico
- En la consola de Google Cloud, ve a la página Instancias de VM.
- En la lista de instancias de máquina virtual, busca la VM que creaste previamente y haz clic en SSH.
Ejecuta el siguiente comando para probar si puedes hacer ping a una dirección IP externa:
$ ping -I EXTERNAL_IP_ADDRESS REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) from EXTERNAL_IP_ADDRESS : 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=4.46 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.11 ms
Reemplaza
REMOTE_PEER_IP_ADDRESS
por una dirección IP de la subred de intercambio de tráfico remoto.Para permitir que la VM use de forma automática esta interfaz cuando envía tráfico al túnel VPN, puedes crear una regla
iptables
.Por ejemplo, ejecuta el siguiente comando para crear una regla
iptables
:$ sudo iptables -t nat -A POSTROUTING --destination REMOTE_PEER_SUBNET -j SNAT --to-source EXTERNAL_IP_ADDRESS
Reemplaza
REMOTE_PEER_SUBNET
por la subred de intercambio de tráfico remoto.Ejecuta los siguientes comandos para probar el túnel de Cloud VPN:
$ ping REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.48 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.42 ms
$ ping EXTERNAL_IP_ADDRESS PING 35.195.72.19 (35.195.72.19) 56(84) bytes of data. 64 bytes from 35.195.72.19: icmp_seq=1 ttl=64 time=0.033 ms 64 bytes from 35.195.72.19: icmp_seq=2 ttl=64 time=0.062 ms