Auf APIs über VMs mit externen IP-Adressen zugreifen

Eine VM-Instanz (Virtual Machine) mit einer externen Netzwerkadresse, die ihrer Netzwerkschnittstelle zugewiesen ist, kann eine Verbindung zu Google APIs und Google-Diensten herstellen, wenn die auf dieser Seite beschriebenen Netzwerkanforderungen erfüllt sind. Obwohl die Verbindung über die externe IP-Adresse der VM hergestellt wird, verbleibt der Traffic innerhalb der Google Cloud und wird nicht über das öffentliche Internet gesendet.

Netzwerkanforderungen

Sie müssen die folgenden Anforderungen für den Zugriff auf Google APIs und Google-Dienste von einer VM mit einer externen IP-Adresse erfüllen:

  • Wenn Sie über IPv6 eine Verbindung zu Google APIs und Google-Diensten herstellen möchten, müssen die beiden folgenden Anforderungen erfüllt sein:

    • Ihre VM muss mit einem externen /96-IPv6-Adressbereich konfiguriert sein.

    • Die auf der VM ausgeführte Software muss Pakete senden, deren Quellen mit einer dieser IPv6-Adressen aus diesem Bereich übereinstimmen.

Zusammenfassung der Konfigurationsoptionen

In der folgenden Tabelle sind die verschiedenen Möglichkeiten zur Konfiguration des privaten Google-Zugriffs zusammengefasst. Ausführliche Informationen zur Konfiguration finden Sie unter Netzwerkkonfiguration.

Domainoption DNS-Konfiguration Routingkonfiguration Firewallkonfiguration
Standarddomains Es ist keine spezielle DNS-Konfiguration erforderlich.

Achten Sie darauf, dass Ihr VPC-Netzwerk Traffic an die IP-Adressbereiche weiterleiten kann, die von Google APIs und Diensten verwendet werden.

  • Grundlegende Konfiguration: Prüfen Sie, ob Sie Standardrouten mit dem nächsten Hop default-internet-gateway und einem Zielbereich von 0.0.0.0/0 (für IPv4-Traffic) und ::/0 (für IPv6-Traffic bei Bedarf) haben. Erstellen Sie diese Routen, falls sie fehlen.
  • Benutzerdefinierte Konfiguration: Erstellen Sie Routen für die IP-Adressbereiche, die von Google APIs und Google-Diensten verwendet werden.

Achten Sie darauf, dass Ihre Firewallregeln ausgehenden Traffic zu den IP-Adressbereichen zulassen, die von Google APIs und Google-Diensten verwendet werden.

Die Standard-Firewallregel für ausgehenden Traffic lässt diesen Traffic zu, wenn er nicht durch eine höhere Priorität blockiert wird.

private.googleapis.com

Konfigurieren Sie DNS-Einträge in einer privaten DNS-Zone, um Anfragen an die folgenden IP-Adressen zu senden:

Für IPv4-Traffic:

  • 199.36.153.8/30

Für IPv4-Traffic:

  • 2600:2d00:0002:2000::/64

Achten Sie darauf, dass Ihr VPC-Netzwerk Routen zu den folgenden IP-Bereichen hat:

Für IPv4-Traffic:

  • 199.36.153.8/30
  • 34.126.0.0/18

Für IPv4-Traffic:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42

Achten Sie darauf, dass Ihre Firewallregeln ausgehenden Traffic zu den folgenden IP-Bereichen zulassen:

Für IPv4-Traffic:

  • 199.36.153.8/30
  • 34.126.0.0/18

Für IPv4-Traffic:

  • 2600:2d00:0002:2000::/64
  • 2001:4860:8040::/42
restricted.googleapis.com

Konfigurieren Sie DNS-Einträge so, dass Anfragen an die folgenden IP-Adressen gesendet werden:

Für IPv4-Traffic:

  • 199.36.153.4/30

Für IPv4-Traffic:

  • 2600:2d00:0002:1000::/64

Achten Sie darauf, dass Ihr VPC-Netzwerk Routen zu den folgenden IP-Bereichen hat:

Für IPv4-Traffic:

  • 199.36.153.4/30
  • 34.126.0.0/18

Für IPv4-Traffic:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Achten Sie darauf, dass Ihre Firewallregeln ausgehenden Traffic zu den folgenden IP-Bereichen zulassen:

Für IPv4-Traffic:

  • 199.36.153.4/30
  • 34.126.0.0/18

