Über eine statische externe IP-Adresse auf externe Ressourcen in einem privaten Netzwerk zugreifen

Auf dieser Seite wird erläutert, wie Sie Ihre privaten Pools so einrichten, dass sie über eine statische externe IP-Adresse auf externe Ressourcen zugreifen können.


Eine detaillierte Anleitung dazu finden Sie direkt in der Google Cloud Console. Klicken Sie dazu einfach auf Anleitung:

Anleitung


Hinweis

  • Aktivieren Sie die Cloud Build API, die Compute Engine API und die Service Networking API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Informationen zum Zuweisen von Rollen.

    APIs aktivieren

  • Bitten Sie Ihren Administrator , Ihnen die IAM-Rolle „Compute Engine-Netzwerkadministrator“ (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 auf dieser Seite gcloud-Befehle 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.

    Die Seite VPC-Netzwerk erstellen wird angezeigt.

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

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

  5. Wenn Sie weitere Felder anpassen möchten, lesen Sie den Artikel VPC-Netzwerke erstellen und verwalten. Andernfalls übernehmen Sie alle Felder unverändert.

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

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

gcloud

Geben Sie im Terminal den folgenden Befehl ein, um ein VPC-Netzwerk mit dem gcloud Befehlszeilentool zu erstellen. Ersetzen Sie dabei NETWORK_NAME durch den Namen Ihres VPC-Netzwerks:

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

Nachdem Sie auf Erstellen geklickt haben, wird Ihr neues VPC-Netzwerk auf der VPC-Netzwerke Seite 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-Adressbereich zuweisen wird angezeigt.

      1. Geben Sie einen Namen für Ihren 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 Ihren IP-Bereich zuzuweisen.

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

    4. Klicken Sie auf Verbindung erstellen.

      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.

      Ihre Verbindung wird jetzt in der Tabelle auf dem Tab Private Verbindungen zu Diensten angezeigt.

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

Sie haben Ihr Netzwerk jetzt 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 im Terminal den folgenden Befehl ein, um einen IP-Bereich für Ihren Dienst zuzuweisen:

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

    Wobei:

    • ALLOCATED_RANGE_NAME ist der Name Ihres zugewiesenen Bereichs. Beispiel: my-allocated-range.
    • PREFIX_LENGTH ist die Präfixlänge für Ihr Netzwerk. Die Präfixlänge muss /24 oder niedriger sein, z. B. /22, /21 usw.
    • VPC_NETWORK ist der Name Ihres VPC-Netzwerk, z. B. my-vpc-network.
    • PROJECT_ID ist die ID Ihres Projekts, das Ihr VPC Netzwerk enthält.
  2. Geben Sie im Terminal den folgenden Befehl ein, um eine private Verbindung zu erstellen:

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

    Wobei:

    • ALLOCATED_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 Ihres Projekts, das Ihr VPC Netzwerk enthält.
  3. Geben Sie im Terminal den folgenden Befehl ein, um sicherzustellen, dass die Routen für 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 Ihres Projekts, das Ihr VPC Netzwerk enthält.

Sie haben Ihr Netzwerk jetzt 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:

    Seite „Cloud Build-Worker-Pool“ öffnen

  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.

    Der Bereich Privaten Pool erstellen wird angezeigt.

  4. Geben Sie in der Privaten Pool erstellen Seitenleiste 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 bei Externe IP-Adressen zuweisen , um die am stärksten eingeschränkte Netzwerkkonfiguration zu verwenden.

Sie haben jetzt einen privaten Pool erstellt.

gcloud

Geben Sie im Terminal den folgenden Befehl ein, um einen privaten Pool mit dem gcloud-Befehlszeilentool 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 für Ihren privaten Pool.
  • 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 Netzwerkressourcen-URL.
  • --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 Cloudzugewiesen. Wenn Sie Ihre privaten Pools so einrichten möchten, dass sie mit einer statischen externen IP-Adresse von Ihrem privaten Netzwerk aus auf externe Ressourcen zugreifen können, müssen Sie eine virtuelle Maschine (VM) in Ihrem Projekt einrichten, die als selbstverwaltetes NAT-Gateway fungiert, um Anfragen an das öffentliche Internet weiterzuleiten. Anschließend müssen Sie benutzerdefinierte Routen einrichten, um diese Anfragen an Ihre VM weiterzuleiten, damit Routen mit dem Projekt für die Dienstvernetzung ausgetauscht werden.

In diesem Abschnitt wird beschrieben, wie Sie Ihre privaten Pools so einrichten, dass sie über eine statische externe IP-Adresse auf externe Ressourcen zugreifen können. Führen Sie dazu die folgenden Schritte aus:

  1. Erstellen Sie ein Startskript, um die VM so zu konfigurieren, dass sie jeden Traffic weiterleitet, der an die VM gesendet wird, und diesen Traffic so maskiert, dass er von ihrer IP-Adresse stammt:

    #! /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 mit einer Regel ein, die das Weiterleiten von Anfragen über 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 Ihrer VM geben möchten.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • INTERNAL_IP ist eine gültige interne IP-Adresse im Bereich des Subnetzes Ihrer VM-Region. Beispiel: 10.128.0.2.
    • ZONE ist die Zone, die mit Ihrem Netzwerk verknüpft ist, z. B. us-central1-a.
    • (Optional) SUBNETWORK ist der Name Ihres Subnetzes. Der Name Ihres Subnetzes finden Sie in der entsprechenden REST-Darstellung für Ihr Subnetz im folgenden Format: projects/project-id/regions/region/subnetworks/subnetwork-name. Wenn Sie beim Erstellen eines VPC-Netzwerks unter Modus für Subnetzverbindung 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 angegebenen Startskripts an einen Schlüssel namens 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 wird über diese Adresse geleitet. Sie können diese Adresse für weitere Konfigurationen verwenden, z. B. zum Konfigurieren von Firewallregeln in Ihrem externen Netzwerk.

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

    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 die interne IP-Adresse, die Sie im vorherigen Schritt erhalten haben. 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 angeben 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 weitergeleitet wird und nicht direkt an das öffentliche Internet.

  4. Richten Sie eine Route ein, um Anfragen von Ihrem Proxy von Ihren getaggten Instanzen an den externen Ziel-IP-Bereich weiterzuleiten. Mit dem folgenden Befehl wird eine Route erstellt, um Anfragen an das öffentliche Internet weiterzuleiten, 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 Ihrer NAT-Gateway-Route geben möchten.
    • DESTINATION_RANGE ist die Adresse des Ziels, zu dem Sie weiterleiten 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 angeben möchten.

    Dieser Befehl sorgt dafür, dass der gesamte 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=ALLOCATED_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 angeben möchten.
    • NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
    • ALLOCATED_RANGE ist der CIDR-Bereich, den Sie zugewiesen haben, als Sie Ihre private Dienstverbindung 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.

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

Nächste Schritte