Menggunakan instance next hop Rute Statis IPv6 (tanpa tag dan dengan tag), alamat next hop, dan gateway next hop

Tentang codelab ini
schedule60 menit
subjectTerakhir diperbarui 21 Maret 2025
account_circleDitulis oleh Ghaleb Al-Habian

Rute kustom statis memengaruhi perilaku pemilihan rute default di VPC. Rute kustom IPv6 kini mendukung atribut next hop baru: next-hop-gateway, next-hop-instance, dan next-hop-address. Codelab ini menjelaskan cara menggunakan rute kustom IPv6 dengan opsi next hop baru ini menggunakan dua VPC yang terhubung oleh instance VM multi-NIC. Anda juga akan mendemonstrasikan penggabungan alamat ULA dan GUA serta memberikan keterjangkauan ke VPC ULA ke internet publik menggunakan kemampuan rute kustom baru.

  • Cara membuat rute kustom IPv6 dengan next hop next-hop-ilb dengan menentukan nama ILB
  • Cara membuat rute kustom IPv6 dengan next hop next-hop-ilb dengan menentukan alamat IPv6 ILB
  • Project Google Cloud

2. Sebelum memulai

Memperbarui project untuk mendukung codelab

Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")

Arsitektur Lab Secara Keseluruhan

5fc56288b4f8ae05.png

Untuk mendemonstrasikan kedua jenis next hop rute kustom, Anda akan membuat 2 VPC: VPC klien dan server yang menggunakan alamat ULA.

Agar VPC klien dapat mengakses server, Anda akan menggunakan rute kustom menggunakan next-hop-ilb yang mengarah ke ILB (menggunakan nama ILB) di depan grup instance gateway multi-NIC yang diapit di antara dua ILB. Untuk menyediakan pemilihan rute kembali ke instance klien (setelah menghapus rute ::/0 default), Anda akan menggunakan rute kustom dengan next-hop-ilb (menggunakan alamat ILB) yang mengarah ke ILB.

3. Penyiapan VPC Klien

Membuat VPC Klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks create client-vpc \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

Membuat subnet Klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create client-subnet  \
    --network=client-vpc \
    --project=$projectname \
    --range=192.168.1.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

Catat subnet IPv6 yang ditetapkan dalam variabel lingkungan menggunakan perintah ini

