
Estoy intentando configurar una máquina virtual simple en Google Cloud Platform que pueda hacer ping a ipv6.google.com correctamente. Estoy usando estos documentos de GCP sobre la compatibilidad con IPv6, que incluyen:
- https://cloud.google.com/vpc/docs/vpc#ipv6-addresses
- https://cloud.google.com/vpc/docs/using-vpc#subnet-enable-ipv6
- https://cloud.google.com/compute/docs/ip-addresses/configure-ipv6-address
[NOTA: Editado/actualizado para proporcionar los comandos completos utilizados]
Aquí está mi prueba de concepto simple y repetible:
- Dentro de un proyecto, crear una red VPC
$ gcloud config set project my-test-project
$ gcloud compute networks create targetnet \
--subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
- Crear subred con soporte IPv6
$ gcloud compute networks subnets create targetnet-1 \
--network=targetnet --range=10.9.9.0/24 \
--stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL \
--region=us-west2
- Crear una instancia con soporte IPv6
$ gcloud compute instances create test-1 \
--stack-type=IPV4_IPV6 --ipv6-network-tier=PREMIUM \
--subnet=targetnet-1 --zone=us-west2-a \
--image-family=debian-10 --image-project=debian-cloud \
--machine-type=e2-micro
- Agregue una regla de firewall para otorgar acceso SSH a la instancia
$ gcloud compute firewall-rules create target-ssh-home \
--network targetnet --allow tcp:22 --source-ranges <my IPv4 addr>
- SSH a la instancia, mire las direcciones de red y la ruta:
$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 state UP qlen 1000
inet6 2600:1900:xxxx:xxxx:0:1::/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::4001:aff:fe04:2d2/64 scope link
valid_lft forever preferred_lft forever
$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2600:1900:xxxx:xxxx:0:1:: dev ens4 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:aff:fe04:201 dev ens4 proto ra metric 1024 expires 85sec pref medium
- Intente hacer ping a un recurso IPv6 externo:
$ ping6 ipv6.google.com
PING ipv6.google.com(lax31s01-in-x0e.1e100.net (2607:f8b0:4007:80e::200e)) 56 data bytes
From fe80::4001:ff:fe00:0%ens4 (fe80::4001:ff:fe00:0%ens4): icmp_seq=1 Destination unreachable: No route
Los documentos indican que los valores predeterminados del firewall deberían permitir ICMP saliente. Aún así, también intenté agregar reglas de firewall para permitir el servicio ICMP (y todos) en varias formas para ver si eso ayudaba. Esto no cambió el resultado. Además, confirmé que GCP agregó una ruta IPv6 predeterminada para la red. (::/0).
Según la documentación, el GCP debe proporcionar un /64 y a la NIC se le debe asignar la primera dirección de ese rango. No veo eso aquí. ¿Hay algo que deba hacer en el host para conseguirlo? ¿O hay algo que me he perdido y que es necesario en GCP?
Respuesta1
Actualmente no se admite la conexión a las API y servicios de Google desde VPC a través de direcciones IPv6 externas. Los esfuerzos para hacer ping a 'ipv6.google.com' desde Cloud VM a través de IPv6 a menudo conducen a una respuesta ICMP de destino inalcanzable.
Repliqué tu configuración con los pasos que mencionaste y también recibí el mismo error "Destino inaccesible: sin ruta" al intentar hacer ping a ipv6.google.com; sin embargo, pude hacer ping a otros sitios IPv6 como 'wikipedia.org' con bastante éxito.
Además, para utilizar mejor las máquinas virtuales con red IPv6, puede preferir incorporar GCPEquilibrio de carga con soporte IPv6.