Für IPv4-Traffic:

  • 2600:2d00:0002:1000::/64
  • 2001:4860:8040::/42

Netzwerkkonfiguration

In diesem Abschnitt werden die grundlegenden Netzwerkanforderungen beschrieben, die Sie erfüllen müssen, damit eine VM in Ihrem VPC-Netzwerk auf Google APIs und Google-Dienste zugreifen kann.

Domainoptionen

Wählen Sie die Domain aus, die Sie für den Zugriff auf Google APIs und Google-Dienste verwenden möchten.

Die virtuellen IP-Adressen (VIPs) private.googleapis.com und restricted.googleapis.com unterstützen nur HTTP-basierte Protokolle über TCP (HTTP, HTTPS und HTTP/2). Alle anderen Protokolle, einschließlich MQTT und ICMP, werden nicht unterstützt.

Domains und IP-Adressbereiche Unterstützte Dienste Nutzungsbeispiel

Standarddomains.

Alle Domainnamen für Google APIs und Google-Dienste mit Ausnahme von private.googleapis.com und restricted.googleapis.com.

Verschiedene IP-Adressbereiche: Sie können eine Reihe von IP-Bereichen bestimmen, die die möglichen Adressen der Standarddomains enthalten, indem Sie auf IP-Adressen für Standarddomains verweisen.

Aktiviert den API-Zugriff auf die meisten Google APIs und Google-Dienste, unabhängig davon, ob sie von VPC Service Controls unterstützt werden. Umfasst API-Zugriff auf Google Maps, Google Ads und Google Cloud. Umfasst Google Workspace-Webanwendungen wie Gmail und Google Docs sowie andere Webanwendungen.

Wenn Sie keine DNS-Einträge für private.googleapis.com und restricted.googleapis.com konfigurieren, werden die Standarddomains verwendet.

private.googleapis.com

199.36.153.8/30

2600:2d00:0002:2000::/64

Aktiviert den API-Zugriff auf die meisten Google APIs und Google-Dienste, unabhängig davon, ob sie von VPC Service Controls unterstützt werden. Umfasst den API-Zugriff auf Google Maps, Google Ads, Google Cloud und die meisten anderen Google APIs, einschließlich der folgenden Liste. Unterstützt keine Google Workspace-Webanwendungen wie Gmail und Google Docs. Interaktive Websites werden nicht unterstützt.

Domainnamen, die übereinstimmen:

  • accounts.google.com (nur die für die OAuth-Authentifizierung benötigten Pfade)
  • *.aiplatform-notebook.cloud.google.com
  • *.aiplatform-notebook.googleusercontent.com
  • appengine.google.com
  • *.appspot.com
  • *.backupdr.cloud.google.com
  • backupdr.cloud.google.com
  • *.backupdr.googleusercontent.com
  • backupdr.googleusercontent.com
  • *.cloudfunctions.net
  • *.cloudproxy.app
  • *.composer.cloud.google.com
  • *.composer.googleusercontent.com
  • *.datafusion.cloud.google.com
  • *.datafusion.googleusercontent.com
  • *.dataproc.cloud.google.com
  • dataproc.cloud.google.com
  • *.dataproc.googleusercontent.com
  • dataproc.googleusercontent.com
  • dl.google.com
  • gcr.io oder *.gcr.io
  • *.googleapis.com
  • *.gstatic.com
  • *.ltsapis.goog
  • *.notebooks.cloud.google.com
  • *.notebooks.googleusercontent.com
  • packages.cloud.google.com
  • pkg.dev oder *.pkg.dev
  • pki.goog oder *.pki.goog
  • *.run.app
  • source.developers.google.com
  • storage.cloud.google.com

Mit private.googleapis.com können Sie über eine Reihe von IP-Adressen, die nur innerhalb von Google Cloud routingfähig sind, auf Google APIs und Google-Dienste zugreifen.

Wählen Sie unter folgenden Umständen private.googleapis.com aus:

  • Sie verwenden VPC Service Controls nicht.
  • Sie verwenden VPC Service Controls, müssen aber auch auf Google APIs und Google-Dienste zugreifen, die von VPC Service Controls nicht unterstützt werden.1

restricted.googleapis.com

199.36.153.4/30

2600:2d00:0002:1000::/64

Aktiviert den API-Zugriff auf Google APIs und Google-Dienste, die von VPC Service Controls unterstützt werden.

Blockiert den Zugriff auf Google APIs und Google-Dienste, die VPC Service Controls nicht unterstützen. Unterstützt keine Google Workspace APIs oder Google Workspace-Webanwendungen wie Gmail und Google Docs.

