Mengakses resource eksternal di jaringan pribadi menggunakan IP eksternal statis

Halaman ini menjelaskan cara menyiapkan kumpulan pribadi untuk mengakses resource eksternal melalui IP eksternal statis.


Untuk mengikuti panduan langkah demi langkah untuk tugas ini langsung di Google Cloud konsol, klik Pandu saya:

Pandu saya


Sebelum memulai

  • Aktifkan Cloud Build API, Compute Engine API, dan Service Networking API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Aktifkan API

  • Untuk mendapatkan izin yang diperlukan untuk menyiapkan koneksi pribadi, minta administrator untuk memberi Anda peran IAM Compute Engine Network Admin (roles/compute.networkAdmin) di project Cloud tempat jaringan VPC berada. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

  • Untuk menggunakan gcloud perintah di halaman ini, instal Google Cloud CLI.

Membuat jaringan VPC

Konsol

Untuk membuat jaringan VPC menggunakan Google Cloud konsol, selesaikan langkah-langkah berikut:

  1. Buka halaman VPC networks di Google Cloud konsol.

    Buka VPC networks

  2. Klik Create VPC network untuk membuat jaringan baru.

    Anda akan melihat halaman Create a VPC network.

  3. Masukkan Name untuk jaringan Anda.

  4. Di bagian Subnet creation mode, pilih Automatic.

  5. Jika Anda ingin menyesuaikan kolom lainnya lebih lanjut, lihat Membuat dan mengelola jaringan VPC. Jika tidak, biarkan semua kolom apa adanya.

  6. Klik Create untuk membuat jaringan VPC Anda.

    Setelah mengklik Create, Anda akan melihat jaringan VPC baru di halaman VPC networks.

gcloud

Untuk membuat jaringan VPC menggunakan alat command line gcloud, masukkan perintah berikut di terminal Anda dengan NETWORK_NAME adalah nama jaringan VPC Anda:

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

Setelah mengklik Create, Anda akan melihat jaringan VPC baru di halaman VPC networks.

Untuk mempelajari lebih lanjut cara membuat dan mengelola jaringan VPC, lihat Membuat dan mengelola jaringan VPC.

Membuat koneksi pribadi

Konsol

Untuk membuat koneksi pribadi antara jaringan VPC dan jaringan produsen layanan, selesaikan langkah-langkah berikut:

  1. Buka halaman VPC networks di Google Cloud konsol.

    Buka VPC networks

  2. Klik nama jaringan Anda.

    Anda akan melihat halaman VPC network details.

  3. Klik tab Private Service Connection.

    1. Pilih tab Allocated IP ranges for services.

    2. Klik Allocate IP range.

      Anda akan melihat kotak pop-up Allocate an internal IP range.

      1. Masukkan Name untuk rentang IP Anda.

      2. Di bagian IP Range, pilih Automatic.

      3. Di kolom Prefix length, masukkan panjang awalan untuk jaringan Anda.

      4. Klik Allocate untuk mengalokasikan rentang IP Anda.

    3. Pilih tab Private Connections to Services.

    4. Klik Create Connection.

      Anda akan melihat pop-up Create a private connection.

      1. Di bagian Assigned allocation, pilih rentang IP Anda.

      2. Klik Connect.

      Anda akan melihat koneksi di tabel pada tab Private Connections to Services.

      Klik Enable (Ekspor rute kustom) untuk memastikan rute untuk VPC diterapkan ke jaringan tempat instance kumpulan pribadi Anda berjalan.

Anda telah mengonfigurasi jaringan.

gcloud

Untuk membuat koneksi pribadi antara jaringan VPC dan jaringan produsen layanan, selesaikan langkah-langkah berikut:

  1. Masukkan perintah berikut di terminal Anda untuk mengalokasikan rentang IP untuk layanan Anda:

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

    Dengan:

    • RESERVED_RANGE_NAME adalah nama rentang yang dialokasikan. Misalnya, my-allocated-range.
    • PREFIX_LENGTH adalah panjang awalan untuk jaringan Anda. Panjang awalan harus /24 atau lebih rendah, seperti /22, /21, dll.
    • VPC_NETWORK adalah nama jaringan VPC Anda, seperti my-vpc-network.
    • PROJECT_ID adalah ID project yang berisi jaringan VPC Anda.
  2. Masukkan perintah berikut di terminal Anda untuk membuat koneksi pribadi:

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

    Dengan:

    • RESERVED_RANGE_NAME adalah nama rentang yang dialokasikan yang Anda buat pada langkah sebelumnya.
    • VPC_NETWORK adalah nama jaringan VPC Anda, seperti my-vpc-network.
    • PROJECT_ID adalah ID project yang berisi jaringan VPC Anda.
  3. Masukkan perintah berikut di terminal Anda untuk memastikan rute untuk VPC diterapkan ke jaringan tempat instance kumpulan pribadi Anda berjalan:

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

    Dengan:

    • VPC_NETWORK adalah nama jaringan VPC Anda, seperti my-vpc-network.
    • PROJECT_ID adalah ID project yang berisi jaringan VPC Anda.

