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.


Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:

Pandu saya


Sebelum memulai

  • Enable the Cloud Build, Compute Engine, and Service Networking APIs.

    Enable the APIs

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

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

Membuat jaringan VPC

Konsol

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

  1. Buka halaman VPC networks di Konsol Google Cloud.

    Buka VPC networks

  2. Klik Create VPC network untuk membuat jaringan baru.

    Anda akan melihat halaman Create a VPC network.

  3. Masukkan Nama 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 Anda dan jaringan produsen layanan, lakukan langkah-langkah berikut:

  1. Buka halaman VPC networks di Konsol Google Cloud.

    Buka VPC networks

  2. Klik nama jaringan Anda.

    Anda akan melihat halaman detail jaringan VPC.

  3. Klik tab Private Service Connection.

    1. Pilih tab Rentang IP yang dialokasikan untuk layanan.

    2. Klik Alokasikan rentang IP.

      Anda akan melihat kotak pop-up Alokasikan rentang IP internal.

      1. Masukkan Nama untuk rentang IP Anda.

      2. Di bagian IP Range, pilih Automatic.

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

      4. Klik Alokasikan untuk mengalokasikan rentang IP Anda.

    3. Pilih tab Private Connections to Services.

    4. Klik Buat Koneksi.

      Anda akan melihat pop-up Buat koneksi pribadi.

      1. Di bagian Tetapkan alokasi, pilih rentang IP Anda.

      2. Klik Connect.

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

      Klik Enable (Export custom route) untuk memastikan rute untuk VPC diterapkan ke jaringan tempat instance kumpulan pribadi Anda berjalan.

Anda telah berhasil mengonfigurasi jaringan.

gcloud

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

  1. Masukkan perintah berikut di terminal Anda guna 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 keterangan:

    • RESERVED_RANGE_NAME adalah nama rentang yang dialokasikan. Contoh, my-allocated-range.
    • PREFIX_LENGTH adalah panjang awalan untuk jaringan Anda. Panjang awalan Anda 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 keterangan:

    • 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 pool pribadi Anda berjalan:

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

    Dengan keterangan:

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

Anda telah berhasil mengonfigurasi jaringan.

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

Buat kolam renang pribadi

Konsol

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

  1. Buka halaman Worker Pool di konsol Google Cloud:

    Buka halaman kumpulan Pekerja Cloud Build

  2. Pilih project tempat Anda ingin membuat kolam renang pribadi.

  3. Di halaman Worker pool, klik Create.

    Anda akan melihat panel Buat kolam pribadi.

  4. Di panel samping Buat kolam renang pribadi, masukkan informasi berikut:

    1. Masukkan Nama untuk kolam renang pribadi Anda.

    2. Pilih Region dari menu drop-down.

    3. Di bagian Network, masukkan informasi berikut:

    • Project: Masukkan ID atau nomor project Anda.
    • Jaringan: Masukkan nama jaringan VPC Anda.
    1. (Opsional) Hapus centang kotak Tetapkan IP eksternal untuk konfigurasi jaringan yang paling dibatasi.

Anda telah membuat kolam renang 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 keterangan:

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

Anda telah membuat kolam renang pribadi.

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

Mengakses resource eksternal dalam jaringan pribadi

Secara default, alamat IP eksternal yang terkait dengan kumpulan pribadi Cloud Build tidak statis atau dapat dikonfigurasi. Keduanya ditetapkan oleh Google Cloud. Jika ingin menyiapkan kumpulan pribadi untuk mengakses resource eksternal dari jaringan pribadi dengan IP eksternal statis, Anda harus menyiapkan virtual machine (VM) di project untuk bertindak sebagai gateway NAT yang dikelola sendiri untuk mem-proxy permintaan ke internet publik. Setelah itu, Anda harus menyiapkan rute kustom untuk meneruskan permintaan ini ke VM guna memastikan rute dipertukarkan 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 dapat mem-proxy 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 menggunakan aturan untuk mengizinkan permintaan di-proxy-kan 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 keterangan:

    • VM_NAME adalah nama yang ingin Anda berikan untuk VM.
    • 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. Contoh, 10.128.0.2.
    • ZONE adalah zona yang terkait dengan jaringan Anda, seperti us-central1-a.
    • (Opsional) SUBNETWORK adalah nama subnetwork Anda. Nama subnetwork dapat ditemukan di REST yang setara untuk subnet Anda dalam format berikut: projects/project-id/regions/region/subnetworks/subnetwork-name. Jika memilih Automatic pada 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 bersyarat, berdasarkan apakah tag tersebut memiliki tag dari VM ini atau tidak. Anda dapat menentukan nama apa pun untuk tag.
    • STARTUP_SCRIPT adalah nama skrip startup yang Anda buat di langkah sebelumnya. Contoh, 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 Anda ke resource eksternal berasal dari alamat ini. Anda dapat memilih menggunakan alamat ini untuk konfigurasi lebih lanjut, seperti mengonfigurasi aturan firewall di jaringan eksternal.

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

    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 keterangan:

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

    Perintah ini memastikan setiap traffic dari build dalam instance kumpulan pribadi dirutekan ke VM proxy yang Anda buat, bukan langsung dirutekan 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 pool 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 keterangan:

    • NAT_EGRESS_ROUTE_NAME adalah nama yang ingin Anda berikan untuk rute gateway NAT.
    • DESTINATION_RANGE adalah alamat tujuan yang ingin Anda arahkan. Misalnya, instance GitHub Enterprise Edition. Contoh, 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 bersyarat, berdasarkan apakah tag tersebut memiliki tag dari VM ini atau tidak. Anda dapat menentukan nama apa pun untuk tag.
    • NAT_ROUTE_PRIORITY adalah nomor prioritas yang ingin Anda tentukan untuk rute.

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

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

    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 keterangan:

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

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

Langkah selanjutnya