1. Ringkasan
Cloud NAT adalah alat yang andal. Dengan Cloud NAT, workload Compute Engine dan Google Kubernetes Engine (GKE) dapat mengakses resource internet dengan cara yang skalabel dan aman, tanpa mengekspos beban kerja yang berjalan padanya ke akses luar menggunakan IP eksternal.
Cloud NAT memiliki desain tanpa proxy, yang menerapkan NAT langsung di lapisan SDN Andromeda. Dengan demikian, workload ini tidak berdampak pada performa dan dapat diskalakan dengan mudah ke banyak VM, region, dan VPC.
Aturan NAT adalah ekstensi untuk Cloud NAT. Fitur Aturan NAT di Cloud NAT dapat Anda gunakan untuk membuat aturan akses yang menentukan cara Cloud NAT digunakan untuk terhubung ke internet. Saat ini Aturan NAT mendukung pemilihan alamat NAT sumber berdasarkan alamat tujuan.
Tanpa Aturan NAT, VM dengan Cloud NAT aktif akan menggunakan kumpulan alamat IP NAT yang sama untuk menjangkau semua alamat internet.
Terkadang, kasus penggunaan NAT meminta Cloud NAT untuk menggunakan alamat IP sumber yang berbeda untuk tujuan tertentu. Aturan NAT menentukan kecocokan dan tindakan yang sesuai. Setelah Anda menentukan aturan NAT, paket tersebut akan dicocokkan dengan setiap aturan NAT. Jika sebuah aturan cocok, tindakan yang sesuai dengan pencocokan tersebut akan terjadi.
Untuk mengetahui informasi selengkapnya, tinjau bagian Dokumentasi tentang Aturan NAT .
Yang akan Anda pelajari
- Cara menyiapkan gateway Cloud NAT sebagai persiapan untuk Aturan NAT.
- Cara merancang Aturan NAT menggunakan Common Expression Language (CEL).
- Cara membuat Aturan NAT dan melampirkannya ke {i>Gateway NAT<i}.
- Cara menguji Aturan NAT dari instance.
- Cara memperbarui aturan Gateway NAT.
- Cara menghapus aturan NAT dan mengembalikan ke perilaku Cloud NAT default.
Yang Anda butuhkan
- Pengetahuan dasar tentang Google Compute Engine
- Pengetahuan dasar tentang networking dan TCP/IP
- Pengetahuan dasar mengenai command line Unix/Linux
- Anda dapat menyelesaikan tur jaringan di GCP seperti lab Jaringan di Google Cloud.
- Pemahaman tentang dasar-dasar Cloud NAT.
2. Menggunakan Google Cloud Console dan Cloud Shell
Untuk berinteraksi dengan GCP, kami akan menggunakan Konsol Google Cloud dan Cloud Shell di seluruh lab ini.
Konsol Google Cloud
Konsol Cloud dapat diakses di https://console.cloud.google.com.
Penyiapan lingkungan mandiri
- Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project Name adalah ID pribadi Anda untuk project ini. Selama Anda mengikuti konvensi penamaannya, Anda dapat menggunakan apa pun yang Anda inginkan dan dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak
peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID
). Jadi, jika tidak suka, buat codelab acak lainnya, atau, Anda dapat mencobanya sendiri dan melihat apakah tersedia. Kemudian akan "dibekukan" setelah proyek dibuat.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
3. Penyiapan Lab
Untuk lab ini, Anda akan menggunakan sebuah Project, dan masing-masing akan membuat dua VPC dengan satu subnet. Anda akan mencadangkan alamat IP eksternal, lalu membuat dan mengonfigurasi gateway Cloud NAT (dengan Cloud Router), serta dua instance produsen dan instance konsumen. Setelah memvalidasi perilaku Cloud NAT default, Anda akan membuat aturan kustom Cloud NAT dan memvalidasi perilakunya.
Ringkasan arsitektur jaringan:
4. Pesan Alamat IP Eksternal
Mari cadangkan semua alamat IP eksternal untuk digunakan di lab ini. Hal ini akan membantu Anda menulis semua aturan NAT dan firewall yang relevan di VPC konsumen dan produsen.
Dari Cloud Shell:
gcloud compute addresses create nat-address-1 nat-address-2 nat-address-3 producer-address-1 producer-address-2 --region us-east4
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
Isi alamat IP yang dicadangkan sebagai variabel lingkungan.
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export natip3=`gcloud compute addresses list --filter name:nat-address-3 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
Tidak ada output yang diharapkan, tetapi untuk mengonfirmasi bahwa alamat telah diisi dengan benar. Mari kita buat output nilai semua variabel lingkungan.
$ env | egrep '^(nat|producer)ip[1-3]'
Output:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2> natip3=<NAT IP 3>
5. VPC Produsen dan Penyiapan Instance.
Sekarang kita akan membuat resource untuk resource produser. Instance yang berjalan di VPC produsen akan menawarkan layanan yang terhubung ke internet menggunakan dua IP publik "produsen-address-1" dan "produsen-address-2" kami.
Pertama, mari kita buat VPC. Dari Cloud Shell:
gcloud compute networks create producer-vpc --subnet-mode custom
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Selanjutnya, mari kita buat subnet di us-east4. Dari Cloud Shell:
gcloud compute networks subnets create producer-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/producer-e4]. NAME REGION NETWORK RANGE producer-e4 us-east4 producer-vpc 10.0.0.0/24
Selanjutnya, mari kita buat aturan firewall VPC untuk mengizinkan alamat IP NAT menjangkau instance produsen pada port 8080.
Untuk aturan pertama, dari Cloud Shell:
gcloud compute firewall-rules create producer-allow-8080 \ --network producer-vpc --allow tcp:8080 \ --source-ranges $natip1,$natip2,$natip3
Output:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/producer-allow-8080]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-8080 producer-vpc INGRESS 1000 tcp:8080 False
Langkah selanjutnya adalah membuat dua instance produser.
Instance produser akan menjalankan layanan gema IP di container docker yang tersedia di Docker Hub (kode sumber tersedia di repo GitHub penulis layanan.
Untuk menyediakan instance dengan semua software yang diperlukan secara cepat, kami akan menggunakan fitur Deployment container di Compute Engine.
Agar dapat menulis aturan NAT, kita akan menyediakan setiap instance dengan alamat IP yang dicadangkan yang berbeda.
Buat instance pertama. Dari Cloud Shell:
gcloud compute instances create-with-container producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <producer IP 1> RUNNING
Kemudian buat instance kedua. Dari Cloud Shell:
gcloud compute instances create-with-container producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <producer IP 2> RUNNING
6. Menyiapkan VPC Konsumen, Cloud NAT, dan Instance
Setelah membuat layanan produsen, kini saatnya membuat VPC konsumen dan gateway Cloud NAT-nya.
Setelah membuat VPC dan subnet, kita akan menambahkan aturan firewall masuk sederhana guna mengizinkan IAP untuk rentang IP sumber TCP. Dengan begitu, kita dapat melakukan SSH ke instance konsumen secara langsung menggunakan gcloud.
Kemudian, kita akan membuat gateway Cloud NAT sederhana dalam mode alokasi manual dan alamat yang dicadangkan "nat-address-1" yang terkait dengannya. Di bagian codelab berikutnya, kita akan memperbarui konfigurasi gateway untuk menambahkan aturan kustom. .
Pertama, mari kita buat VPC. Dari Cloud Shell:
gcloud compute networks create consumer-vpc --subnet-mode custom
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
Selanjutnya, mari kita buat subnet di us-east4. Dari Cloud Shell:
gcloud compute networks subnets create consumer-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/consumer-e4]. NAME REGION NETWORK RANGE consumer-e4 us-east4 consumer-vpc 10.0.0.0/24
Selanjutnya, mari kita buat aturan firewall VPC untuk mengizinkan alamat rentang IAP menjangkau instance konsumen pada port 22.
Untuk aturan firewall pertama, jalankan perintah berikut dari Cloud Shell:
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
Output:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
Sebelum membuat gateway NAT, kita perlu membuat instance Cloud Router terlebih dahulu (kita menggunakan nomor ASN pribadi, tetapi tidak relevan untuk aktivitas lab ini). Dari Cloud Shell:
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
Output:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
Kemudian, buat instance gateway NAT. Dari Cloud Shell:
gcloud compute routers nats create consumer-nat-gw \ --router=consumer-cr \ --router-region=us-east4 \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=nat-address-1
Output:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
Membuat instance pengujian konsumen. Di sini kita mengisi IP produsen yang dicadangkan agar dapat merujuk ke instance tersebut dalam instance nanti. Dari Cloud Shell:
gcloud compute instances create consumer-instance --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=consumer-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
Output:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/consumer-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance us-east4-a e2-medium 10.0.0.2 RUNNING
7. Memverifikasi perilaku Cloud NAT default
Pada tahap ini, instance konsumen menggunakan perilaku Cloud NAT default yang menggunakan IP yang dicadangkan yang sama, yaitu "nat-address-1" untuk berkomunikasi dengan semua alamat eksternal.
Mari kita validasi perilaku ini terlebih dahulu sebelum memanfaatkan fitur Aturan NAT yang baru di Cloud NAT.
SSH ke instance konsumen. Dari Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Anda sekarang akan berada di shell instance.
Contoh Output (output penuh terpotong agar lebih singkat)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Dari dalam instance konsumen, pertama-tama mari kita ambil kedua IP produsen dan isi sebagai variabel lingkungan
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Kemudian, coba lakukan curl ke kedua instance produser dan amati alamat IP sumber yang ditampilkan.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.136.8.83
Anda akan melihat alamat IP yang sama ditampilkan untuk kedua endpoint, yang sama dengan nilai IP eksternal yang dicadangkan "nat-address-1".
Demikian pula, curl ke layanan reflektor IP eksternal harus menampilkan IP yang sama, misalnya:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Untuk saat ini, kita akan keluar dari sesi SSH instance. Kita akan menjalankan SSH kembali setelah mengonfigurasi Aturan NAT.
8. Membuat Aturan Cloud NAT
Aturan NAT ditulis menggunakan sintaksis Common Expression Language. Untuk mengetahui informasi selengkapnya tentang bahasa ekspresi aturan, lihat Bahasa ekspresi aturan.
Anda juga dapat menambahkan aturan NAT ke gateway NAT yang ada menggunakan perintah gcloud. Kita akan mempelajari kedua opsi untuk membuat aturan Cloud NAT.
Pertama, mari kita buat file YAML aturan NAT.
Dari Cloud Shell:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 EOF
Kemudian mari kita perbarui gateway NAT yang ada menggunakan file aturan ini. Dari Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Output Anda akan terlihat seperti berikut :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Validasi bahwa aturan telah berhasil dikonfigurasi. Dari Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
Output Anda akan terlihat seperti berikut :
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
Mari kita coba dan buat ulang aturan yang sama hanya dengan menggunakan perintah gcloud. Pertama, hapus aturan yang ada. Dari Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Output Anda akan terlihat seperti berikut :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Kemudian buat ulang aturan menggunakan perintah gcloud ini. Dari Cloud Shell:
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Output Anda akan terlihat seperti berikut :
Creating Rule [100] in NAT [consumer-nat-gw]...done.
Sekali lagi untuk memvalidasi bahwa aturan berhasil dibuat, ulangi perintah sebelumnya. Kali ini kita akan menambahkan tombol pemformatan YAML untuk melihat detail aturan secara lengkap.
Dari Cloud Shell:
gcloud alpha compute routers nats rules list\ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Output Anda akan terlihat seperti berikut :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2 match: destination.ip == <actual IP for producer-IP 2> ruleNumber: 100
Terakhir, perhatikan bahwa sekarang "nat-address1" dan "nat-address-2" alamat eksternal akan ditampilkan sebagai "IN_USE". Untuk melihatnya, jalankan perintah ini dari Cloud Shell:
$ gcloud compute addresses list
Output Anda akan terlihat seperti berikut (Alamat IP aktual akan cocok dengan alamat yang telah Anda pesan) :
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS nat-address-1 34.136.8.83 EXTERNAL us-east4 IN_USE nat-address-2 34.70.137.35 EXTERNAL us-east4 IN_USE nat-address-3 34.135.103.88 EXTERNAL us-east4 RESERVED producer-address-1 34.66.0.105 EXTERNAL us-east4 IN_USE producer-address-2 35.192.142.134 EXTERNAL us-east4 IN_USE
9. Memverifikasi perilaku Aturan Cloud NAT
Pada tahap ini, instance konsumen harus menggunakan Aturan Cloud NAT yang dibuat untuk menggunakan nat-address-2 untuk berkomunikasi dengan prod-address-2.
Mari kita validasi perilaku ini. SSH ke instance konsumen. Dari Cloud Shell:
gcloud compute ssh consumer-instance --zone=us-east4-a
Anda sekarang akan berada di shell instance.
Contoh Output (output penuh terpotong agar lebih singkat)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
Dari dalam instance konsumen, pertama-tama mari kita ambil kedua IP produsen dan isi sebagai variabel lingkungan
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
Kemudian, coba lakukan curl ke kedua instance produser dan amati alamat IP sumber yang ditampilkan.
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.70.137.35
Anda sekarang akan melihat alamat IP berbeda yang ditampilkan untuk kedua endpoint, alamat IP pertama harus sama dengan perilaku default. Alamat IP kedua harus sama dengan "nat-address-2" setelah penambahan aturan NAT baru.
curl ke layanan reflektor IP eksternal harus tetap menampilkan IP yang sama dengan perilaku default, misalnya:
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
Untuk saat ini, kita akan keluar dari sesi SSH instance. Kita akan menjalankan SSH kembali untuk menguji pengosongan alamat.
10. Perbarui & Menghapus Aturan Cloud NAT
Anda dapat memperbarui aturan Cloud NAT yang ada. Misalnya, Anda dapat mengaitkan alamat IP baru dan menghabiskan alamat IP yang ada, yang terkait dengan aturan yang ada.
Mari kita perbarui file Aturan NAT sebagai berikut
Dari Cloud Shell:
export projectid=`gcloud config get-value project` cat <<EOF >natrulesfile.txt rules: - ruleNumber: 100 match: destination.ip == '$producerip2' action: sourceNatDrainIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-2 sourceNatActiveIps: - /projects/$projectid/regions/us-east4/addresses/nat-address-3 EOF
Yang dilakukan file baru ini sekarang adalah menempatkan "nat-address-2" dalam kondisi terkuras. Dan tambahkan "nat-address-3" dalam status aktif. Ini akan memungkinkan koneksi yang ada yang menggunakan nat-address-2 berakhir dengan baik, saat membuat koneksi baru hanya menggunakan nat-address-3.
Kemudian mari kita perbarui gateway NAT yang ada menggunakan file aturan ini. Dari Cloud Shell:
gcloud alpha compute routers nats update consumer-nat-gw \ --router=consumer-cr \ --rules=natrulesfile.txt \ --router-region=us-east4
Output Anda akan terlihat seperti berikut :
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
Validasi bahwa aturan telah berhasil dikonfigurasi. Dari Cloud Shell:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
Output Anda akan terlihat seperti berikut :
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3 sourceNatDrainIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2 match: destination.ip == '35.192.142.134' ruleNumber: 100
Perhatikan bagaimana "nat-address-2" sekarang telah ditempatkan dalam kondisi terkuras. Kami menyerahkannya kepada Anda sebagai latihan untuk memvalidasi bahwa koneksi baru dari VPC konsumen kini menggunakan IP NAT yang benar.
Terakhir, hapus aturan NAT dari gateway Cloud NAT Anda dan kembali ke perilaku default. Anda dapat menggunakan perintah gcloud berikut. Dari Cloud Shell:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
Output Anda akan terlihat seperti berikut :
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
Untuk memverifikasi bahwa tidak ada lagi aturan NAT, mari kita gunakan perintah {i>gateway<i} NAT
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
Output Anda akan terlihat seperti berikut :
enableEndpointIndependentMapping: false name: consumer-nat-gw natIpAllocateOption: MANUAL_ONLY natIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1 sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
Perhatikan bahwa tidak ada "aturan:" di YAML output. Menunjukkan tidak ada Aturan NAT yang dikonfigurasi.
11. Langkah-Langkah Pembersihan
Untuk menghindari tagihan berulang, Anda harus menghapus semua resource yang terkait dengan codelab ini.
Hapus semua instance terlebih dahulu.
Dari Cloud Shell:
gcloud compute instances delete consumer-instance \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
Output yang diharapkan :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
Selanjutnya, hapus Cloud Router. Dari Cloud Shell:
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
Output Anda akan terlihat seperti berikut :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
Melepaskan semua alamat IP eksternal. Dari Cloud Shell:
gcloud compute addresses delete nat-address-1 \ nat-address-2 nat-address-3 producer-address-1 \ producer-address-2 --region us-east4 --quiet
Output Anda akan terlihat seperti berikut :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
Menghapus aturan firewall VPC. Dari Cloud Shell:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
Output Anda akan terlihat seperti berikut :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-8080].
Menghapus subnet. Dari Cloud Shell:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
Output Anda akan terlihat seperti berikut :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-e4].
Terakhir, mari kita hapus VPC. Dari Cloud Shell:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
Output Anda akan terlihat seperti berikut :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
12. Selamat!
Anda telah menyelesaikan Cloud NAT Rules Lab!
Yang telah Anda bahas
- Cara menyiapkan gateway Cloud NAT sebagai persiapan untuk Aturan NAT.
- Cara merancang Aturan NAT menggunakan Common Expression Language (CEL).
- Cara membuat Aturan NAT dan melampirkannya ke {i>Gateway NAT<i}.
- Cara menguji Aturan NAT dari instance.
- Cara memperbarui aturan Gateway NAT.
- Cara menghapus aturan NAT dan mengembalikan ke perilaku Cloud NAT default.
Langkah Berikutnya
- Lakukan eksperimen dengan membuat Aturan NAT yang lebih kompleks seperti contoh ini
- Pelajari pengosongan alamat IP NAT dan amati dampak koneksi.
- Pelajari lebih lanjut Jaringan di Google Cloud Platform
©Google, Inc. atau afiliasinya. Semua hak dilindungi undang-undang. Jangan disebarluaskan.