Mit einer statischen externen IP-Adresse auf externe Ressourcen in einem privaten Netzwerk zugreifen

Auf dieser Seite wird erläutert, wie Sie Ihre privaten Pools für den Zugriff auf externe Ressourcen über eine statische externe IP-Adresse einrichten können.


Klicken Sie auf Anleitung, um die Schritt-für-Schritt-Anleitung für diese Aufgabe direkt in der Google Cloud Console auszuführen:

Anleitung


Hinweise

  • Cloud Build, Compute Engine, and Service Networking APIs aktivieren.

    Aktivieren Sie die APIs

  • Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Engine Network Admin (roles/compute.networkAdmin) für das Cloud-Projekt zu gewähren, in dem sich das VPC-Netzwerk befindet, um die Berechtigungen zu erhalten, die Sie zum Einrichten einer privaten Verbindung benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

  • Wenn Sie gcloud-Befehle auf dieser Seite verwenden möchten, installieren Sie die Google Cloud CLI.

VPC-Netzwerk erstellen

Console

Führen Sie die folgenden Schritte aus, um ein VPC-Netzwerk mit der Google Cloud Console zu erstellen:

  1. Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen, um ein neues Netzwerk zu erstellen.

    Daraufhin wird die Seite VPC-Netzwerk erstellen angezeigt.

  3. Geben Sie einen Namen für das Netzwerk ein.

  4. Wählen Sie unter Modus für Subnetzerstellung die Option Automatisch aus.

  5. Informationen zum Anpassen anderer Felder finden Sie unter VPC-Netzwerke erstellen und verwalten. Andernfalls lassen Sie alle Felder unverändert.

  6. Klicken Sie auf Erstellen, um Ihr VPC-Netzwerk zu erstellen.

    Nachdem Sie auf Erstellen geklickt haben, wird das neue VPC-Netzwerk auf der Seite VPC-Netzwerke angezeigt.

gcloud

Geben Sie zum Erstellen eines VPC-Netzwerk mit dem gcloud-Befehlszeilentool den folgenden Befehl in Ihr Terminal ein, wobei NETWORK_NAME der Name Ihres VPC-Netzwerk ist:

gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto

Nachdem Sie auf Erstellen geklickt haben, wird das neue VPC-Netzwerk auf der Seite VPC-Netzwerke angezeigt.

Weitere Informationen zum Erstellen und Verwalten von VPC-Netzwerken finden Sie unter VPC-Netzwerke erstellen und verwalten.

Private Verbindung erstellen

Console

Führen Sie die folgenden Schritte aus, um eine private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers zu erstellen:

  1. Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf den Namen Ihres Netzwerks.

    Die Seite VPC-Netzwerkdetails wird angezeigt.

  3. Klicken Sie auf den Tab Private Dienstverbindung.

    1. Wählen Sie den Tab Diensten zugewiesene IP-Bereiche aus.

    2. Klicken Sie auf IP-Bereich zuweisen.

      Das Pop-up-Fenster Internen IP-Bereich zuweisen wird angezeigt.

      1. Geben Sie einen Namen für den IP-Bereich ein.

      2. Wählen Sie unter IP-Bereich die Option Automatisch aus.

      3. Geben Sie im Feld Präfixlänge eine Präfixlänge für Ihr Netzwerk ein.

      4. Klicken Sie auf Zuweisen, um den IP-Bereich zuzuweisen.

    3. Wählen Sie den Tab Private Verbindungen zu Diensten aus.

    4. Klicken Sie auf Create Connection.

      Das Pop-up-Fenster Private Verbindung erstellen wird angezeigt.

      1. Wählen Sie unter Zugewiesene Zuweisung Ihren IP-Bereich aus.

      2. Klicken Sie auf Verbinden.

      Sie sehen Ihre Verbindung jetzt in der Tabelle auf dem Tab Private Verbindungen zu Diensten.

      Klicken Sie auf Aktivieren (Benutzerdefinierte Route exportieren), damit die Routen für VPC auf das Netzwerk angewendet werden, in dem Ihre privaten Poolinstanzen ausgeführt werden.