Mit restricted.googleapis.com können Sie über eine Reihe von IP-Adressen, die nur innerhalb von Google Cloud routingfähig sind, auf Google APIs und Google-Dienste zugreifen.

Wählen Sie restricted.googleapis.com aus, wenn Sie nur Zugriff auf Google APIs und Google-Dienste benötigen, die von VPC Service Controls unterstützt werden.

Die Domain restricted.googleapis.com erlaubt keinen Zugriff auf Google APIs und Google-Dienste, die VPC Service Controls nicht unterstützen.1

1Hinweis: Wenn Sie Nutzer auf die Google APIs und Google-Dienste beschränken müssen, die VPC Service Controls unterstützen, verwenden Sie restricted.googleapis.com. Obwohl VPC Service Controls unabhängig von der verwendeten Domain für kompatible und konfigurierte Dienste erzwungen wird, bietet restricted.googleapis.com eine zusätzliche Risikominderung bei der Daten-Exfiltration. Die Verwendung von restricted.googleapis.com verweigert den Zugriff auf Google APIs und Google-Dienste, die nicht von VPC Service Controls unterstützt werden. Weitere Informationen finden Sie in der Dokumentation zu VPC Service Controls unter Private Verbindung zu Google APIs und Google-Diensten einrichten.

IPv6-Unterstützung für private.googleapis.com und restricted.googleapis.com

Die folgenden IPv6-Adressbereiche können verwendet werden, um Traffic von IPv6-Clients an Google APIs und Dienste weiterzuleiten:

  • private.googleapis.com: 2600:2d00:0002:2000::/64
  • restricted.googleapis.com: 2600:2d00:0002:1000::/64

Erwägen Sie die Konfiguration der IPv6-Adressen, wenn Sie die Domain private.googleapis.com oder restricted.googleapis.com verwenden möchten, und wenn Sie Clients haben, die IPv6-Adressen verwenden. IPv6-Clients, die auch IPv4-Adressen konfiguriert haben, können mithilfe der IPv4-Adressen Google APIs und Google-Dienste erreichen. Nicht alle Dienste akzeptieren Traffic von IPv6-Clients.

DNS-Konfiguration

Für die Verbindung zu Google APIs und Google-Diensten können Sie Pakete an die IPv4-Adressen senden, die mit der VIP private.googleapis.com oder restricted.googleapis.com verknüpft sind. Zur Verwendung einer VIP müssen Sie DNS so konfigurieren, dass VMs in Ihrem VPC-Netzwerk Anfragen an *.googleapis.com und alle anderen Domains auflösen, auf die Sie zugreifen müssen. Wenn Sie beispielsweise Google Kubernetes Engine (GKE) verwenden, müssen Sie auch *.gcr.io und *.pkg.dev konfigurieren. Wenn Sie Cloud Run verwenden, konfigurieren Sie *.run.app.

Im folgenden Abschnitt wird beschrieben, wie Sie mithilfe von DNS-Zonen Pakete an die IP-Adressen senden, die der ausgewählten VIP zugeordnet sind.

Verwenden Sie beim Konfigurieren von DNS-Einträgen für die VIPs nur die in den folgenden Schritten beschriebenen IP-Adressen. Mischen Sie keine Adressen aus den VIPs von private.googleapis.com und restricted.googleapis.com. Dies kann zu gelegentlichen Fehlern führen, da die angebotenen Dienste je nach Ziel des Pakets unterschiedlich sind.

Erstellen Sie eine DNS-Zone und -Einträge für googleapis.com:

  1. Erstellen Sie eine private DNS-Zone für googleapis.com. Ziehen Sie zu diesem Zweck in Betracht, eine private Cloud DNS-Zone zu erstellen.
  2. Erstellen Sie in der Zone googleapis.com je nach ausgewählter Domain die folgenden DNS-Einträge für entweder private.googleapis.com oder restricted.googleapis.com.

    • Für private.googleapis.com:

      1. Erstellen Sie einen A-Eintrag für private.googleapis.com, der auf die folgenden IP-Adressen verweist: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11

      2. Konfigurieren Sie auch eine AAAA-Verbindung für private.googleapis.com, die auf 2600:2d00:0002:2000:: verweist, um eine Verbindung zu APIs über IPv6-Adressen herzustellen.

    • Für restricted.googleapis.com:

      1. Erstellen Sie einen A-Eintrag für restricted.googleapis.com, der auf die folgenden IP-Adressen verweist: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

      2. Erstellen Sie außerdem einen AAAA-Eintrag für restricted.googleapis.com, der auf 2600:2d00:0002:1000:: verweist, um eine Verbindung zu APIs über IPv6-Adressen herzustellen.

    Wenn Sie Cloud DNS verwenden, fügen Sie die Einträge der privaten Zone googleapis.com hinzu.

  3. Erstellen Sie in der Zone googleapis.com einen CNAME-Eintrag für *.googleapis.com, der auf die von Ihnen konfigurierte Domain verweist: private.googleapis.com oder restricted.googleapis.com.

