
Estou tentando configurar uma VM simples no Google Cloud Platform que possa executar ping em ipv6.google.com com êxito. Estou usando estes documentos do GCP sobre suporte IPv6, incluindo:
- 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/atualizado para fornecer comandos completos usados]
Aqui está minha prova de conceito simples e repetível:
- Dentro de um projeto, crie uma rede VPC
$ gcloud config set project my-test-project
$ gcloud compute networks create targetnet \
--subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
- Crie sub-rede com suporte 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
- Crie uma instância com suporte 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
- Adicione uma regra de firewall para conceder acesso SSH à instância
$ gcloud compute firewall-rules create target-ssh-home \
--network targetnet --allow tcp:22 --source-ranges <my IPv4 addr>
- SSH para a instância, observe os endereços de rede e a rota:
$ 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
- Tentativa de executar ping em um 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
Os documentos indicam que os padrões do firewall devem permitir ICMP de saída. Ainda assim, também tentei adicionar regras de firewall para permitir serviços ICMP (e todos) de várias formas para ver se isso ajudava. Isso não alterou o resultado. Além disso, confirmei que o GCP adicionou uma rota IPv6 padrão para a rede. (::/0).
De acordo com a documentação, o GCP deve fornecer um /64 e a NIC deve receber o primeiro endereço desse intervalo. Eu não vejo isso aqui. Há algo que preciso fazer no host para conseguir isso? Ou há algo que perdi e é necessário no GCP?
Responder1
No momento, não há suporte para conexão com APIs e serviços do Google a partir de VPCs por meio de endereços IPv6 externos. Os esforços para executar ping em 'ipv6.google.com' da Cloud VM via IPv6 geralmente levam a uma resposta ICMP de destino inacessível.
Eu repliquei sua configuração com as etapas que você mencionou e também estava recebendo o mesmo erro “Destino inacessível: sem rota” ao tentar executar ping em ipv6.google.com, mas consegui executar ping em outros sites IPv6, como 'wikipedia.org' com bastante sucesso.
Além disso, para melhor usar VMs com rede IPv6, você pode preferir incorporar o GCPBalanceamento de carga com suporte IPv6.