Anda telah mengonfigurasi jaringan.

Untuk mempelajari lebih lanjut cara mengonfigurasi jaringan, lihat Menyiapkan koneksi pribadi antara jaringan VPC dan jaringan produsen layanan.

Membuat kumpulan pribadi

Konsol

Untuk membuat kumpulan pribadi menggunakan konsol, selesaikan langkah-langkah berikut: Google Cloud

  1. Buka halaman Worker Pool di Google Cloud konsol:

    Buka halaman Worker pool Cloud Build

  2. Pilih project tempat Anda ingin membuat kumpulan pribadi.

  3. Di halaman Worker pool, klik Create.

    Anda akan melihat panel Create private pool.

  4. Di panel samping Create private pool, masukkan informasi berikut:

    1. Masukkan Name untuk kumpulan pribadi Anda.

    2. Pilih Region dari menu drop-down.

    3. Di bagian Network, masukkan informasi berikut:

    • Project: Masukkan ID atau nomor project Anda.
    • Network: Masukkan nama jaringan VPC Anda.
    1. (Opsional) Hapus centang kotak Assign external IPs untuk konfigurasi jaringan yang paling dibatasi.

Anda telah membuat kumpulan pribadi.

gcloud

Untuk membuat kumpulan pribadi menggunakan alat command line gcloud, masukkan perintah berikut di terminal Anda:

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

Dengan:

  • PRIVATEPOOL_ID adalah ID unik untuk kumpulan pribadi Anda.
  • PRIVATEPOOL_PROJECT_ID adalah ID Google Cloud project tempat Anda ingin membuat kumpulan pribadi.
  • REGION adalah salah satu region yang didukung.
  • PEERED_NETWORK adalah URL resource jaringan
  • --no-public-egress: Jika flag ini ditetapkan, kumpulan pribadi akan dibuat tanpa alamat IP eksternal.

Anda telah membuat kumpulan pribadi.

Untuk mempelajari lebih lanjut cara membuat dan mengelola kumpulan pribadi, lihat Membuat dan mengelola kumpulan pribadi.

Mengakses resource eksternal di jaringan pribadi

Secara default, alamat IP eksternal yang terkait dengan kumpulan pribadi Cloud Build tidak bersifat statis atau dapat dikonfigurasi. Alamat IP tersebut ditetapkan oleh Google Cloud. Jika ingin menyiapkan kumpulan pribadi untuk mengakses resource eksternal dari jaringan pribadi dengan IP eksternal statis, Anda harus menyiapkan mesin virtual (VM) di project untuk bertindak sebagai gateway NAT yang dikelola sendiri untuk memproxy permintaan ke internet publik. Setelah itu, Anda harus menyiapkan rute kustom untuk meneruskan permintaan ini ke VM guna memastikan rute ditukar dengan project jaringan layanan.