Einige Google APIs und Google-Dienste werden mit zusätzlichen Domainnamen bereitgestellt, darunter *.gcr.io, *.gstatic.com, *.pkg.dev, pki.goog und *.run.app. In der Tabelle der Domain- und IP-Adressbereiche in den Domainoptionen erfahren Sie, ob die Dienste der zusätzlichen Domain über private.googleapis.com oder restricted.googleapis.com aufgerufen werden können. Gehen Sie anschließend für jede der zusätzlichen Domains so vor:

  1. Erstellen Sie eine DNS-Zone für DOMAIN (z. B. gcr.io). Wenn Sie Cloud DNS verwenden, muss sich diese Zone im selben Projekt wie Ihre private Zone googleapis.com befinden.

  2. Erstellen Sie in der Zone je nach ausgewählter Domain die folgenden DNS-Einträge für entwederprivate.googleapis.com oder restricted.googleapis.com.

    • Für private.googleapis.com:

      1. Erstellen Sie einen A-Eintrag für DOMAIN, der auf die folgenden IP-Adressen verweist: 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11

      2. Erstellen Sie außerdem einen AAAA-Eintrag für DOMAIN, der auf 2600:2d00:0002:2000:: verweist, um eine Verbindung zu APIs über IPv6-Adressen herzustellen.

    • Für restricted.googleapis.com:

      1. Erstellen Sie einen A-Eintrag für DOMAIN, der auf die folgenden IP-Adressen verweist: 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

      2. Erstellen Sie außerdem einen AAAA-Eintrag für restricted.googleapis.com, der auf 2600:2d00:0002:1000:: verweist, um eine Verbindung zu APIs über IPv6-Adressen herzustellen.

  3. Erstellen Sie in der Zone DOMAIN einen CNAME-Eintrag für *.DOMAIN, der auf DOMAIN verweist. Erstellen Sie beispielsweise einen CNAME-Eintrag für *.gcr.io, der auf gcr.io verweist.

Routingoptionen

Ihr VPC-Netzwerk muss geeignete Routen haben, deren nächste Hops das Standard-Internetgateway sind. Google Cloud unterstützt das Routing von Traffic zu Google APIs und Google-Diensten über andere VM-Instanzen oder benutzerdefinierte nächste Hops nicht. Obwohl es als Standard-Internetgateway bezeichnet wird, verbleiben Pakete, die von VMs in Ihrem VPC-Netzwerk an Google APIs und Google-Dienste gesendet werden, im Google-Netzwerk.

  • Wenn Sie die Standarddomains auswählen, stellen Ihre VM-Instanzen über einen Teil der externen IP-Adressen von Google eine Verbindung zu Google APIs und Google-Diensten her. Diese IP-Adressen sind öffentlich routingfähig, aber der Pfad von einer VM in einem VPC-Netzwerk zu diesen Adressen bleibt im Google-Netzwerk.

  • Google veröffentlicht im Internet keine Routen zu IP-Adressen, die von den Domains private.googleapis.com oder restricted.googleapis.com verwendet werden. Daher können nur VMs in einem VPC-Netzwerk oder lokale Systeme, die mit einem VPC-Netzwerk verbunden sind, auf diese Domains zugreifen.

Wenn Ihr VPC-Netzwerk eine Standardroute enthält, deren nächster Hop das Standard-Internetgateway ist, können Sie über diese Route auf Google APIs und Google-Dienste zugreifen, ohne benutzerdefinierte Routen erstellen zu müssen. Weitere Informationen finden Sie unter Routing über eine Standardroute.

Wenn Sie eine Standardroute (Ziel 0.0.0.0/0 oder ::0/0) durch eine benutzerdefinierte Route ersetzt haben, deren nächster Hop nicht das Standard-Internetgateway ist, können Sie die Routinganforderungen für Google APIs und -Dienste stattdessen mit benutzerdefiniertem Routing erfüllen.

