Menyiapkan penerusan protokol

Dokumen ini berisi petunjuk untuk mengonfigurasi penerusan protokol untuk penerusan protokol internal dan eksternal. Sebelum mengonfigurasi penerusan protokol, baca bagian Ringkasan penerusan protokol.

Menyiapkan penerusan protokol eksternal

Bagian ini menunjukkan cara menyiapkan penerusan protokol eksternal menggunakan aturan penerusan untuk meneruskan traffic TCP ke satu instance target. Ada instruksi terpisah untuk lalu lintas IPv4 dan IPv6.

Untuk menyiapkan penerusan protokol eksternal, buat sebuah instance target yang berisi satu instance VM. Anda kemudian membuat aturan penerusan regional eksternal yang meneruskan traffic ke instance target.

IPv4

Untuk mempermudah, contoh ini menggunakan jaringan dan subnet default.

  1. Buat aturan firewall yang memungkinkan traffic eksternal mencapai instance target.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
     --target-tags=allow-ipv4-ext \
     --allow=tcp:80 \
     --source-ranges=0.0.0.0/0
    
  2. Buat VM. Untuk contoh ini, kita menyiapkan server Apache di VM.

    gcloud compute instances create VM_INSTANCE_NAME \
     --zone=ZONE \
     --image-family=debian-10 \
     --image-project=debian-cloud \
     --tags=allow-ipv4-ext \
     --metadata=startup-script='#! /bin/bash
     sudo apt-get update
     sudo apt-get install apache2 -y
     sudo a2ensite default-ssl
     sudo a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     sudo systemctl restart apache2'
    
  3. Buat instance target yang berisi VM yang dibuat di langkah sebelumnya. Anda harus membuat instance target sebelum dapat membuat objek aturan penerusan karena aturan penerusan harus mereferensikan resource target yang ada.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
       --instance=VM_INSTANCE_NAME \
       --zone=ZONE
    
  4. Cadangkan alamat IPv4 eksternal statis.

    gcloud compute addresses create IPV4_ADDRESS \
      --region=REGION
    
  5. Buat aturan penerusan yang meneruskan traffic TCP ke instance target. Aturan penerusan harus dibuat di region yang sama tempat instance target dibuat.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL \
      --region=REGION \
      --ip-protocol=TCP \
      --address=IPV4_ADDRESS \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE
    
  6. Uji penyiapan Anda.

    1. Dapatkan alamat IP aturan penerusan Anda.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
        --region=REGION
      
    2. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya. Ganti IP_ADDRESS dengan alamat IP dari langkah sebelumnya.

      $ while true; do curl -m1 IP_ADDRESS; done
      

      Outputnya mirip dengan berikut ini, di mana nama VM backend yang menghasilkan respons akan ditampilkan.

      Page served from: VM_INSTANCE_NAME.
      

IPv6