Sie haben jetzt Ihr Netzwerk konfiguriert.

gcloud

Führen Sie die folgenden Schritte aus, um eine private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers zu erstellen:

  1. Geben Sie in Ihrem Terminal den folgenden Befehl ein, um einen IP-Bereich für Ihren Dienst zuzuweisen:

        gcloud compute addresses create RESERVED_RANGE_NAME \
          --global \
          --prefix-length=PREFIX_LENGTH \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Wobei:

    • RESERVED_RANGE_NAME ist der Name des zugewiesenen Bereichs. Beispiel: my-allocated-range.
    • PREFIX_LENGTH ist die Präfixlänge für Ihr Netzwerk. Die Präfixlänge darf höchstens /24 betragen, z. B. /22 oder /21.
    • VPC_NETWORK ist der Name Ihres VPC-Netzwerk, z. B. my-vpc-network.
    • PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.
  2. Geben Sie den folgenden Befehl in Ihrem Terminal ein, um eine private Verbindung zu erstellen:

        gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Wobei:

    • RESERVED_RANGE_NAME ist der Name des zugewiesenen Bereichs, den Sie im vorherigen Schritt erstellt haben.
    • VPC_NETWORK ist der Name Ihres VPC-Netzwerk, z. B. my-vpc-network.
    • PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.
  3. Geben Sie den folgenden Befehl in Ihrem Terminal ein, damit die Routen für das VPC auf das Netzwerk angewendet werden, in dem Ihre privaten Poolinstanzen ausgeführt werden:

        gcloud compute networks peerings update servicenetworking-googleapis-com \
          --export-custom-routes \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Wobei:

    • VPC_NETWORK ist der Name Ihres VPC-Netzwerk, z. B. my-vpc-network.
    • PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.

Sie haben jetzt Ihr Netzwerk konfiguriert.

Weitere Informationen zum Konfigurieren eines Netzwerks finden Sie unter Private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers einrichten.

Privaten Pool erstellen

Console

Führen Sie die folgenden Schritte aus, um einen privaten Pool mit der Google Cloud Console zu erstellen:

  1. Öffnen Sie in der Google Cloud Console die Seite Worker-Pool:

    Zur Seite mit dem Cloud Build-Worker-Pool

  2. Wählen Sie das Projekt aus, in dem Sie den privaten Pool erstellen möchten.

  3. Klicken Sie auf der Seite Worker-Pool auf Erstellen.

    Daraufhin wird das Steuerfeld Privaten Pool erstellen angezeigt.

  4. Geben Sie in der Seitenleiste Privaten Pool erstellen die folgenden Informationen ein:

    1. Geben Sie einen Namen für den privaten Pool ein.

    2. Wählen Sie im Drop-down-Menü eine Region aus.

    3. Geben Sie unter Netzwerk die folgenden Informationen ein:

    • Projekt: Geben Sie Ihre Projekt-ID oder -nummer ein.
    • Netzwerk: Geben Sie den Namen Ihres VPC-Netzwerk ein.
    1. (Optional) Entfernen Sie das Häkchen für Externe IP-Adressen zuweisen für die am stärksten eingeschränkte Netzwerkkonfiguration.

Sie haben jetzt einen privaten Pool erstellt.

gcloud

Geben Sie den folgenden Befehl in Ihr Terminal ein, um mit dem gcloud-Befehlszeilentool einen privaten Pool zu erstellen:

      gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --no-public-egress

Wobei:

  • PRIVATEPOOL_ID ist die eindeutige Kennung Ihres privaten Pools.
  • PRIVATEPOOL_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Sie den privaten Pool erstellen möchten.
  • REGION ist eine der unterstützten Regionen.
  • PEERED_NETWORK ist die URL der Netzwerkressource.
  • --no-public-egress: Wenn dieses Flag festgelegt ist, wird der private Pool ohne externe IP-Adresse erstellt.

