DNS-Bindungen konfigurieren

Auf dieser Seite wird beschrieben, wie Sie DNS-Bindungen für Standard-VMware Engine-Netzwerke konfigurieren.

In jeder privaten Cloud wird ein Cloud DNS-Server bereitgestellt, der für die Auflösung aller Verwaltungs-Appliances verwendet wird. Sie können diesen Server als DNS-Server für alle VMware-Arbeitslasten konfigurieren, indem Sie DNS-Bindungen einrichten. Dazu müssen Sie Folgendes tun:

  1. IP-Adresse des DNS-Servers der Private Cloud abrufen
  2. DNS-Bindungsberechtigungen einrichten, damit ein Nutzer-Principal an die Intranet-VPC gebunden werden kann
  3. DNS für Ihre VMware-Arbeitslasten oder die DHCP-DNS-Einstellung des NSX-Segments konfigurieren

Hinweis

Sie können DNS-Bindungen nur mit dem gcloud-Tool oder der API konfigurieren.

gcloud- und API-Anforderungen

Wenn Sie das gcloud-Befehlszeilentool oder die API zum Verwalten Ihrer VMware Engine-Ressourcen verwenden möchten, empfehlen wir, die Tools wie unten beschrieben zu konfigurieren.

gcloud

  1. Legen Sie Ihre standardmäßige Projekt-ID fest:

    gcloud config set project PROJECT_ID
    
  2. Legen Sie eine Standardregion und -zone fest:

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

Weitere Informationen zum Tool gcloud vmware finden Sie in der Cloud SDK-Referenzdokumentation.

API

In den API-Beispielen in dieser Dokumentation wird das cURL-Befehlszeilentool verwendet, um die API abzufragen. Für die cURL-Anfrage ist ein gültiges Zugriffstoken erforderlich. Es gibt viele Möglichkeiten, ein gültiges Zugriffstoken zu erhalten. In den folgenden Schritten wird das Tool gcloud verwendet, um ein Zugriffstoken zu generieren:

  1. Bei Google Cloudanmelden:

    gcloud auth login
    
  2. Zugriffstoken generieren und in TOKEN exportieren:

    export TOKEN=`gcloud auth print-access-token`
    
  3. Prüfen Sie, ob TOKEN richtig festgelegt ist:

    echo $TOKEN
    

Verwenden Sie das Autorisierungstoken nun in Ihren Anfragen an die API. Beispiel:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

In den Python-Codebeispielen in dieser Dokumentation wird die VMware Engine-Bibliothek verwendet, um mit der API zu kommunizieren. Damit Sie diesen Ansatz verwenden können, muss die Bibliothek installiert und die Standardanmeldedaten für Anwendungen konfiguriert sein.

  1. Laden Sie die Python-Bibliothek herunter und installieren Sie sie:

    pip install google-cloud-vmwareengine
    
  2. Konfigurieren Sie die ADC-Informationen, indem Sie die folgenden Befehle in Ihrer Shell ausführen:

    gcloud auth application-default login
    

    Oder verwenden Sie eine Dienstkonto-Schlüsseldatei:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Weitere Informationen zur Bibliothek finden Sie auf der Referenzseite oder in den Codebeispielen auf GitHub.

IP-Adresse des DNS-Servers für eine Arbeitslast in der privaten Cloud abrufen

Console

So rufen Sie die IP-Adresse des DNS-Servers Ihrer Private Cloud ab:

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

    Zu „Private Clouds“

  2. Klicken Sie auf Projekt auswählen und wählen Sie dann die Organisation, den Ordner oder das Projekt aus, das die private Cloud enthält, mit der Sie eine Verbindung herstellen möchten.

  3. Klicken Sie auf den Namen der privaten Cloud.

  4. Klicken Sie auf der Seite Zusammenfassung für die Private Cloud unter Private Cloud-DNS-Server auf Kopieren, um die IP-Adresse des Private Cloud-DNS-Servers zu kopieren.

gcloud

Wenn Sie die IP-Adresse des DNS-Servers Ihrer privaten Cloud mit der Google Cloud CLI abrufen möchten, verwenden Sie den Befehl gcloud vmware private-clouds describe:

 gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \
  --project=PROJECT_ID \
  --location=REGION