Penanganan traffic IPv6 memerlukan subnet dual stack dengan instance VM dual stack untuk backend instance target.

  1. Membuat jaringan VPC mode kustom.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom
    
  2. Dalam jaringan VPC, buat subnet dual stack.

    gcloud compute networks subnets create SUBNET_NAME \
      --network=VPC_NAME \
      --range=192.168.11.0/24 \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=EXTERNAL \
      --region=REGION
    

    Rentang 192.168.11.0/24 hanya merupakan contoh rentang IPv4. Anda dapat memasukkan rentang IPv4 utama apa pun untuk subnet baru, dalam notasi CIDR. Untuk mengetahui informasi selengkapnya, lihat Rentang subnet IPv4.

  3. Buat aturan firewall yang memungkinkan traffic eksternal mencapai instance target.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ipv6-ext \
      --allow=tcp:80 \
      --source-ranges=::/0
    
  4. Membuat VM dual stack.

    gcloud compute instances create VM_INSTANCE_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv6-ext \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  5. Buat instance target yang berisi VM yang dibuat di langkah sebelumnya.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --network=VPC_NAME \
      --zone=ZONE
    
  6. Cadangkan rentang alamat IPv6 eksternal statis.

    gcloud compute addresses create IPV6_ADDRESS \
      --region=REGION \
      --subnet=SUBNET_NAME \
      --ip-version=IPV6 \
      --endpoint-type=NETLB
    
  7. Buat aturan penerusan IPv6 yang meneruskan traffic TCP ke instance target. Aturan penerusan harus dibuat di region yang sama tempat instance target dibuat.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL \
      --subnet=SUBNET_NAME \
      --ip-version=IPV6 \
      --region=REGION \
      --address=IPV6_ADDRESS \
      --network-tier=PREMIUM \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE \
      --ip-protocol=TCP \
      --ports=80
    
  8. Uji penyiapan Anda.

    1. Mendapatkan alamat IP aturan penerusan.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya. Ganti IPV6_ADDRESS dengan alamat IP dari langkah sebelumnya.

      curl -6 'http://[IPV6_ADDRESS]:80'
      

      Outputnya mirip dengan berikut ini, di mana nama VM backend yang menghasilkan respons akan ditampilkan.

      Page served from: VM_INSTANCE_NAME.
      

Menyiapkan penerusan protokol internal

Bagian ini menunjukkan cara menyiapkan penerusan protokol internal menggunakan aturan penerusan untuk meneruskan traffic TCP ke satu instance target. Ada instruksi terpisah untuk lalu lintas IPv4 dan IPv6.

Untuk contoh ini, Anda membuat instance target yang berisi satu instance VM dengan server Apache terinstal di dalamnya. Anda kemudian membuat aturan penerusan regional internal yang meneruskan traffic ke instance target.

IPv4

Untuk mempermudah, contoh ini menggunakan jaringan dan subnet default.

  1. Buat aturan firewall yang memungkinkan traffic internal mencapai instance target.

    gcloud compute firewall-rules create ALLOW_IPV4_FIREWALL_RULE_NAME \
      --target-tags=allow-ipv4-int \
      --allow=tcp \
      --source-ranges=0.0.0.0/0
    
  2. Buat aturan firewall untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Ini digunakan untuk membuat koneksi SSH ke VM klien.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
      --target-tags=allow-ssh \
      --allow=tcp:22 \
      --source-ranges=0.0.0.0/0
    
  3. Buat VM.

    gcloud compute instances create VM_INSTANCE_NAME \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv4-int \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  4. Buat instance target yang berisi VM yang dibuat di langkah sebelumnya. Anda harus membuat instance target sebelum dapat membuat objek aturan penerusan karena aturan penerusan harus mereferensikan resource target yang ada.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --zone=ZONE
    
  5. Buat aturan penerusan yang meneruskan traffic TCP ke instance target. Aturan penerusan harus dibuat di region yang sama tempat instance target dibuat.

    gcloud compute forwarding-rules create IPV4_FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL \
      --network-tier=PREMIUM \
      --region=REGION \
      --ip-protocol=TCP \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE
    
  6. Buat VM klien pengujian.

    gcloud compute instances create CLIENT_VM_NAME \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ssh
    

    Kini Anda dapat menguji konfigurasi penerusan protokol dengan mengirimkan traffic dari VM klien ini ke alamat IP aturan penerusan.

  7. Uji penyiapan Anda.

    1. Dapatkan alamat IP aturan penerusan Anda.

      gcloud compute forwarding-rules describe IPV4_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Membuat koneksi SSH ke VM klien.

      gcloud compute ssh CLIENT_VM_NAME \
      --zone=ZONE
      
    3. Buat permintaan ke load balancer dengan menggunakan curl untuk menghubungi alamat IP-nya.

      $ while true; do curl -m1 IP_ADDRESS; done
      

      Outputnya mirip dengan berikut ini, di mana nama VM backend yang menghasilkan respons akan ditampilkan.

      Page served from: VM_INSTANCE_NAME.
      