Wenn Ihr VPC-Netzwerk keine IPv6-Standardroute hat, haben Sie keine IPv6-Verbindung zu Google APIs und Google-Diensten. Fügen Sie eine IPv6-Standardroute hinzu, um IPv6-Verbindungen zuzulassen.

Routing mit einer Standardroute

Jedes VPC-Netzwerk enthält bei der Erstellung eine IPv4-Standardroute (0.0.0.0/0). Wenn Sie externe IPv6-Adressen in einem Subnetz aktivieren, wird diesem VPC-Netzwerk eine vom System generierte IPv6-Standardroute (::/0) hinzugefügt.

Die Standardrouten stellen einen Pfad zu den IP-Adressen für die folgenden Ziele bereit:

  • Standarddomains

  • private.googleapis.com: 199.36.153.8/30 und 2600:2d00:0002:2000::/64.

  • restricted.googleapis.com: 199.36.153.4/30 und 2600:2d00:0002:1000::/64.

So prüfen Sie die Konfiguration einer Standardroute in einem bestimmten Netzwerk:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Routen auf.

    Zur Seite „Routes“

  2. Filtern Sie die Liste der Routen so, dass nur die Routen für das Netzwerk angezeigt werden, das Sie überprüfen müssen.

  3. Suchen Sie nach einer Route mit dem Ziel 0.0.0.0/0 für IPv4-Traffic oder mit ::/0 für IPv6-Traffic, deren nächster Hop das Standard-Internetgateway ist.

gcloud

Verwenden Sie den folgenden gcloud-Befehl und ersetzen Sie NETWORK_NAME durch den Namen des Netzwerks, das geprüft werden soll:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Informationen zum Erstellen einer Standard-IPv4-Ersatzroute finden Sie unter Statische Route hinzufügen.

Informationen zum Erstellen einer Standard-IPv6-Ersatzroute finden Sie unter IPv6-Standardroute hinzufügen.

Benutzerdefiniertes Routing

Als Alternative zu einer Standardroute können Sie benutzerdefinierte statische Routen verwenden, von denen jede ein spezifischeres Ziel hat und das Standard-Internetgateway als nächsten Hop verwendet. Die Anzahl der benötigten Routen und ihre IP-Zieladressen hängen von der ausgewählten Domain ab.

Außerdem empfehlen wir, Routen für 34.126.0.0/18 und 2001:4860:8040::/42 hinzuzufügen. Weitere Informationen finden Sie unter Zusammenfassung der Konfigurationsoptionen.

Führen Sie die folgenden Schritte aus, um die Konfiguration von benutzerdefinierten Routen für Google APIs und Google-Dienste in einem bestimmten Netzwerk zu prüfen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Routen auf.

    Zur Seite „Routes“

  2. Verwenden Sie das Textfeld Tabelle filtern, um die Liste der Routen anhand der folgenden Kriterien zu filtern. Ersetzen Sie dabei NETWORK_NAME durch den Namen Ihres VPC-Netzwerks.

    • Netzwerk: NETWORK_NAME
    • Nächster Hop-Typ: default internet gateway
  3. Sehen Sie sich für jede Route die Spalte Ziel-IP-Bereich an. Wenn Sie die Standarddomains ausgewählt haben, suchen Sie nach mehreren benutzerdefinierten statischen Routen, eine für jeden von der Standarddomain verwendeten IP-Adressbereich. Wenn Sie private.googleapis.com oder restricted.googleapis.com ausgewählt haben, suchen Sie nach dem IP-Bereich dieser Domain.

gcloud

Verwenden Sie den folgenden gcloud-Befehl und ersetzen Sie NETWORK_NAME durch den Namen des Netzwerks, das geprüft werden soll:

gcloud compute routes list \
    --filter="default-internet-gateway NETWORK_NAME"

Routen werden im Tabellenformat aufgelistet, sofern Sie den Befehl nicht mit dem Flag --format anpassen. Suchen Sie in der Spalte DEST_RANGE nach dem Ziel der einzelnen Routen. Wenn Sie die Standarddomains ausgewählt haben, prüfen Sie mehrere benutzerdefinierte statische Routen, eine für jeden von der Standarddomain verwendeten IP-Adressbereich. Wenn Sie private.googleapis.com oder restricted.googleapis.com ausgewählt haben, suchen Sie nach dem IP-Bereich dieser Domain.

Informationen zum Erstellen von Routen finden Sie unter Statische Route hinzufügen.

