
Ich versuche, eine einfache VM in Google Cloud Platform einzurichten, die ipv6.google.com erfolgreich anpingen kann. Ich verwende diese GCP-Dokumente zur IPv6-Unterstützung, darunter:
- 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
[HINWEIS: Bearbeitet/aktualisiert, um alle verwendeten Befehle bereitzustellen]
Hier ist mein einfacher und wiederholbarer Proof of Concept:
- Erstellen Sie innerhalb eines Projekts ein VPC-Netzwerk
$ gcloud config set project my-test-project
$ gcloud compute networks create targetnet \
--subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
- Subnetz mit IPv6-Unterstützung erstellen
$ 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
- Erstellen einer Instanz mit IPv6-Unterstützung
$ 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
- Fügen Sie eine Firewall-Regel hinzu, um SSH-Zugriff auf die Instanz zu gewähren
$ gcloud compute firewall-rules create target-ssh-home \
--network targetnet --allow tcp:22 --source-ranges <my IPv4 addr>
- Stellen Sie per SSH eine Verbindung zur Instanz her und sehen Sie sich die Netzwerkadressen und die Route an:
$ 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
- Versuchen Sie, eine externe IPv6-Ressource anzupingen:
$ 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
Die Dokumente geben an, dass die Firewall-Standardeinstellungen ausgehendes ICMP zulassen sollten. Trotzdem habe ich auch versucht, Firewall-Regeln hinzuzufügen, um ICMP (und alle anderen) Dienste in verschiedenen Formen zuzulassen, um zu sehen, ob das hilft. Das hat das Ergebnis nicht geändert. Außerdem habe ich bestätigt, dass GCP eine Standard-IPv6-Route für das Netzwerk hinzugefügt hat. (::/0).
Laut Dokumentation soll GCP /64 bereitstellen und der Netzwerkkarte die erste Adresse aus diesem Bereich zuweisen. Das sehe ich hier nicht. Muss ich auf dem Host etwas tun, um das zu erreichen? Oder habe ich etwas übersehen, das in GCP benötigt wird?
Antwort1
Die Verbindung zu Google-APIs und -Diensten von VPCs über externe IPv6-Adressen wird derzeit nicht unterstützt. Versuche, „ipv6.google.com“ von Cloud VM über IPv6 anzupingen, führen häufig zu einer ICMP-Antwort „Ziel nicht erreichbar“.
Ich habe Ihr Setup mit den von Ihnen genannten Schritten repliziert und erhielt beim Versuch, ipv6.google.com anzupingen, ebenfalls den gleichen Fehler „Ziel nicht erreichbar: Keine Route“, konnte jedoch andere IPv6-Sites wie „wikipedia.org“ recht erfolgreich anpingen.
Um VMs mit IPv6-Netzwerk optimal zu nutzen, können Sie außerdem GCP integrieren.Lastenausgleich mit IPv6-Unterstützung.