IPv6

Penanganan traffic IPv6 memerlukan subnet dual stack dengan instance VM dual stack untuk backend instance target.

  1. Buat jaringan VPC mode kustom dengan flag --enable-ula-internal-ipv6 untuk mengonfigurasi rentang IPv6 internal pada setiap subnet dalam jaringan ini.

    gcloud compute networks create VPC_NAME \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6
    
  2. Dalam jaringan VPC, buat subnet dual stack.

    gcloud compute networks subnets create SUBNET_NAME \
      --network=VPC_NAME \
      --range=192.168.11.0/24 \
      --region=REGION \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=INTERNAL
    

    Rentang 192.168.11.0/24 hanya merupakan contoh rentang IPv4. Anda dapat memasukkan rentang IPv4 utama apa pun untuk subnet baru, dalam notasi CIDR. Untuk mengetahui informasi selengkapnya, lihat Rentang subnet IPv4.

  3. Buat aturan firewall yang memungkinkan traffic internal mencapai instance target.

    gcloud compute firewall-rules create ALLOW_IPV6_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ipv6-int \
      --allow=tcp \
      --source-ranges=::/0
    
  4. Buat aturan firewall untuk mengizinkan konektivitas SSH ke VM menggunakan tag jaringan allow-ssh.

    gcloud compute firewall-rules create ALLOW_SSH_FIREWALL_RULE_NAME \
      --network=VPC_NAME \
      --target-tags=allow-ssh \
      --allow=tcp:22 \
      --source-ranges=0.0.0.0/0
    

    Aturan firewall ini diterapkan ke VM klien (dibuat dalam salah satu langkah berikut) yang terhubung dengan Anda menggunakan SSH untuk mengirim traffic HTTP ke alamat IP aturan penerusan.

  5. Membuat VM dual stack.

    gcloud compute instances create VM_INSTANCE_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ipv6-int \
      --metadata=startup-script='#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo a2ensite default-ssl
      sudo a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sudo systemctl restart apache2'
    
  6. Buat instance target yang berisi VM yang dibuat di langkah sebelumnya.

    gcloud compute target-instances create TARGET_INSTANCE_NAME \
      --instance=VM_INSTANCE_NAME \
      --network=VPC_NAME \
      --zone=ZONE
    
  7. Buat aturan penerusan IPv6 yang meneruskan traffic TCP ke instance target. Aturan penerusan harus dibuat di region yang sama tempat instance target dibuat.

    gcloud compute forwarding-rules create IPV6_FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL \
      --network-tier=PREMIUM \
      --network=VPC_NAME \
      --subnet=SUBNET_NAME \
      --region=REGION \
      --ip-protocol=TCP \
      --ports=80 \
      --target-instance=TARGET_INSTANCE_NAME \
      --target-instance-zone=ZONE \
      --ip-version=IPV6
    
  8. Buat VM klien.

    gcloud compute instances create CLIENT_VM_NAME \
      --subnet=SUBNET_NAME \
      --stack-type=IPV4_IPV6 \
      --zone=ZONE \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=allow-ssh
    
  9. Uji penyiapan Anda.

    1. Mendapatkan alamat IP aturan penerusan.

      gcloud compute forwarding-rules describe IPV6_FORWARDING_RULE_NAME \
       --region=REGION
      
    2. Membuat koneksi SSH ke VM klien.

      gcloud compute ssh CLIENT_VM_NAME \
       --zone=ZONE
      
    3. Buat permintaan HTTP ke alamat IP aturan penerusan menggunakan curl.

      curl -6 'http://[FORWARDING_RULE_IP_ADDRESS]:80'
      

      Output-nya akan mirip dengan berikut ini, di mana nama VM backend yang menghasilkan respons ditampilkan dalam teks.

      Page served from: VM_INSTANCE_NAME.
      

Langkah selanjutnya