Bagian ini menjelaskan cara menyiapkan kumpulan pribadi untuk mengakses resource eksternal melalui IP eksternal statis dengan menyelesaikan langkah-langkah berikut:

  1. Buat skrip startup untuk mengonfigurasi VM agar memproxy traffic apa pun yang dirutekan ke VM, dan menyamarkan traffic tersebut sebagai berasal dari alamat IP-nya:

    #! /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. Siapkan VM di VPC yang sama dengan kumpulan pribadi Anda dengan aturan untuk mengizinkan permintaan di-proxy melalui VPC:

    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
    

    Dengan:

    • VM_NAME adalah nama yang ingin Anda berikan untuk VM Anda.
    • NETWORK_NAME adalah nama jaringan yang Anda buat di bagian sebelumnya.
    • INTERNAL_IP adalah alamat IP internal yang valid dalam rentang subnetwork region VM Anda. Misalnya, 10.128.0.2.
    • ZONE adalah zona yang terkait dengan jaringan Anda, seperti us-central1-a.
    • (Opsional) SUBNETWORK adalah nama subnetwork Anda. Nama subnetwork Anda dapat ditemukan di REST yang setara untuk subnet Anda dalam format berikut: projects/project-id/regions/region/subnetworks/subnetwork-name. Jika Anda memilih Automatic di bagian Subnet connection mode saat membuat jaringan VPC, Anda tidak perlu menentukan kolom ini.
    • NAT_TAG adalah nama tag gateway NAT yang memungkinkan Anda merutekan permintaan secara kondisional, berdasarkan apakah permintaan tersebut memiliki tag dari VM ini atau tidak. Anda dapat menentukan nama apa pun untuk tag tersebut.
    • STARTUP_SCRIPT adalah nama skrip startup yang Anda buat pada langkah sebelumnya. Misalnya, startup-script-example.sh. Dalam contoh ini, flag --metadata-from-file digunakan untuk meneruskan konten skrip startup yang Anda tentukan ke kunci yang disebut startup-script.

    Setelah menjalankan perintah ini, Anda akan melihat output yang berisi nilai IP eksternal. Catat nilai IP eksternal. Semua traffic dari kumpulan pribadi ke resource eksternal Anda berasal dari alamat ini. Anda dapat memilih untuk menggunakan alamat ini untuk konfigurasi lebih lanjut, seperti mengonfigurasi aturan firewall di jaringan eksternal.

  3. Siapkan rute untuk mengarahkan semua permintaan ke resource eksternal agar masuk ke instance yang dibuat pada langkah sebelumnya, sehingga permintaan Anda dapat diteruskan ke instance kumpulan pribadi:

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

    Dengan:

    • PRIVATE_POOL_ROUTE_NAME adalah nama yang ingin Anda berikan untuk rute Anda.
    • DESTINATION_RANGE adalah rentang alamat CIDR yang valid yang berisi tujuan yang ingin Anda rutekan. Misalnya, instance GitHub Enterprise Edition. Misalnya, 8.8.8.0/24.
    • INTERNAL_IP adalah nilai IP internal yang diperoleh dari langkah sebelumnya. Misalnya, 10.128.0.2.
    • NETWORK_NAME adalah nama jaringan yang Anda buat di bagian sebelumnya.
    • POOL_ROUTE_PRIORITY adalah nomor prioritas yang ingin Anda tentukan untuk rute Anda.

    Perintah ini memastikan bahwa traffic apa pun dari build dalam instance kumpulan pribadi dirutekan ke VM proxy yang Anda buat, bukan dirutekan langsung ke internet publik.

  4. Siapkan rute untuk meneruskan permintaan dari proxy Anda dari instance yang diberi tag ke rentang IP tujuan eksternal. Perintah berikut membuat rute untuk meneruskan permintaan ke internet publik yang terkait dengan instance kumpulan pribadi Anda.

    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
    

    Dengan:

    • NAT_EGRESS_ROUTE_NAME adalah nama yang ingin Anda berikan untuk rute gateway NAT Anda.
    • DESTINATION_RANGE adalah alamat tujuan yang ingin Anda rutekan. Misalnya, instance GitHub Enterprise Edition. Misalnya, 8.8.8.0/24.
    • NETWORK_NAME adalah nama jaringan yang Anda buat di bagian sebelumnya.
    • NAT_TAG adalah nama tag gateway NAT yang memungkinkan Anda merutekan permintaan secara kondisional, berdasarkan apakah permintaan tersebut memiliki tag dari VM ini atau tidak. Anda dapat menentukan nama apa pun untuk tag tersebut.
    • NAT_ROUTE_PRIORITY adalah nomor prioritas yang ingin Anda tentukan untuk rute Anda.

    Perintah ini memastikan bahwa traffic apa pun dari VM proxy dapat diarahkan ke internet publik.

  5. Tambahkan aturan firewall untuk mengizinkan traffic dari kumpulan pribadi ke VM gateway NAT Anda:

    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
    

    Dengan:

    • RULE_NAME adalah nama yang ingin Anda berikan untuk aturan firewall Anda.
    • FIREWALL_PRIORITY adalah nomor prioritas yang ingin Anda tentukan untuk aturan firewall Anda.
    • NETWORK_NAME adalah nama jaringan yang Anda buat di bagian sebelumnya.
    • RESERVED_RANGE adalah rentang CIDR yang Anda alokasikan saat mengonfigurasi jaringan VPC Anda.
    • NAT_TAG adalah nama tag gateway NAT yang memungkinkan Anda merutekan permintaan secara kondisional, berdasarkan apakah permintaan tersebut memiliki tag dari VM ini atau tidak. Anda dapat menentukan nama apa pun untuk tag tersebut.

Sekarang Anda dapat mengakses resource eksternal dari alamat IP statis gateway NAT yang dikelola sendiri di VPC Anda.

Langkah berikutnya