Sie haben jetzt einen privaten Pool erstellt.

Weitere Informationen zum Erstellen und Verwalten privater Pools finden Sie unter Private Pools erstellen und verwalten.

Auf externe Ressourcen in einem privaten Netzwerk zugreifen

Standardmäßig sind externe IP-Adressen, die mit privaten Cloud Build-Pools verknüpft sind, nicht statisch oder konfigurierbar. Sie werden von Google Cloud zugewiesen. Wenn Sie Ihre privaten Pools so einrichten möchten, dass sie mit einer statischen externen IP-Adresse auf externe Ressourcen aus Ihrem privaten Netzwerk zugreifen können, müssen Sie in Ihrem Projekt eine virtuelle Maschine (VM) einrichten, die als selbstverwaltetes NAT-Gateway fungiert und Anfragen an das öffentliche Internet weiterleitet. Danach müssen Sie benutzerdefinierte Routen einrichten, um diese Anfragen an Ihre VM weiterzuleiten und dafür zu sorgen, dass Routen mit dem Dienstnetzwerkprojekt ausgetauscht werden.

In diesem Abschnitt wird beschrieben, wie Sie Ihre privaten Pools für den Zugriff auf externe Ressourcen über eine statische externe IP-Adresse einrichten können. Dazu führen Sie die folgenden Schritte aus:

  1. Erstellen Sie ein Startskript zur Konfiguration der VM, um jeglichen an die VM weitergeleiteten Traffic über einen Proxy weiterzuleiten und diesen Traffic so zu maskieren, als käme er von seiner IP-Adresse:

    #! /bin/bash
    set -e
    
    sysctl -w net.ipv4.ip_forward=1
    IFACE=$(ip -brief link | tail -1 | awk  {'print $1'})
    iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
  2. Richten Sie eine VM in derselben VPC wie Ihren privaten Pool ein und erstellen Sie eine Regel, die das Weiterleiten von Anfragen durch die VPC zulässt:

    gcloud compute instances create VM_NAME \
      --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \
      --network=NETWORK_NAME \
      --private-network-ip=INTERNAL_IP --can-ip-forward \
      --zone=ZONE \
      --subnet=SUBNETWORK \
      --tags=NAT_TAG  \
      --metadata-from-file=startup-script=STARTUP_SCRIPT
    

    Wobei:

    • VM_NAME ist der Name, den Sie für die VM angeben möchten.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • INTERNAL_IP ist eine beliebige gültige interne IP-Adresse im Bereich des Subnetzwerks Ihrer VM-Region. Beispiel: 10.128.0.2.
    • ZONE ist die Zone, die Ihrem Netzwerk zugeordnet ist, z. B. us-central1-a.
    • (Optional) SUBNETWORK ist der Name des Subnetzwerks. Den Namen des Subnetzwerks finden Sie in der entsprechenden REST-Anfrage für Ihr Subnetz im folgenden Format: projects/project-id/regions/region/subnetworks/subnetwork-name. Wenn Sie beim Erstellen eines VPC-Netzwerks unter Subnetzverbindungsmodus die Option Automatisch ausgewählt haben, müssen Sie dieses Feld nicht angeben.
    • NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.
    • STARTUP_SCRIPT ist der Name des Startskripts, das Sie im vorherigen Schritt erstellt haben. Beispiel: startup-script-example.sh. In diesem Beispiel wird das Flag --metadata-from-file verwendet, um den Inhalt des von Ihnen angegebenen Startskripts an einen Schlüssel mit dem Namen startup-script zu übergeben.

    Nachdem Sie diesen Befehl ausgeführt haben, wird eine Ausgabe mit dem Wert der externen IP-Adresse angezeigt. Notieren Sie sich den Wert der externen IP-Adresse. Der gesamte Traffic von Ihrem privaten Pool zu Ihrer externen Ressource kommt über diese Adresse. Sie können diese Adresse für eine weitere Konfiguration verwenden, z. B. zum Konfigurieren von Firewallregeln in Ihrem externen Netzwerk.

  3. Richten Sie eine Route ein, um alle Anfragen an die externe Ressource und die im vorherigen Schritt erstellte Instanz weiterzuleiten. So können Ihre Anfragen an Ihre privaten Poolinstanzen weitergeleitet werden:

    gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \
      --destination-range=DESTINATION_RANGE \
      --next-hop-address=INTERNAL_IP \
      --network=NETWORK_NAME \
      --priority=POOL_ROUTE_PRIORITY
    

    Wobei:

    • PRIVATE_POOL_ROUTE_NAME ist der Name, den Sie Ihrer Route geben möchten.
    • DESTINATION_RANGE ist ein gültiger CIDR-Adressbereich, der das Ziel enthält, zu dem Sie weiterleiten möchten. Beispiel: eine GitHub Enterprise Edition-Instanz. Beispiel: 8.8.8.0/24.
    • INTERNAL_IP ist der Wert der internen IP-Adresse aus dem vorherigen Schritt. Beispiel: 10.128.0.2.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • POOL_ROUTE_PRIORITY ist die Prioritätsnummer, die Sie für Ihre Route festlegen möchten.

    Dieser Befehl sorgt dafür, dass der gesamte Traffic von einem Build in einer privaten Poolinstanz an die von Ihnen erstellte Proxy-VM und nicht direkt an das öffentliche Internet weitergeleitet wird.

  4. Richten Sie eine Route ein, um Anfragen von Ihrem Proxy von Ihren getaggten Instanzen an den externen Ziel-IP-Bereich weiterzuleiten. Der folgende Befehl erstellt eine Route zum Weiterleiten von Anfragen an das öffentliche Internet, das mit Ihren privaten Poolinstanzen verknüpft ist.

    gcloud compute routes create NAT_EGRESS_ROUTE_NAME \
      --destination-range=DESTINATION_RANGE \
      --next-hop-gateway=default-internet-gateway \
      --network=NETWORK_NAME \
      --priority=NAT_ROUTE_PRIORITY \
      --tags=NAT_TAG
    

    Wobei:

    • NAT_EGRESS_ROUTE_NAME ist der Name, den Sie der NAT-Gateway-Route geben möchten.
    • DESTINATION_RANGE ist die Adresse des Ziels, zu dem Sie eine Route erstellen möchten. Beispiel: eine GitHub Enterprise Edition-Instanz. Beispiel: 8.8.8.0/24.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.
    • NAT_ROUTE_PRIORITY ist die Prioritätsnummer, die Sie für Ihre Route festlegen möchten.

    Dieser Befehl sorgt dafür, dass jeglicher Traffic von der Proxy-VM an das öffentliche Internet weitergeleitet werden kann.

  5. Fügen Sie eine Firewallregel hinzu, um Traffic von Ihrem privaten Pool zu Ihrer NAT-Gateway-VM zuzulassen:

    gcloud compute firewall-rules create RULE_NAME \
      --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \
      --network=NETWORK_NAME \
      --source-ranges=RESERVED_RANGE \
      --target-tags=NAT_TAG
    

    Wobei:

    • RULE_NAME ist der Name, den Sie Ihrer Firewallregel geben möchten.
    • FIREWALL_PRIORITY ist die Prioritätsnummer, die Sie für Ihre Firewallregel festlegen möchten.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • RESERVED_RANGE ist der CIDR-Bereich, den Sie beim Konfigurieren Ihres VPC-Netzwerks zugewiesen haben.
    • NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.

Sie können jetzt über die statische IP-Adresse des selbstverwalteten NAT-Gateways in Ihrer VPC auf externe Ressourcen zugreifen.

Nächste Schritte