1. Pengantar
Rute kustom statis memengaruhi perilaku perutean 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 pencampuran pengalamatan ULA dan GUA serta menyediakan aksesibilitas ke VPC ULA ke internet publik menggunakan kemampuan rute kustom baru.
Yang akan Anda pelajari
- Cara membuat rute kustom IPv6 dengan next hop instance next-hop.
- Cara membuat rute kustom IPv6 dengan next hop next-hop-gateway.
- Cara membuat rute kustom IPv6 dengan next hop next-hop-address.
Yang Anda butuhkan
- Project Google Cloud
2. Sebelum memulai
Perbarui 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

Untuk mendemonstrasikan kedua jenis next hop rute kustom, Anda akan membuat 3 VPC: VPC klien yang menggunakan pengalamatan GUA, VPC server yang menggunakan pengalamatan ULA, dan VPC server kedua yang menggunakan pengalamatan GUA.
Agar VPC klien dapat mengakses server ULA, Anda akan menggunakan rute kustom menggunakan next-hop-instance dan next-hop-address yang mengarah ke instance gateway multi-NIC. Untuk memberikan akses ke server GUA (setelah menghapus rute ::/0 default), Anda akan menggunakan rute kustom dengan next-hop-gateway yang mengarah ke Gateway Internet Default untuk menyediakan perutean melalui internet.
3. Penyiapan VPC Klien
Buat 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
Buat 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=external \
--region=us-central1
Catat subnet GUA yang ditetapkan dalam variabel lingkungan menggunakan perintah ini
export client_subnet=$(gcloud compute networks subnets \
describe client-subnet \
--project $projectname \
--format="value(externalIpv6Prefix)" \
--region us-central1)
Luncurkan 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
Tambahkan aturan firewall untuk mengizinkan IAP bagi 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
Konfirmasi akses SSH ke instance klien
Di dalam Cloud Shell, login ke client-instance:
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 ULA
Buat VPC server ULA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create server-vpc1 \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional \
--enable-ula-internal-ipv6
Buat subnet server ULA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks subnets create server-subnet1 \
--network=server-vpc1 \
--project=$projectname \
--range=192.168.0.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=internal \
--region=us-central1
Catat subnet ULA yang ditetapkan dalam variabel lingkungan menggunakan perintah ini
export server_subnet1=$(gcloud compute networks subnets \
describe server-subnet1 \
--project $projectname \
--format="value(internalIpv6Prefix)" \
--region us-central1)
Luncurkan VM server dengan alamat IPV6 internal ULA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute instances create server-instance1 \
--subnet server-subnet1 \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
Tambahkan aturan firewall untuk mengizinkan akses ke server dari klien
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute firewall-rules create allow-client-server1 \
--direction=INGRESS --priority=1000 \
--network=server-vpc1 --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-server1 \
--direction=INGRESS --priority=1000 \
--network=server-vpc1 --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 client-instance:
gcloud compute ssh server-instance1 \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di shell VM Server, jalankan perintah berikut
sudo apt update && sudo apt -y install apache2
Pastikan Apache sedang berjalan
sudo systemctl status apache2
Menimpa halaman web default
echo '<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>' | sudo tee /var/www/html/index.html
Keluar dari sesi SSH untuk melanjutkan codelab.
5. Penyiapan VPC Server GUA
Buat VPC server GUA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create server-vpc2 \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional
Buat subnet server GUA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks subnets create server-subnet2 \
--network=server-vpc2 \
--project=$projectname \
--range=192.168.0.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=external \
--region=us-central1
Catat subnet GUA yang ditetapkan dalam variabel lingkungan menggunakan perintah ini
export server_subnet2=$(gcloud compute networks subnets \
describe server-subnet2 \
--project $projectname \
--format="value(externalIpv6Prefix)" \
--region us-central1)
Meluncurkan VM server dengan alamat IPV6 GUA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute instances create server-instance2 \
--subnet server-subnet2 \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
Tambahkan aturan firewall untuk mengizinkan akses dalam subnet
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute firewall-rules create allow-client-server2 \
--direction=INGRESS \
--priority=1000 \
--network=server-vpc2 \
--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-server2 \
--direction=INGRESS \
--priority=1000 \
--network=server-vpc2 \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--project=$projectname
Konfirmasi akses SSH ke instance server GUA dan instal Apache
Di dalam Cloud Shell, login ke client-instance:
gcloud compute ssh server-instance2 \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di shell VM Server, jalankan perintah berikut
sudo apt update && sudo apt -y install apache2
Pastikan Apache sedang berjalan
sudo systemctl status apache2
Menimpa halaman web default
echo '<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>' | sudo tee /var/www/html/index.html
Keluar dari sesi SSH untuk melanjutkan codelab.
6. Membuat Instance Gateway
Hapus rute default VPC Klien
Sebagai persiapan untuk mengalihkan traffic ULA v6 ke instance multi-NIC dan untuk menonaktifkan perutean keluar internet. Hapus rute ::/0 default yang mengarah ke gateway internet default.
Di dalam Cloud Shell, lakukan hal berikut:
export client_defroutename=$(gcloud compute routes list \
--project $projectname \
--format='value(name)' \
--filter="network:client-vpc AND destRange~'::/0'")
gcloud compute routes delete $client_defroutename \
--project $projectname \
--quiet
Luncurkan VM multi-NIC gateway
Di dalam Cloud Shell, lakukan hal berikut:Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute instances create gateway-instance \
--project=$projectname \
--zone=us-central1-a \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet1,no-address \
--can-ip-forward
Mengonfigurasi instance gateway
Di dalam Cloud Shell, login ke instance gateway (mungkin perlu waktu beberapa menit agar SSH berhasil saat instance sedang melakukan booting):
gcloud compute ssh gateway-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di shell VM gateway, jalankan perintah berikut untuk mengaktifkan penerusan IPv6 dan terus menerima RA dengan penerusan yang diaktifkan (accept_ra = 2)
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
Verifikasi 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.
7. Membuat dan menguji rute ke instance gateway (menggunakan nama instance)
Di bagian ini, Anda akan menambahkan rute ke VPC klien dan server menggunakan nama instance gateway sebagai next hop.
Mencatat alamat server
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute instances list \
--project $projectname \
--filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address,networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)'
Perintah ini akan menampilkan nama instance server dan awalan IPv6-nya. Contoh output
server-instance1,fd20:3df:8d5c:0:0:0:0:0,
server-instance2,,2600:1900:4000:71fd:0:0:0:0
Catat kedua alamat tersebut karena Anda akan menggunakannya nanti dalam perintah curl dari instance klien. Sayangnya, variabel lingkungan tidak dapat digunakan dengan mudah untuk menyimpan hal ini karena tidak ditransfer melalui sesi SSH.
Jalankan 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 client-instance:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, lakukan curl menggunakan alamat IPV6 ULA 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 mengalami waktu tunggu habis karena VPC Klien belum memiliki rute menuju VPC Server.
Mari kita coba perbaiki. Keluar dari sesi SSH untuk saat ini.
Menambahkan rute kustom di VPC klien
Karena VPC klien tidak memiliki rute menuju awalan ULA. Mari kita tambahkan sekarang.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes create client-to-server1-route \
--project=$projectname \
--destination-range=$server_subnet1 \
--network=client-vpc \
--next-hop-instance=gateway-instance \
--next-hop-instance-zone=us-central1-a
SSH kembali ke instance klien:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, coba lagi curl ke instance server. (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 akan kehabisan waktu karena VPC server1 belum memiliki rute kembali ke VPC klien melalui instance gateway.
Keluar dari sesi SSH untuk melanjutkan codelab.
Menambahkan rute kustom di VPC Server ULA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes create server1-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc1 \
--next-hop-instance=gateway-instance \
--next-hop-instance-zone=us-central1-a
SSH kembali ke instance klien:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, coba lakukan curl ke instance server sekali lagi.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
Perintah curl ini kini berhasil menunjukkan bahwa Anda memiliki aksesibilitas end-to-end dari instance klien ke instance server ULA. Konektivitas ini hanya dapat dilakukan sekarang melalui penggunaan rute kustom IPv6 dengan next-hop-instance 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 Server1!</h1></body></html>
Keluar dari sesi SSH untuk melanjutkan codelab.
8. Membuat dan menguji rute ke instance gateway (menggunakan alamat instance)
Di bagian ini, Anda akan menambahkan rute ke VPC klien dan server menggunakan alamat IPv6 instance gateway sebagai next hop.
Menghapus rute sebelumnya
Mari 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-server1-route --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route --quiet --project=$projectname
Jalankan 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 client-instance:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, lakukan curl menggunakan alamat IPV6 ULA 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 mengalami waktu tunggu habis karena VPC Klien tidak lagi memiliki rute menuju VPC Server.
Mendapatkan alamat IPv6 instance gateway
Kita harus mendapatkan alamat IPv6 instance gateway sebelum dapat menulis rute yang menggunakan next-hop-address.
Di dalam Cloud Shell, lakukan hal berikut:
export gateway_ula_address=$(gcloud compute instances \
describe gateway-instance \
--project $projectname \
--format='value(networkInterfaces[1].ipv6Address)')
export gateway_gua_address=$(gcloud compute instances \
describe gateway-instance \
--project $projectname \
--format='value(networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)')
Menambahkan rute kustom di VPC klien
Sekarang kita dapat menambahkan kembali rute di VPC klien dengan awalan ULA, tetapi menggunakan alamat GUA gateway sebagai next hop.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes create client-to-server1-route \
--project=$projectname \
--destination-range=$server_subnet1 \
--network=client-vpc \
--next-hop-address=$gateway_gua_address
SSH kembali ke instance klien:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, coba lagi curl ke instance server.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
Seperti yang diharapkan, perintah curl ini masih akan mengalami waktu tunggu habis karena VPC server1 belum memiliki rute kembali ke VPC klien melalui instance gateway.
Keluar dari sesi SSH untuk melanjutkan codelab.
Menambahkan rute kustom di VPC Server ULA
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes create server1-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc1 \
--next-hop-address=$gateway_ula_address
SSH kembali ke instance klien:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, coba lakukan curl ke instance server sekali lagi.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
Perintah curl ini kini berhasil menunjukkan bahwa Anda memiliki aksesibilitas end-to-end dari instance klien ke instance server ULA. Konektivitas ini hanya dapat dilakukan sekarang melalui penggunaan rute kustom IPv6 dengan next-hop-address 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 Server1!</h1></body></html>
Keluar dari sesi SSH untuk melanjutkan codelab.
9. Membuat dan menguji rute ke gateway internet
Saat penyiapan lab ini, mari kita uji juga fungsi properti hop berikutnya yang baru: next-hop-gateway.
Jalankan perintah curl dari klien ke instance server GUA
Untuk melihat perilaku sebelum menambahkan rute baru. Jalankan perintah curl dari instance klien ke alamat IP server2.
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 ke endpoint IPv6
curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'
Perintah curl ini akan mengalami waktu tunggu habis karena VPC klien hanya memiliki rute subnetnya sendiri dan rute ke VPC server1. Agar dapat menjangkau rentang GUA VPC server2, Anda harus menggunakan gateway internet default melalui rute kustom.
Keluar dari sesi SSH untuk melanjutkan codelab.
Menambahkan rute gateway kustom di VPC klien
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes create client-to-server2-route \
--project=$projectname \
--destination-range=$server_subnet2 \
--network=client-vpc \
--next-hop-gateway=default-internet-gateway
SSH kembali ke instance klien:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
Di dalam instance klien, ulangi curl yang sama
curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'
Perintah curl ini sekarang akan berhasil menampilkan pesan hello kustom, yang menunjukkan bahwa Anda berhasil menjangkau alamat IPv6 server lain melalui gateway internet default.
Contoh output:
<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[2600:1900:4000:71fd:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>
Keluar dari sesi SSH untuk melanjutkan ke bagian pembersihan lab.
10. Pembersihan
Membersihkan 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-instance1 --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete server-instance2 --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete gateway-instance --zone us-central1-a --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-subnet1 --region=us-central1 --quiet --project=$projectname
gcloud compute networks subnets delete server-subnet2 --region=us-central1 --quiet --project=$projectname
Menghapus 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-server1 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server2 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server1 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server2 --quiet --project=$projectname
Menghapus rute kustom
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute routes delete client-to-server1-route --quiet --project=$projectname
gcloud compute routes delete client-to-server2-route --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route --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-vpc1 --quiet --project=$projectname
gcloud compute networks delete server-vpc2 --quiet --project=$projectname
11. Selamat
Anda telah berhasil menggunakan rute IPv6 kustom statis dengan next hop yang ditetapkan ke next-hop-gateway, next-hop-instance, dan next-hop-address. Anda juga memvalidasi komunikasi IPv6 end-to-end menggunakan rute tersebut.
Apa langkah selanjutnya?
Lihat beberapa codelab ini...