export client_subnet=$(gcloud compute networks subnets \
    describe client-subnet \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

Meluncurkan instance klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instances create client-instance \
    --subnet client-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

Menambahkan aturan firewall untuk traffic VPC klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute firewall-rules create allow-gateway-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

Menambahkan aturan firewall untuk mengizinkan IAP untuk instance klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute firewall-rules create allow-iap-client \
    --direction=INGRESS --priority=1000 \
    --network=client-vpc --action=ALLOW \
    --rules=tcp:22 --source-ranges=35.235.240.0/20 \
    --project=$projectname 

Mengonfirmasi akses SSH ke instance klien

Di dalam Cloud Shell, login ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Jika berhasil, Anda akan melihat jendela terminal dari instance klien. Keluar dari sesi SSH untuk melanjutkan codelab.

4. Penyiapan VPC Server

Membuat VPC server

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks create server-vpc \
    --project=$projectname \
    --subnet-mode=custom --mtu=1500 \
    --bgp-routing-mode=regional \
    --enable-ula-internal-ipv6

Membuat subnet server

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create server-subnet \
    --network=server-vpc \
    --project=$projectname \
    --range=192.168.0.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=internal \
    --region=us-central1

Catat subnet yang ditetapkan dalam variabel lingkungan menggunakan perintah ini

export server_subnet=$(gcloud compute networks subnets \
    describe server-subnet \
    --project $projectname \
    --format="value(internalIpv6Prefix)" \
    --region us-central1)

Meluncurkan VM server

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instances create server-instance \
    --subnet server-subnet \
    --stack-type IPV4_IPV6 \
    --zone us-central1-a \
    --project=$projectname

Menambahkan aturan firewall untuk mengizinkan akses ke server dari klien

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute firewall-rules create allow-client-server \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc --action=ALLOW \
    --rules=tcp --source-ranges=$client_subnet \
    --project=$projectname 

Menambahkan aturan firewall untuk mengizinkan IAP

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute firewall-rules create allow-iap-server \
    --direction=INGRESS --priority=1000 \
    --network=server-vpc --action=ALLOW \
    --rules=tcp:22 \
    --source-ranges=35.235.240.0/20 \
    --project=$projectname 

Menginstal Apache di instance server ULA

Di dalam Cloud Shell, login ke instance klien:

gcloud compute ssh server-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam shell Server VM, jalankan perintah berikut

sudo apt update && sudo apt -y install apache2

Memverifikasi bahwa Apache sedang berjalan

sudo systemctl status apache2

Mengganti halaman web default

echo '<!doctype html><html><body><h1>Hello World! From Server Instance!</h1></body></html>' | sudo tee /var/www/html/index.html

Keluar dari sesi SSH untuk melanjutkan codelab.

5. Membuat Instance Gateway

Membuat template instance gateway multi-NIC

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instance-templates create gateway-instance-template \
    --project=$projectname \
    --instance-template-region=us-central1 \
    --region=us-central1 \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet,no-address \
    --can-ip-forward \
    --metadata=startup-script='#! /bin/bash 
sudo sysctl -w net.ipv6.conf.ens4.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens5.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens4.accept_ra_defrtr=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1'

Membuat grup instance gateway multi-NIC

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instance-groups managed create gateway-instance-group \
    --project=$projectname \
    --base-instance-name=gateway-instance \
      --template=projects/$projectname/regions/us-central1/instanceTemplates/gateway-instance-template \
    --size=2 \
    --zone=us-central1-a

Memverifikasi instance gateway

Untuk memastikan bahwa skrip startup kami diteruskan dengan benar dan tabel pemilihan rute v6 sudah benar. SSH ke salah satu instance gateway

Di dalam Cloud Shell, cantumkan instance gateway dengan menjalankan perintah berikut:

gcloud compute instances list \
    --project=$projectname \
    --zones=us-central1-a \
    --filter name~gateway \
    --format 'csv(name)'

Perhatikan salah satu nama instance dan gunakan dalam perintah berikutnya untuk SSH ke instance.

Di dalam Cloud Shell, login ke salah satu instance gateway

gcloud compute ssh gateway-instance-<suffix> \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam shell VM gateway, jalankan perintah berikut untuk memeriksa penerusan IPv6

sudo sysctl net.ipv6.conf.all.forwarding

Perintah ini akan menampilkan nilai "1" yang menunjukkan bahwa penerusan IPv6 diaktifkan.

Memverifikasi tabel pemilihan rute IPv6 di instance

ip -6 route show

Contoh output yang menampilkan rute subnet ULA dan GUA, dengan rute default yang mengarah ke antarmuka GUA.

::1 dev lo proto kernel metric 256 pref medium
2600:1900:4000:7a7f:0:1:: dev ens4 proto kernel metric 256 expires 83903sec pref medium
2600:1900:4000:7a7f::/65 via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
fd20:3df:8d5c::1:0:0 dev ens5 proto kernel metric 256 expires 83904sec pref medium
fd20:3df:8d5c::/64 via fe80::4001:c0ff:fea8:1 dev ens5 proto ra metric 1024 expires 84sec pref medium
fe80::/64 dev ens5 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium

Keluar dari sesi SSH untuk melanjutkan codelab.

6. Membuat Komponen Load Balancer

Sebelum dapat membuat rute di kedua VPC, kita harus membuat load balancer passthrough internal di kedua sisi instance gateway untuk meneruskan traffic.

Load balancer yang dibuat dalam codelab ini terdiri dari

  • Pemeriksaan kesehatan: Dalam codelab ini, kita akan membuat pemeriksaan kesehatan sederhana yang menargetkan port 22. Perhatikan bahwa health check tidak akan berfungsi seperti yang di-deploy (ini akan melibatkan penambahan aturan firewall untuk mengizinkan health check dan membuat rute khusus di instance gateway). Karena codelab ini berfokus pada penerusan IPv6, kita akan mengandalkan perilaku distribusi traffic default dari load balancer pass-through internal saat semua backend tidak sehat, yaitu, untuk meneruskan ke semua backend sebagai upaya terakhir.
  • Layanan backend: kita akan menggunakan protokol TCP untuk layanan backend. Namun, karena load balancer dibuat untuk tujuan pemilihan rute, semua protokol akan diteruskan, terlepas dari protokol layanan backend.
  • Aturan penerusan: kita membuat aturan penerusan per VPC .
  • Alamat IPv6 internal: dalam codelab ini, kita akan mengizinkan aturan penerusan mengalokasikan alamat IPv6 secara otomatis dari subnet

Membuat Pemeriksaan Kondisi

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute health-checks create tcp tcp-hc-22 \
    --project=$projectname \
    --region=us-central1 \
    --port=22

Membuat Layanan Backend

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute backend-services create bes-ilb-clientvpc \
    --project=$projectname \
    --load-balancing-scheme=internal \
    --protocol=tcp \
    --network=client-vpc \
    --region=us-central1 \
    --health-checks=tcp-hc-22 \
    --health-checks-region=us-central1

gcloud compute backend-services create bes-ilb-servervpc \
    --project=$projectname \
    --load-balancing-scheme=internal \
    --protocol=tcp \
    --network=server-vpc \
    --region=us-central1 \
    --health-checks=tcp-hc-22 \
    --health-checks-region=us-central1

Menambahkan Grup Instance ke Layanan Backend

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute backend-services add-backend bes-ilb-clientvpc \
    --project=$projectname \
    --region=us-central1 \
    --instance-group=gateway-instance-group \
    --instance-group-zone=us-central1-a
gcloud compute backend-services add-backend bes-ilb-servervpc \
    --project=$projectname \
    --region=us-central1 \
    --instance-group=gateway-instance-group \
    --instance-group-zone=us-central1-a

Membuat Aturan Penerusan

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute forwarding-rules create fr-ilb-clientvpc \
    --project=$projectname \
    --region=us-central1 \
    --load-balancing-scheme=internal \
    --network=client-vpc \
    --subnet=client-subnet \
    --ip-protocol=TCP \
    --ip-version=IPV6 \
    --ports=ALL \
    --backend-service=bes-ilb-clientvpc \
    --backend-service-region=us-central1

gcloud compute forwarding-rules create fr-ilb-servervpc \
    --project=$projectname \
    --region=us-central1 \
    --load-balancing-scheme=internal \
    --network=server-vpc \
    --subnet=server-subnet \
    --ip-protocol=TCP \
    --ip-version=IPV6 \
    --ports=ALL \
    --backend-service=bes-ilb-servervpc \
    --backend-service-region=us-central1

Catat alamat IPv6 dari kedua aturan penerusan dengan mengeluarkan perintah berikut di Cloudshell:

export fraddress_client=$(gcloud compute forwarding-rules \
    describe fr-ilb-clientvpc \
    --project $projectname \
    --format="value(IPAddress)" \
    --region us-central1)

export fraddress_server=$(gcloud compute forwarding-rules \
    describe fr-ilb-servervpc \
    --project $projectname \
    --format="value(IPAddress)" \
    --region us-central1)

7. Membuat dan menguji rute ke load balancer (menggunakan alamat load balancer)

Di bagian ini, Anda akan menambahkan rute ke VPC klien dan server menggunakan alamat IPv6 load balancer sebagai next hop.

Catat alamat server

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instances list \
   --project $projectname \
   --zones us-central1-a \
   --filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address)'

