Ausgehende Dienste wie die URL Fetch API, die Sockets API und die Mail API verwenden einen großen Pool von IP-Adressen. Die IP-Adressbereiche in diesem Pool unterliegen regelmäßigen Änderungen. Bei zwei aufeinanderfolgenden API-Aufrufen derselben Anwendung kann beispielsweise der Eindruck entstehen, sie stammten von zwei verschiedenen IP-Adressen.
Wenn Sie die IP-Adressen kennen müssen, die mit dem ausgehenden Traffic von Ihrem Dienst verknüpft sind, können Sie entweder die aktuellen IP-Adressbereiche für Ihren Dienst ermitteln oder eine statische IP-Adresse für Ihren Dienst einrichten.
IP-Adressen für App Engine-Dienste
Sie können die aktuellen IP-Adressbereiche für Ihre App Engine-Dienste anhand der von Google veröffentlichten IP-Bereichsinformationen ermitteln:
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 Google APIs und Diensten 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 von Google APIs und Diensten verwendeten enthalten.
Weitere Informationen zum Ausführen dieses Skripts finden Sie unter Ausführung.
Statische ausgehende IP-Adresse einrichten
Verwenden Sie zum Einrichten einer statischen IP-Adresse für den Dienst der App Engine-Standardumgebung den serverlosen VPC-Zugriff mit Cloud Router und Cloud NAT. Mit dem serverlosen VPC-Zugriff können Sie ausgehenden Traffic an Ihr VPC-Netzwerk (Virtual Private Cloud) senden. Wenn Sie ein NAT-Gateway (Network Address Translation) in Ihrer VPC verwenden, können Sie den App Engine-Traffic über eine dedizierte IP-Adresse weiterleiten.
Wenn Sie den Traffic über Cloud NAT weiterleiten, wird kein zusätzlicher Hop im Netzwerk-Stack verursacht, da das Cloud NAT-Gateway und der Cloud Router nur eine Steuerungsebene bieten und die Pakete nicht durch das NAT-Gateway oder den Cloud Router weitergeleitet werden.
Statische ausgehende IP-Adressen können nicht für Traffic konfiguriert werden, der über den URL-Abrufdienst gesendet wird. Traffic, der mit dem URL-Abrufdienst gesendet wird, verwendet weiterhin den öffentlichen IP-Adresspool. Wenn für den gesamten ausgehenden Traffic eine statische IP-Adresse verwendet werden soll, deaktivieren Sie die Verwendung von URLFetchService
.
In den folgenden Schritten wird gezeigt, wie Sie eine statische ausgehende IP-Adresse für Ihren Dienst der App Engine-Standardumgebung einrichten.
Prüfen Sie, ob Sie die Rolle roles/compute.networkAdmin oder eine benutzerdefinierte Rolle mit denselben Berechtigungen haben.
Erstellen Sie ein Subnetzwerk (Subnetz) in Ihrem VPC-Netzwerk für App Engine-Traffic. Dadurch wird vermieden, dass andere Ressourcen in Ihrem VPC-Netzwerk die statische IP-Adresse verwenden können.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
SUBNET_NAME
durch einen Namen, den Sie dem Subnetz geben möchtenRANGE
durch den IP-Bereich im CIDR-Format, den Sie diesem Subnetz zuweisen möchten (z. B.10.124.0.0/28
).NETWORK_NAME
durch den Namen Ihres VPC-Netzwerks.REGION
durch die Region Ihres App Engine-Dienstes.
Verbinden Sie den App Engine-Dienst mit dem Subnetz.
Folgen Sie der Anleitung Verbindung zu einem VPC-Netzwerk herstellen und geben Sie den Namen des Subnetzes an, das Sie im vorherigen Schritt für das Connector-Subnetz erstellt haben.
Erstellen Sie einen neuen Cloud Router. Cloud Router ist eine erforderliche Komponente der Steuerungsebene für Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
ROUTER_NAME
durch einen Namen für die Cloud Router-Ressource, die Sie erstellen möchten.NETWORK_NAME
durch den Namen Ihres VPC-Netzwerks.REGION
durch die Region, in der Sie ein NAT-Gateway erstellen möchten.
Reservieren Sie eine statische IP-Adresse.
Dies ist die Adresse, mit der Ihr Dienst ausgehenden Traffic sendet. Eine reservierte IP-Adressressource behält die zugrunde liegende IP-Adresse bei, wenn die ihr zugeordnete Ressource gelöscht und neu erstellt wird. Diese IP-Adresse wird auf die statischen IP-Adresskontingente in Ihrem Google Cloud-Projekt angerechnet.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
ORIGIN_IP_NAME
durch den Namen, den Sie der IP-Adressressource zuweisen möchten.REGION
durch die Region, in der der Cloud NAT-Router ausgeführt wird. Idealerweise sollten Sie dieselbe Region wie der App Engine-Dienst verwenden, um Latenz und Netzwerkkosten zu minimieren.
Verwenden Sie den Befehl
compute addresses describe
, um das Ergebnis anzeigen zu lassen:gcloud compute addresses describe ORIGIN_IP_NAME
Erstellen Sie ein Cloud NAT-Gateway und geben Sie Ihre IP-Adresse an.
Traffic aus Ihrem Subnetz wird über dieses Gateway geleitet und verwendet die statische IP-Adresse, die Sie im vorherigen Schritt reserviert haben.
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Ersetzen Sie im obigen Befehl Folgendes:
NAT_NAME
durch einen Namen für die Cloud NAT-Gateway-Ressource, die Sie erstellen möchten.ROUTER_NAME
durch den Namen Ihres Cloud Routers.REGION
durch die Region, in der Sie ein NAT-Gateway erstellen möchten.ORIGIN_IP_NAME
durch den Namen der reservierten IP-Adressressource, die Sie im vorherigen Schritt erstellt haben.
Legen Sie die Einstellung für ausgehenden Traffic für den serverlosen VPC-Zugriff auf
all-traffic
fest.Standardmäßig senden App Engine-Dienste, die den serverlosen VPC-Zugriff verwenden, nur internen Traffic an Ihr VPC-Netzwerk. Wenn Sie Traffic mit externen Zielen an Ihr VPC-Netzwerk senden möchten, damit es die von Ihnen angegebene statische IP-Adresse hat, müssen Sie die Einstellung für ausgehenden Traffic ändern.
Geben Sie die Einstellung für ausgehenden Traffic in der Datei
appengine-web.xml
für Ihren Dienst an:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector>
Ersetzen Sie:
PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.REGION
durch die Region, in der sich der Connector befindet.CONNECTOR_NAME
durch den Namen des Connectors.
Stellen Sie den Dienst bereit:
gcloud app deploy WEB-INF/appengine-web.xml