Firewallkonfiguration

Die Firewallkonfiguration Ihres VPC-Netzwerks muss den Zugriff von VMs auf die von Google APIs und Google-Diensten verwendeten IP-Adressen zulassen. Die implizierte allow egress-Regel erfüllt diese Anforderung.

In einigen Firewallkonfigurationen müssen Sie bestimmte Regeln zum Zulassen von ausgehendem Traffic erstellen. Angenommen, Sie haben eine Regel zum Ablehnen von ausgehendem Traffic erstellt, die den Traffic zu allen Zielen (0.0.0.0 für IPv4 oder ::/0 für IPv6) blockiert. In diesem Fall müssen Sie eine Firewallregel für ausgehenden Traffic erstellen, deren Priorität höher ist als die Regel für ausgehenden Traffic für jeden von der ausgewählten Domain verwendeten IP-Adressbereich für Google APIs und -Dienste.

Außerdem empfehlen wir, 34.126.0.0/18 und 2001:4860:8040::/42 in Ihre Firewallregel für ausgehenden Traffic aufzunehmen. Weitere Informationen finden Sie unter Zusammenfassung der Konfigurationsoptionen.

Informationen zum Erstellen von Firewallregeln finden Sie unter Firewallregeln erstellen. Sie können die VMs einschränken, auf die die Firewallregeln angewendet werden, wenn Sie das Ziel jeder Regel für ausgehenden Traffic definieren.

IP-Adressen für Standarddomains

In diesem Abschnitt wird beschrieben, wie Sie eine Liste der Standard-Domain-IP-Bereiche erstellen, die von Google APIs und Diensten wie *.googleapis.com und *.gcr.io verwendet werden Diese Bereiche werden dynamisch zugewiesen und ändern sich häufig. Daher ist es nicht möglich, bestimmte IP-Bereiche für einzelne Dienste oder APIs zu definieren. Richten Sie zur Aufrechterhaltung einer genauen Liste die Automatisierung ein, um das Skript täglich auszuführen. Als Alternative zum Verwalten einer Liste von IP-Adressbereichen können Sie die private.googleapis.com VIP oder Private Service Connect verwenden.

  • Google veröffentlicht die vollständige Liste der IP-Bereiche, die Nutzern im Internet zur Verfügung stehen, in goog.json.

  • Außerdem veröffentlicht Google in der Datei cloud.json eine Liste globaler und regionaler externer IP-Adressbereiche, die für die Google Cloud-Ressourcen des Kunden verfügbar sind.

Die von den Standarddomains für Google APIs und Google-Dienste verwendeten IP-Adressen liegen innerhalb der Bereiche, die verbleiben, nachdem die Bereiche aus cloud.json aus denen in goog.json entfernt wurden. Diese Listen werden häufig aktualisiert.

Mit dem folgenden Python-Skript können Sie eine Liste der IP-Adressbereiche erstellen, die die IP-Adressbereiche enthalten, die von den Standarddomains für Google APIs und -Dienste verwendet werden:

Weitere Informationen zum Ausführen dieses Skripts finden Sie unter Ausführung.

from __future__ import print_function

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen
    from urllib.error import HTTPError

import netaddr

IPRANGE_URLS = {
    "goog": "https://www.gstatic.com/ipranges/goog.json",
    "cloud": "https://www.gstatic.com/ipranges/cloud.json",
}

def read_url(url):
    try:
        return json.loads(urlopen(url).read())
    except (IOError, HTTPError):
        print("ERROR: Invalid HTTP response from %s" % url)
    except json.decoder.JSONDecodeError:
        print("ERROR: Could not parse HTTP response from %s" % url)

def get_data(link):
    data = read_url(link)
    if data:
        print("{} published: {}".format(link, data.get("creationTime")))
        cidrs = netaddr.IPSet()
        for e in data["prefixes"]:
            if "ipv4Prefix" in e:
                cidrs.add(e.get("ipv4Prefix"))
            if "ipv6Prefix" in e:
                cidrs.add(e.get("ipv6Prefix"))
        return cidrs

def main():
    cidrs = {group: get_data(link) for group, link in IPRANGE_URLS.items()}
    if len(cidrs) != 2:
        raise ValueError("ERROR: Could process data from Google")
    print("IP ranges for Google APIs and services default domains:")
    for ip in (cidrs["goog"] - cidrs["cloud"]).iter_cidrs():
        print(ip)

if __name__ == "__main__":
    main()