Tindakan ini akan menghasilkan nama instance server dan awalan IPv6-nya. Contoh output

server-instance,fd20:3df:8d5c:0:0:0:0:0

Catat alamat server karena Anda akan menggunakannya nanti dalam perintah curl dari instance klien. Sayangnya, variabel lingkungan tidak dapat digunakan dengan mudah untuk menyimpannya karena tidak ditransfer melalui sesi SSH.

Menjalankan perintah curl dari klien ke instance server ULA

Untuk melihat perilaku sebelum menambahkan rute baru. Jalankan perintah curl dari instance klien ke server-instance1.

Di dalam Cloud Shell, login ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam instance klien, lakukan curl menggunakan alamat ULA IPV6 dari instance server1 (perintah menetapkan waktu tunggu singkat 5 detik untuk menghindari curl menunggu terlalu lama)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

Perintah curl ini akan habis waktu tunggunya karena VPC Klien belum memiliki rute ke VPC Server.

Mari kita perbaiki. Keluar dari sesi SSH untuk saat ini.

Menambahkan rute kustom di VPC klien

Karena VPC klien tidak memiliki rute ke awalan ULA. Mari kita tambahkan sekarang dengan membuat rute yang mengarah ke ILB sisi klien berdasarkan alamat.

Catatan: Load balancer passthrough internal IPv6 diberi alamat /96. Anda harus menghapus mask /96 dari alamat sebelum meneruskannya ke perintah berikutnya. (di bawah ini, penggantian in-place bash digunakan)

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute routes create client-to-server-route \
   --project=$projectname \
   --destination-range=$server_subnet \
   --network=client-vpc \
   --next-hop-ilb=${fraddress_client//\/96}

SSH kembali ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam instance klien, coba curl ke instance server lagi. (perintah menetapkan waktu tunggu singkat 5 detik untuk menghindari curl menunggu terlalu lama)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

Perintah curl ini masih habis waktu tunggunya karena VPC server belum memiliki rute kembali ke VPC klien melalui instance gateway.

Keluar dari sesi SSH untuk melanjutkan codelab.

Menambahkan rute kustom di VPC Server

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute routes create server-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc \
  --next-hop-ilb=${fraddress_server//\/96}

SSH kembali ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam instance klien, coba curl ke instance server sekali lagi.

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

Perintah curl ini sekarang berhasil menunjukkan bahwa Anda memiliki jangkauan menyeluruh dari instance klien ke instance server ULA. Konektivitas ini hanya dapat dilakukan sekarang melalui penggunaan rute kustom IPv6 dengan next-hop-ilb sebagai next-hop.

Contoh Output

<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server Instance!</h1></body></html>

Keluar dari sesi SSH untuk melanjutkan codelab.

8. Membuat dan menguji rute ke load balancer (menggunakan nama load balancer)

Atau, next-hop-ilb juga dapat mereferensikan nama load balancer, bukan alamat IPv6-nya. Di bagian ini, kita akan membahas prosedur untuk melakukannya dan menguji apakah konektivitas masih terjalin antara klien dan server.

Menghapus rute sebelumnya

Mari kita pulihkan lingkungan ke sebelum menambahkan rute kustom dengan menghapus rute kustom yang menggunakan nama instance.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute routes delete client-to-server-route  --quiet --project=$projectname
gcloud compute routes delete server-to-client-route  --quiet --project=$projectname

Menjalankan perintah curl dari klien ke instance server ULA

Untuk mengonfirmasi bahwa rute sebelumnya telah berhasil dihapus, jalankan perintah curl dari instance klien ke server-instance1.

Di dalam Cloud Shell, login ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam instance klien, lakukan curl menggunakan alamat ULA IPV6 dari instance server1 (perintah menetapkan waktu tunggu singkat 5 detik untuk menghindari curl menunggu terlalu lama)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

Perintah curl ini akan habis waktu tunggunya karena VPC Klien tidak lagi memiliki rute ke VPC Server.

Menambahkan rute kustom di VPC klien dan server

Mari tambahkan kembali rute kustom di VPC klien dan server, tetapi bukan menggunakan alamat ILB, kita akan menggunakan nama dan region ILB dalam perintah.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute routes create client-to-server-route \
   --project=$projectname \
   --destination-range=$server_subnet \
   --network=client-vpc \
   --next-hop-ilb=fr-ilb-clientvpc \
   --next-hop-ilb-region=us-central1

gcloud compute routes create server-to-client-route \
   --project=$projectname \
   --destination-range=$client_subnet \
   --network=server-vpc \
   --next-hop-ilb=fr-ilb-servervpc \
   --next-hop-ilb-region=us-central1

SSH kembali ke instance klien:

gcloud compute ssh client-instance \
    --project=$projectname \
    --zone=us-central1-a \
    --tunnel-through-iap

Di dalam instance klien, coba curl ke instance server lagi. (perintah menetapkan waktu tunggu singkat 5 detik untuk menghindari curl menunggu terlalu lama)

curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'

Perintah curl ini sekarang berhasil menunjukkan bahwa Anda memiliki jangkauan menyeluruh dari instance klien ke instance server ULA.

9. Pembersihan

Membersihkan rute kustom

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute routes delete client-to-server-route  --quiet --project=$projectname
gcloud compute routes delete server-to-client-route  --quiet --project=$projectname

Membersihkan komponen LB

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute forwarding-rules delete fr-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute forwarding-rules delete fr-ilb-servervpc --region us-central1 --quiet --project=$projectname

gcloud compute backend-services delete bes-ilb-clientvpc --region us-central1 --quiet --project=$projectname
gcloud compute backend-services delete bes-ilb-servervpc --region us-central1 --quiet --project=$projectname

gcloud compute health-checks delete tcp-hc-22 --region us-central1 --quiet --project=$projectname

Membersihkan instance dan template instance

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname

gcloud compute instances delete server-instance --zone us-central1-a --quiet --project=$projectname


gcloud compute instance-groups managed delete gateway-instance-group --zone us-central1-a --quiet --project=$projectname

gcloud compute instance-templates delete gateway-instance-template --region us-central1 --quiet --project=$projectname

Membersihkan subnet

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname

gcloud compute networks subnets delete server-subnet --region=us-central1 --quiet --project=$projectname

Membersihkan aturan firewall

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute firewall-rules delete allow-iap-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client  --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server  --quiet --project=$projectname

Membersihkan VPC

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc --quiet --project=$projectname

10. Selamat

Anda telah berhasil menggunakan rute IPv6 kustom statis dengan next-hop yang ditetapkan ke next-hop-ilb. Anda juga memvalidasi komunikasi IPv6 end-to-end menggunakan rute tersebut.

Apa langkah selanjutnya?

Lihat beberapa codelab ini...

Bacaan lebih lanjut & Video

Dokumen referensi