Ersetzen Sie Folgendes:

  • PRIVATE_CLOUD_ID: Der Name der privaten Cloud für diese Anfrage
  • PROJECT_ID ist die Projekt-ID für diese Anfrage.
  • REGION: die Region der privaten Cloud. Wenn es sich um eine erweiterte private Cloud handelt, geben Sie die Zone für diese private Cloud an.

API

So rufen Sie die IP-Adresse des DNS-Servers Ihrer privaten Cloud mit der VMware Engine API ab:GET

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die Projekt-ID für diese Anfrage.
  • REGION: Die Region der privaten Cloud. Wenn es sich um eine erweiterte private Cloud handelt, geben Sie die Zone für diese private Cloud an.
  • PRIVATE_CLOUD_ID: Der Name der privaten Cloud für diese Anfrage.

DNS-Bind-Berechtigungen einrichten

Sie können DNS-Bindungsberechtigungen nur mit dem Tool gcloud oder direkt über die REST API einrichten und verwalten. Es ist nicht möglich, Bindungen über die Konsole einzurichten.

DNS-Bind-Berechtigung gewähren

Damit ein Nutzer DNS-Bindungen konfigurieren kann, müssen Sie einem Nutzer-Principal die Berechtigung zum Binden an die Intranet-VPC gewähren. In diesem Fall ist ein Nutzer-Principal die E-Mail-Adresse des Nutzers, der die private DNS-Zone mit der Intranet-VPC verknüpft.

gcloud

gcloud vmware dns-bind-permission grant \
  --user=USER \
  --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • USER: Die E-Mail-Adresse des Nutzers, der die private DNS-Zone mit der Intranet-VPC verknüpfen wird, z. B. example1@gmail.com.
  • PROJECT_ID ist die Projekt-ID für diese Anfrage.

API

Stellen Sie eine POST-Anfrage an die Methode dnsBindPermissions:grant und geben Sie die E-Mail-Adresse des Nutzers im Anfragetext an.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d '
{
"principal": {
  "user": "USER"
}
}'

Ersetzen Sie Folgendes:

  • PROJECT_ID: Das Projekt für diese Anfrage.
  • USER: die E-Mail-Adresse des Nutzers, für den Sie Berechtigungen widerrufen möchten. Beispiel: example1@gmail.com.

DNS-Bind-Berechtigung widerrufen

Widerruft die DNS-Bind-Berechtigung, die dem Nutzer zuvor erteilt wurde.

gcloud

gcloud vmware dns-bind-permission revoke \
  --user=USER \
  --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • USER: Die E-Mail-Adresse des Nutzers, für den Sie Berechtigungen widerrufen möchten, z. B. example1@gmail.com
  • PROJECT_ID ist die Projekt-ID für diese Anfrage.

API

Stellen Sie eine POST-Anfrage an dnsBindPermissions:revoke und geben Sie die E-Mail-Adresse des Nutzers im Anfragetext an.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d '
{
"principal": {
  "user": "USER"
}
}'

Ersetzen Sie Folgendes:

  • PROJECT_ID: Das Projekt für diese Anfrage.
  • USER: die E-Mail-Adresse des Nutzers, für den Sie Berechtigungen widerrufen möchten. Beispiel: example1@gmail.com.

Berechtigung „DNS BIND“ beschreiben

Beschreibt die DNS-Bindungsberechtigungen für ein Projekt und welcher Nutzer-Principal Zugriff zum Konfigurieren von DNS-Bindungen hat.

gcloud

gcloud vmware dns-bind-permission describe \
--project=PROJECT_ID

Ersetzen Sie PROJECT_ID durch die Projekt-ID für diese Anfrage.

API

Stellen Sie eine GET-Anfrage an die dnsBindPermissions-Ressource.

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission

Ersetzen Sie PROJECT_ID durch das Projekt für diese Anfrage.

Private Cloud DNS-Zone an die Intranet-VPC des VMware Engine-Netzwerks binden

