1. Pengantar
Private Service Connect memungkinkan produsen layanan menawarkan layanan secara pribadi kepada konsumen layanan. Private Service Connect menawarkan manfaat berikut:
- Jaringan VPC produsen layanan dapat mendukung lebih dari satu konsumen layanan.
- Setiap konsumen terhubung ke alamat IP internal yang mereka tentukan. Private Service Connect melakukan penafsiran alamat jaringan (NAT) untuk mengarahkan permintaan ke produsen layanan.
Gambar 2. Private Service Connect menggunakan endpoint dan lampiran layanan agar konsumen layanan dapat mengirim traffic dari jaringan VPC konsumen ke layanan di jaringan VPC produsen layanan (klik untuk memperbesar).
Yang akan Anda pelajari
- Manfaat koneksi layanan pribadi
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Menciptakan lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen TCP
- Aktifkan & validasi protokol proxy
- Aktifkan kontrol akses kebijakan
Yang Anda butuhkan
- Pengetahuan tentang load balancer Internal
- Kemampuan untuk membuat VPC dalam dua project
2. Manfaat koneksi layanan pribadi
Dengan PSC, Anda memiliki beberapa manfaat dibandingkan dengan Peering VPC:
Kontrol yang lebih baik atas ruang IP pribadi
- Sebagai konsumen layanan, Anda dapat mengontrol alamat IP pribadi yang digunakan untuk terhubung ke layanan terkelola yang ingin Anda akses.
- Sebagai konsumen layanan, Anda tidak perlu khawatir menyimpan rentang alamat IP pribadi untuk layanan backend yang digunakan di VPC Anda. Anda hanya perlu memilih alamat IP dari subnet Anda sendiri untuk terhubung ke layanan produsen.
- Sebagai produsen layanan, Anda dapat memilih untuk men-deploy model multi-tenant, dengan VPC Anda berisi layanan yang menyalurkan beberapa VPC konsumen. Konsumen yang memiliki rentang subnet yang tumpang-tindih bukan lagi masalah.
- Sebagai penyedia layanan, Anda dapat menskalakan layanan Anda ke instance VM sebanyak yang diperlukan, tanpa perlu menghubungi konsumen untuk mendapatkan lebih banyak alamat IP.
Keamanan dan isolasi yang ditingkatkan
- Sebagai konsumen layanan, hanya Anda yang dapat memulai komunikasi ke produsen layanan. Konektivitas searah ini secara drastis menyederhanakan konfigurasi firewall tetapi juga mengurangi risiko dari traffic besar yang berasal dari produsen layanan.
- Sebagai produsen layanan, Anda tidak perlu mengubah aturan firewall berdasarkan rentang subnet di VPC konsumen. Anda cukup membuat aturan firewall untuk rentang alamat IP NAT yang telah dikonfigurasi untuk layanan Anda.
Skalabilitas yang Lebih Baik
- PSC memungkinkan desain yang sangat skalabel dengan mendukung ribuan Konsumen, serta memungkinkan Produsen Layanan menawarkan layanan multi-tenant atau tenant tunggal yang sangat skalabel.
- Sebagai konsumen layanan yang menggunakan layanan pribadi terhubung, Anda dapat membuat resource sesuai kebutuhan di VPC Anda. Skalanya tidak terpengaruh oleh jumlah resource yang dibuat di VPC produsen.
3. Konsep utama untuk konsumen layanan
Anda dapat menggunakan endpoint Private Service Connect untuk menggunakan layanan yang berada di luar jaringan VPC Anda. Konsumen layanan membuat endpoint Private Service Connect yang terhubung ke layanan target.
Endpoint
Anda menggunakan endpoint Private Service Connect untuk terhubung ke layanan target. Endpoint memiliki alamat IP internal di jaringan VPC Anda dan didasarkan pada resource aturan penerusan.
Anda mengirim traffic ke endpoint, yang akan meneruskannya ke target di luar jaringan VPC Anda.
Target
Endpoint Private Service Connect memiliki target, yang merupakan layanan yang ingin Anda hubungkan:
- Paket API:
- Semua API: sebagian besar Google API
- VPC-SC: API yang didukung oleh Kontrol Layanan VPC
- Layanan yang dipublikasikan di jaringan VPC lain. Layanan ini dapat dikelola oleh organisasi Anda sendiri atau pihak ketiga.
Layanan yang dipublikasikan
Untuk menghubungkan endpoint ke layanan produsen layanan, Anda memerlukan lampiran layanan untuk layanan tersebut. URI lampiran layanan memiliki format ini: projects/SERVICE_PROJECT/regions/REGION/serviceLampirans/SERVICE_NAME
4. Konsep utama untuk produsen layanan
Agar layanan tersedia bagi konsumen, Anda harus membuat satu atau beberapa subnet khusus untuk digunakan dalam penafsiran alamat jaringan (NAT) alamat IP konsumen. Kemudian, Anda membuat lampiran layanan yang mengacu ke subnet tersebut.
Subnet Private Service Connect
Untuk mengekspos layanan, produsen layanan terlebih dahulu membuat satu atau beberapa subnet dengan Private Service Connect tujuan.
Saat permintaan dikirim dari jaringan VPC konsumen, alamat IP sumber konsumen akan diterjemahkan menggunakan NAT sumber (SNAT) sumber ke alamat IP yang dipilih dari salah satu subnet Private Service Connect.
Jika Anda ingin menyimpan informasi alamat IP koneksi konsumen, lihat Melihat informasi koneksi konsumen.
Subnet ini tidak dapat digunakan untuk resource seperti instance VM atau aturan penerusan. Subnet digunakan hanya untuk menyediakan alamat IP untuk SNAT koneksi konsumen yang masuk.
Subnet Private Service Connect harus berisi minimal satu alamat IP untuk setiap 63 VM konsumen sehingga setiap VM konsumen dialokasikan 1.024 tuple sumber untuk penafsiran alamat jaringan.
Ukuran minimum untuk subnet Private Service Connect adalah /24.
Lampiran layanan
Produsen layanan mengekspos layanan mereka melalui lampiran layanan.
- Untuk mengekspos layanan, produsen layanan membuat lampiran layanan yang merujuk ke aturan penerusan load balancer layanan tersebut.
- Untuk mengakses layanan, konsumen layanan membuat endpoint yang mengacu pada lampiran layanan.
Preferensi koneksi
Saat membuat layanan, Anda dapat memilih cara menyediakannya. Ada 2 opsi:
- Terima koneksi untuk semua project secara otomatis - setiap konsumen layanan dapat mengonfigurasi endpoint dan terhubung ke layanan secara otomatis.
- Menerima koneksi untuk project yang dipilih - konsumen layanan mengonfigurasi endpoint untuk terhubung ke layanan dan produsen layanan menerima atau menolak permintaan koneksi.
5. Lingkungan Pengujian
Jaringan konsumen terdiri atas alamat IP statis TCP yang digunakan untuk memulai permintaan ke produsen layanan, selain lampiran layanan target yang dipetakan ke lampiran layanan produsen (layanan yang dipublikasikan).
Sekarang, mari kita lihat jaringan produsen. Perhatikan bagaimana jaringan produsen tidak memiliki pemetaan ke jaringan konsumen, melainkan, jaringan produsen berisi lampiran layanan (layanan yang dipublikasikan) yang digunakan oleh konsumen untuk layanan. Lampiran layanan produsen di lab kami adalah Load Balancer Internal Lapisan 4 (aturan penerusan produsen) yang dipetakan ke layanan backend yang mendukung aplikasi TCP.
Subnet NAT dan aturan firewall terkait memungkinkan komunikasi ke aplikasi produsen.
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.
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID
.
- 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.
6. Sebelum memulai
Codelab memerlukan dua project, meskipun bukan persyaratan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.
Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Beberapa project - Memperbarui project untuk mendukung jaringan produser
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
7. Membuat jaringan VPC Produser
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom
Buat Subnet
Dari Cloud Shell
gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2
Membuat instance Cloud NAT
Cloud NAT tidak sama dengan NAT yang digunakan untuk PSC. Cloud NAT digunakan secara eksplisit untuk akses internet guna mendownload paket aplikasi.
Membuat Cloud Router
Dari Cloud Shell
gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2
Membuat Cloud NAT
Dari Cloud Shell
gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2
8. Membuat instance komputasi
Dari Cloud Shell, buat instance www-01
gcloud compute instances create www-01 \ --zone=us-west2-a \ --image-family=debian-9 \ --image-project=debian-cloud \ --subnet=vpc-demo-us-west2 --no-address \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install tcpdump -y apt-get install apache2 -y a2ensite default-ssl apt-get install iperf3 -y a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" filter="{print \$NF}" vm_zone="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/zone \ | awk -F/ "${filter}")" echo "Page on $vm_hostname in $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2 iperf3 -s -p 5050'
Dari Cloud Shell, buat instance www-02
gcloud compute instances create www-02 \ --zone=us-west2-a \ --image-family=debian-9 \ --image-project=debian-cloud \ --subnet=vpc-demo-us-west2 --no-address \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install tcpdump -y apt-get install apache2 -y a2ensite default-ssl apt-get install iperf3 -y a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" filter="{print \$NF}" vm_zone="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/zone \ | awk -F/ "${filter}")" echo "Page on $vm_hostname in $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2 iperf3 -s -p 5050'
9. Membuat grup instance yang tidak dikelola
Membuat grup instance tidak terkelola yang terdiri dari www-01 & www-02
Dari Cloud Shell
gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02 gcloud compute health-checks create http hc-http-80 --port=80
10. Membuat layanan backend TCP, aturan penerusan & {i>Firewall<i}
Dari Cloud Shell, buat layanan backend
gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80 gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a
Dari Cloud Shell, buat aturan penerusan
gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2
Dari Cloud Shell, buat aturan firewall untuk mengaktifkan health check backend
gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging
Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Dari Cloud Shell
gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
11. Membuat subnet TCP NAT
Dari Cloud Shell
gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect
12. Membuat lampiran layanan TCP dan aturan firewall
Dari Cloud Shell, buat lampiran layanan TCP
gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp
Validasi lampiran layanan TCP
gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2
Dari Cloud Shell, buat aturan firewall yang mengizinkan akses subnet TCP NAT ke backend ILB
gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging
13. Membuat jaringan VPC Konsumen
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Di bagian berikut, VPC konsumen dikonfigurasi dalam project terpisah. Komunikasi antara jaringan konsumen dan produsen dilakukan melalui lampiran layanan yang didefinisikan dalam jaringan konsumen.
Jaringan VPC
Codelab memerlukan dua project, meskipun bukan persyaratan untuk PSC. Perhatikan referensi untuk mendukung satu atau beberapa project.
Project Tunggal - Memperbarui project untuk mendukung jaringan produsen dan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Beberapa project - Memperbarui project untuk mendukung jaringan konsumen
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Dari Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Buat Subnet untuk PSC
Dari Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2
Membuat alamat IP statis untuk aplikasi TCP
Dari Cloud Shell
gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100
Membuat Aturan Firewall
Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Dari Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Meskipun tidak diperlukan bagi PSC, buat aturan firewall keluar untuk memantau traffic PSC konsumen ke lampiran layanan produsen
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
Membuat instance Cloud NAT
Cloud NAT tidak sama dengan NAT yang digunakan untuk PSC. Cloud NAT digunakan secara eksplisit untuk akses internet guna mendownload paket aplikasi
Membuat Cloud Router
Dari Cloud Shell
gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2
Membuat Cloud NAT
Dari Cloud Shell
gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2
14. Membuat VM instance pengujian
Dari Cloud Shell
gcloud compute instances create test-instance-1 \ --zone=us-west2-a \ --image-family=debian-9 \ --image-project=debian-cloud \ --subnet=consumer-subnet --no-address \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install iperf3 -y apt-get install tcpdump -y'
15. Membuat lampiran layanan TCP
Dari Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp
16. Validasi
Kita akan menggunakan CURL, TCPDUMP & log {i>firewall<i} untuk memvalidasi komunikasi konsumen dan produsen.
Dalam project Konsumen, alamat IP statis digunakan untuk memulai komunikasi ke Produsen. Pemetaan alamat IP statis ke Aturan Penerusan konsumen ini divalidasi dengan melakukan sintaks berikut.
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Dari Cloud Shell VPC Konsumen, identifikasi aturan penerusan TCP dan IP statis
gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2
Output:
IPAddress: 10.0.60.100 IPProtocol: TCP creationTimestamp: '2021-07-14T13:34:23.359-07:00' id: '2768158450402915488' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr-tcp <snip>
17. Validasi TCP
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Dari Project Producer,identifikasi "www-01" & "www-02" dan meluncurkan satu sesi SSH per instance.
Dari "www-01" melakukan TCPDUMP untuk memantau NAT
sudo tcpdump -i any net 192.168.0.0/16 -n
Dari "www-02" melakukan TCPDUMP untuk memantau NAT
sudo tcpdump -i any net 192.168.0.0/16 -n
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Dari Consumer Project,identifikasi "test-instance-1" dan meluncurkan dua sesi.
Dari "test-instance-1" sesi satu melakukan TCPDUMP untuk memantau
sudo tcpdump -i any host 10.0.60.100 -n
Dari "test-instance-1" sesi dua melakukan validasi TCP
curl -v 10.0.60.100
18. Pengamatan - Konsumen
Dari "test-instance-1" sesi dua CURL berhasil dan menghasilkan 200 OK.
@test-instance-1:~$ curl -v 10.0.60.100 * Rebuilt URL to: 10.0.60.100/ * Trying 10.0.60.100... * TCP_NODELAY set * Connected to 10.0.60.100 (10.0.60.100) port 80 (#0) > GET / HTTP/1.1 > Host: 10.0.60.100 > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 14 Jul 2021 21:20:22 GMT < Server: Apache/2.4.25 (Debian) < Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT < ETag: "1d-5c71aed5edabd" < Accept-Ranges: bytes < Content-Length: 29 < Content-Type: text/html < Page on www-01 in us-west2-a * Curl_http_done: called premature == 0 * Connection #0 to host 10.0.60.100 left intact
Dari "test-instance-1" sesi satu TCPDUMP mengidentifikasi Instance VM → komunikasi dan respons IP Statis TCP
21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1 21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK
Logging firewall
Menggunakan Logs Explorer memvalidasi aturan firewall "vpc-consumner-psc" adalah merekam alur antara instance VM dan IP statis
- Dari Cloud Console, Identify Operations Logging → Log Explorer
- Pada kolom Query, perbarui entri di bawah dengan yourconsumerproject, lalu pilih "Run Query"
logName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan
- Luaskan log dan identifikasi output yang disediakan di bawah. Perhatikan dest_ip: 10.0.60.100 adalah STATIC TCP IP dan src_ip: 10.0.60.2 adalah alamat IP instance VM
19. Observasi - Produsen
Dari backend instance "www-01" atau "www-02" telah diamati komunikasi antara subnet TCP NAT dan TCP ILB.
21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1 21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK
20. Logging firewall
Menggunakan Logs Explorer, validasi aturan firewall "vpc-demo-allowpsc-tcp" adalah menangkap TCP NAT & alur TCP ILB dengan melakukan langkah-langkah berikut:
- Dari Cloud Console, Identify Operations Logging → Log Explorer
- Pada kolom Query, perbarui entri di bawah ini dengan yourprodproject, lalu pilih "Run Query"
logName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) DAN jsonPayload.rule_details.reference:("network:vpc-demo-prod/firewall:vpc-demo-allowpsc-tcp")
- Hasil kueri memberikan hal berikut per screenshot yang diberikan
- Luaskan log dan identifikasi output yang disediakan di bawah. Catat TCP ILB dest_ip: 10.0.2.10 dan NAT TCP source_range (192.168.0.0/24) & IP: 192.168.0.2.
21. Aktifkan Protokol Proxy
Secara default, Private Service Connect menerjemahkan alamat IP sumber konsumen ke alamat di salah satu subnet Private Service Connect pada jaringan VPC produsen layanan. Jika ingin melihat alamat IP sumber asli konsumen, Anda dapat mengaktifkan protokol PROXY. Jika protokol PROXY diaktifkan, Anda bisa mendapatkan alamat IP sumber dan ID koneksi PSC konsumen dari header protokol PROXY
Hapus Layanan yang Dipublikasikan Produsen
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Dari Cloud Shell, hapus lampiran layanan TCP
gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet
Dari cloud shell validasi layanan, lampiran layanan dihapus (tercantum 0 item)
gcloud compute service-attachments list
Buat lampiran layanan TCP dengan protokol proxy diaktifkan
gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \ --producer-forwarding-rule=vpc-demo-www-ilb-tcp \ --connection-preference=ACCEPT_AUTOMATIC \ --nat-subnets=vpc-demo-us-west2-psc-tcp \ --enable-proxy-protocol
Dari cloud shell validasi layanan, lampiran layanan dibuat dengan protokol proxy diaktifkan (benar)
gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Dari cloud shell, hapus aturan penerusan TCP
gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet
Membuat ulang aturan penerusan TCP untuk dikaitkan dengan lampiran layanan (produsen) yang dibuat sebelumnya
Dari Cloud Shell, buat aturan penerusan TCP
gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \ --region=us-west2 --network=vpc-demo-consumer \ --address=vpc-consumer-psc-tcp \ --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp
Validasi Protokol Proxy
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Dari Project Producer,identifikasi "www-01" & "www-02" dan meluncurkan satu sesi per instance.
Dari "www-01" melakukan TCPDUMP untuk memantau NAT
sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16
Dari "www-02" melakukan TCPDUMP untuk memantau NAT
sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Dari Consumer Project,identifikasi "test-instance-1" dan meluncurkan satu sesi
Dari "test-instance-1" sesi melakukan curl
curl 10.0.60.100
Pengamatan - Konsumen
Perhatikan bahwa jika PROXY Protocol v2 diaktifkan tetapi aplikasi tidak dikonfigurasi untuk mendukungnya, pesan error akan ditampilkan jika terhubung dari klien sesuai dengan contoh di bawah ini. Pembaruan Apache diperlukan untuk mengakomodasi header proxy v2 tambahan & tidak dibahas dalam codelab.
Dari "test-instance-1" CURL sesi akan menghasilkan 400 Permintaan tidak valid yang diharapkan, meskipun kueri backend berhasil.
@test-instance-1:~$ curl 10.0.60.100 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>
Pengamatan - Konsumen
Dari backend instance "www-01" atau "www-02" komunikasi antara subnet TCP NAT dan TCP ILB berikut diamati dengan protokol proxy yang disematkan dalam penangkapan.
Pada umumnya, paket ke-3 dalam {i>tcpdump<i} berisi elemen informasi protokol {i>proxy<i} yang relevan (IE). Secara opsional, identifikasi paket dengan 39 byte yang berisi protokol proxy IE.
192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP 0x0000: 4500 004f 0000 4000 4006 6df4 c0a8 0003 E..O..@.@.m..... 0x0010: 0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b .......P..+<N%.. 0x0020: 5018 6e00 b617 0000 0d0a 0d0a 000d 0a51 P.n............Q 0x0030: 5549 540a 2111 0017 0a00 3c02 0a00 3c64 UIT.!.....<...<d 0x0040: 8138 0050 e000 0800 9b34 d70a 003c 64 .8.P.....4...<d
Identifikasi Tanda Tangan Protokol PROXY: 0d0a0d0a000d0a515549540a dalam penangkapan paket
Dengan mengidentifikasi Tanda Tangan Protokol PROXY, Anda dapat menguraikannya dan mendekode bidang seperti di bawah ini:
Tanda Tangan Protokol PROXY: 0d0a0d0a000d0a515549540a
Bidang Protokol PROXY Lainnya: 21 11 00 17
IP dan Port: 0a003c02 0a003c64 8138 0050
Jenis TLV: e0
Panjang TLV: 00 08
ID Koneksi psc: 009b34d70a003c64
Hex | Desimal / IP | ||
Tanda Tangan Protokol PROXY |
| ||
Versi, Protokol, Panjang |
| ||
IP Src |
|
| |
IP Dst |
|
| |
Port Src |
|
| |
Port Dst |
|
| |
Jenis TLV (PP2_TYPE_GCP) |
| ||
Panjang TLV |
| ||
pscConnectionId |
|
|
pscConnectionId juga dapat divalidasi dengan menjelaskan aturan penerusan konsumen seperti di bawah ini, dan memastikannya cocok:
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Dari Cloud Shell, menjelaskan aturan penerusan TCP
gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
Output yang menjelaskan pscConnectionID
$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2 IPAddress: 10.0.60.100 IPProtocol: TCP creationTimestamp: '2021-07-14T16:50:31.766-07:00' id: '4443494505307621032' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr-tcp network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '43686719580552292' pscConnectionStatus: ACCEPTED
22. Kebijakan Koneksi
Anda dapat beralih antara penerimaan project secara otomatis dan eksplisit untuk layanan yang dipublikasikan.
Mengubah dari penerimaan otomatis menjadi persetujuan eksplisit tidak memengaruhi endpoint konsumen yang telah terhubung ke layanan sebelum perubahan ini. Endpoint konsumen yang ada dapat terhubung ke layanan yang dipublikasikan hingga lampiran layanan dihapus. Endpoint konsumen baru harus disetujui sebelum dapat terhubung ke layanan. Lihat Mengelola permintaan akses ke layanan yang dipublikasikan untuk informasi selengkapnya.
Di bagian lab ini, Anda akan mengubah kebijakan koneksi produsen untuk menyetujui lampiran layanan konsumen secara eksplisit.
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Dari Cloud Shell layanan produsen, perbarui kebijakan connection-preferensi dari setuju secara otomatis menjadi setuju secara manual
gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL
Identifikasi status endpoint dengan membuka Layanan Jaringan → Private Service Connect → Layanan Dipublikasikan → vpc-demo-psc-west2-tcp → Project yang Terhubung
Perhatikan, project Konsumen diubah menjadi "Tertunda" di project yang terhubung.
Setujui project konsumen dengan menjalankan perintah berikut di Cloud Shell, pastikan untuk mengupdatenya dengan nama project yang sesuai
gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20
Identifikasi status endpoint dengan membuka Layanan Jaringan → Private Service Connect → Layanan Dipublikasikan → vpc-demo-psc-west2-tcp → Project yang Terhubung
Perhatikan, project Konsumen diubah menjadi "Diterima" di project yang terhubung.
23. Langkah-langkah pembersihan
Langkah-langkah pembersihan jaringan produsen
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi dalam project yang berisi Producer Service Anda
Dari satu Cloud Shell di terminal project Producer, hapus komponen lab
gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet gcloud compute routers delete crnatprod --region=us-west2 --quiet gcloud compute instances delete www-01 --zone=us-west2-a --quiet gcloud compute instances delete www-02 --zone=us-west2-a --quiet gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet gcloud compute health-checks delete hc-http-80 --quiet gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet gcloud compute firewall-rules delete vpc-demo-health-checks --quiet gcloud compute firewall-rules delete psclab-iap-prod --quiet gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet gcloud compute networks delete vpc-demo-producer --quiet
Catatan: Di bagian berikut, jalankan pembaruan konfigurasi di project yang berisi Layanan Konsumen Anda
Langkah-langkah pembersihan jaringan konsumen
Dari satu Cloud Shell di terminal project Producer, hapus komponen lab
gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet gcloud compute routers delete crnatconsumer --region=us-west2 --quiet gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute networks delete vpc-demo-consumer --quiet
24. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Manfaat koneksi layanan pribadi
- Konsep utama untuk konsumen layanan
- Konsep utama untuk produsen layanan
- Membuat lingkungan produser
- Mengekspos layanan (lingkungan produsen) melalui lampiran layanan
- Menciptakan lingkungan konsumen
- Membuat aturan penerusan di jaringan konsumen
- Memvalidasi akses konsumen TCP
- Aktifkan & validasi protokol proxy
- Aktifkan kontrol akses kebijakan