Sobald Sie einem Nutzer-Principal die Berechtigungen zum Konfigurieren von DNS-Bindungen gewähren, kann der Nutzer eine Bindung zwischen der privaten DNS-Zone in Cloud DNS und dem Intranet-VPC des VMware Engine-Netzwerks erstellen. VMware Engine verwendet DNS-Peering, um die Cloud DNS-Auflösung zu ermöglichen.

URL des Intranet-VPC-Netzwerks finden

Sie benötigen die VPC-URL des Intranetnetzwerks, um die neue Bindung zu erstellen. Die Intranet-VPC des VMware Engine-Netzwerks finden Sie, indem Sie die Details des VMware Engine-Netzwerks auflisten.

Console

So finden Sie die Intranet-VPC-URL über die Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite VMware Engine-Netzwerke auf.

    Zu VMware Engine-Netzwerken

  2. Klicken Sie auf Projekt auswählen und wählen Sie dann die Organisation, den Ordner oder das Projekt aus, das das VMware Engine-Netzwerk enthält.

  3. Suchen Sie das VMware Engine-Netzwerk, klicken Sie auf die Option Aktion und wählen Sie URL des Intranet-VPC-Netzwerks kopieren aus.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK \
--project=PROJECT_ID

Ersetzen Sie Folgendes:

  • VMWARE_ENGINE_NETWORK: das zu beschreibende Netzwerk
  • PROJECT_ID ist die Projekt-ID für diese Anfrage.

API

Stellen Sie eine GET-Anfrage an die vmwareEngineNetworks-Ressource und geben Sie den Namen des Netzwerks an:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt für diese Anfrage
  • NETWORK_ID: das zu beschreibende Netzwerk

Bindung

Der vorgesehene Workflow nach der Konfiguration der Bind-Berechtigungen besteht darin, jeder Zone ein DNS-Peering zum VMware Engine-Netzwerk-Intranet-VPC in Ihren Standardprozess für die Verwaltung von Cloud DNS-Zonen hinzuzufügen.

gcloud

gcloud dns managed-zones create peering-DOMAIN  \
--dns-name="DOMAIN" \
--visibility="private" \
--networks="INTRANET_VPC_URL" \
--target-project="PROJECT_ID" \
--target-network="EXISTING_VPC" \
--description="DESCRIPTION"

Ersetzen Sie Folgendes:

  • DOMAIN: Die Domain, die erweitert werden soll, z. B. zone1.example.com
  • INTRANET_VPC_URL: die Intranet-VPC-URL für das VMware Engine-Netzwerk
  • EXISTING_VPC: die URL des vorhandenen VPC-Netzwerks, an das die DOMAIN bereits gebunden ist
  • PROJECT_ID ist die Projekt-ID für diese Anfrage.

API

Stellen Sie eine PATCH-Anfrage an die managedZones-Ressource und geben Sie den Namen der Zone an:

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{
"name": "peering-DOMAIN",          
"description": "",
"dnsName": DOMAIN,
"peeringConfig": {
    "targetNetwork": {
        "networkUrl": EXISTING_VPC
    }
  },
  "privateVisibilityConfig": {
    "networks": [
      {
        "networkUrl": INTRANET_VPC_URL
      }
    ]
  }  
}"

Ersetzen Sie Folgendes:

  • PROJECT_ID ist die Projekt-ID für diese Anfrage.
  • DOMAIN: Die Domain, die erweitert werden soll, z. B. zone1.example.com
  • INTRANET_VPC_URL: Die Intranet-VPC-URL für das VMware Engine-Netzwerk.
  • EXISTING_VPC: die URL des vorhandenen VPC-Netzwerks, an das DOMAIN bereits gebunden ist

Beispiel für DNS-Bindungen

Im Folgenden finden Sie einige Beispiele für DNS-Bindungen, die Sie verwenden können.

autoritativ

gcloud dns managed-zones create zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --description="DESCRIPTION" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Bedingte Weiterleitung

gcloud dns managed-zones create zone1 \
  --description="DESCRIPTION" \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks=EXISTING_VPC \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Alle weiterleiten

gcloud dns managed-zones create forward-all \
  --description="" --dns-name="." \
  --visibility="private" \
  --networks="EXISTING_VPC" \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \
  --dns-name="." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Google API Private

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis  \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="private.googleapis.com."

Google API eingeschränkt

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="restricted.googleapis.com."