Antarmuka Private Service Connect

1. Pengantar

Antarmuka Private Service Connect adalah resource yang memungkinkan jaringan Virtual Private Cloud (VPC) produser memulai koneksi ke berbagai tujuan dalam jaringan VPC konsumen. Jaringan produsen dan konsumen dapat berada di project dan organisasi yang berbeda.

Jika lampiran jaringan menerima koneksi dari antarmuka Private Service Connect, Google Cloud mengalokasikan alamat IP dari subnet konsumen yang ditentukan oleh lampiran jaringan. Jaringan konsumen dan produsen terhubung dan dapat berkomunikasi menggunakan alamat IP internal.

Koneksi antara lampiran jaringan dan antarmuka Private Service Connect mirip dengan koneksi antara endpoint Private Service Connect dan lampiran layanan, tetapi memiliki dua perbedaan utama:

  • Lampiran jaringan memungkinkan jaringan produsen memulai koneksi ke jaringan konsumen (traffic keluar layanan terkelola), sedangkan endpoint memungkinkan jaringan konsumen memulai koneksi ke jaringan produsen (traffic masuk layanan terkelola).
  • Koneksi antarmuka Private Service Connect bersifat transitif. Ini berarti bahwa jaringan produsen dapat berkomunikasi dengan jaringan lain yang terhubung ke jaringan konsumen.

Yang akan Anda build

Dalam tutorial ini, Anda akan membangun arsitektur Antarmuka Private Service Connect (PSC) komprehensif yang menggunakan aturan Cloud Firewall untuk mengizinkan dan menolak konektivitas dari produsen ke komputasi konsumen, seperti yang diilustrasikan dalam Gambar 1.

Gambar 1

d39bf35e55bdf9e6.png

Anda akan membuat satu psc-network- pemahaman di VPC konsumen sehingga menghasilkan kasus penggunaan berikut:

  1. Buat aturan Cloud Firewall untuk mengizinkan akses dari beruang hingga singa
  2. Buat aturan Cloud Firewall untuk menolak akses dari beruang ke harimau
  3. Buat aturan Cloud Firewall untuk mengizinkan akses dari cosmo untuk menanggung

Yang akan Anda pelajari

  • Cara membuat lampiran jaringan
  • Cara produser dapat menggunakan lampiran jaringan untuk membuat antarmuka PSC
  • Cara membangun komunikasi dari produsen ke konsumen
  • Cara mengizinkan akses dari VM produsen (beruang) ke VM konsumen (singa)
  • Cara memblokir akses dari VM produsen (beruang) ke VM konsumen (harimau)
  • Cara mengizinkan akses dari VM konsumen (cosmo) ke VM produsen (beruang)

Yang Anda butuhkan

2. Sebelum memulai

Mengupdate project untuk mendukung tutorial

Tutorial ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Penyiapan Konsumen

Membuat VPC Konsumen

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

Membuat subnet konsumen

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create lion-subnet-1 --project=$projectid --range=192.168.20.0/28 --network=consumer-vpc --region=us-central1

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create tiger-subnet-1 --project=$projectid --range=192.168.30.0/28 --network=consumer-vpc --region=us-central1

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create cosmo-subnet-1 --project=$projectid --range=192.168.40.0/28 --network=consumer-vpc --region=us-central1

Membuat subnet Private Service Connect Network Lampiran

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1

Konfigurasi Cloud Router dan NAT

Cloud NAT digunakan dalam tutorial untuk penginstalan paket software karena instance VM tidak memiliki alamat IP publik. Cloud NAT mengaktifkan VM dengan alamat IP pribadi untuk mengakses internet.

Di dalam Cloud Shell, buat router cloud.

gcloud compute routers create cloud-router-for-nat --network consumer-vpc --region us-central1

Di dalam Cloud Shell, buat gateway NAT.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

4. Aktifkan IAP

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.

Di dalam Cloud Shell, buat aturan firewall IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

5. Membuat instance VM konsumen

Di dalam Cloud Shell, buat instance vm konsumen, lion.

gcloud compute instances create lion \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=lion-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to the lion app server !!' | tee /var/www/html/index.html
      EOF"

Di dalam Cloud Shell, buat instance vm konsumen, yaitu tiger.

gcloud compute instances create tiger \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=tiger-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to the tiger app server !!' | tee /var/www/html/index.html
      EOF"

Di dalam Cloud Shell, buat instance vm konsumen, yaitu cosmo.

gcloud compute instances create cosmo \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=cosmo-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to the cosmo app server !!' | tee /var/www/html/index.html
      EOF"

Dapatkan dan simpan Alamat IP instance:

Di dalam Cloud Shell, lakukan deskripsi terhadap instance VM singa dan tiger.

gcloud compute instances describe lion --zone=us-central1-a | grep  networkIP:

gcloud compute instances describe tiger --zone=us-central1-a | grep  networkIP:

gcloud compute instances describe cosmo --zone=us-central1-a | grep  networkIP:

6. Lampiran jaringan Private Service Connect

Lampiran jaringan adalah resource regional yang mewakili sisi konsumen antarmuka Private Service Connect. Anda mengaitkan satu subnet dengan lampiran jaringan, lalu produsen menetapkan IP ke antarmuka Private Service Connect dari subnet tersebut. Subnet harus berada di region yang sama dengan lampiran jaringan. Lampiran jaringan harus berada di region yang sama dengan layanan produsen.

Membuat lampiran jaringan

Di dalam Cloud Shell, buat lampiran jaringan.

gcloud compute network-attachments create psc-network-attachment \
    --region=us-central1 \
    --connection-preference=ACCEPT_MANUAL \
    --producer-accept-list=$projectid \
    --subnets=intf-subnet

Melihat daftar lampiran jaringan

Di dalam Cloud Shell, cantumkan lampiran jaringan.

gcloud compute network-attachments list

Deskripsikan lampiran jaringan

Di dalam Cloud Shell, jelaskan lampiran jaringan.

gcloud compute network-attachments describe psc-network-attachment --region=us-central1

Catat URI psc-network-additional yang akan digunakan oleh produsen saat membuat Antarmuka Koneksi Layanan Pribadi. Contohnya:

user@cloudshell$ gcloud compute network-attachments describe psc-network-attachment --region=us-central1 
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2023-06-06T20:57:12.623-07:00'
fingerprint: 4Yq6xAfaRO0=
id: '3235195049527328503'
kind: compute#networkAttachment
name: psc-network-attachment
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
producerAcceptLists:
- $projectid
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment
subnetworks:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/intf-subnet

7. Penyiapan Produsen

Membuat jaringan VPC produsen

Di dalam Cloud Shell, lakukan hal berikut:

gcloud compute networks create producer-vpc --project=$projectid --subnet-mode=custom

Membuat subnet produser

Di dalam Cloud Shell, buat subnet yang digunakan untuk vNIC0 dari antarmuka psc.

gcloud compute networks subnets create prod-subnet --project=$projectid --range=10.20.1.0/28 --network=producer-vpc --region=us-central1

8. Aktifkan IAP

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.

Di dalam Cloud Shell, buat aturan firewall IAP.

gcloud compute firewall-rules create ssh-iap-producer \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

9. Membuat Antarmuka Private Service Connect

Antarmuka Private Service Connect adalah resource yang memungkinkan jaringan Virtual Private Cloud (VPC) produser memulai koneksi ke berbagai tujuan dalam jaringan VPC konsumen. Jaringan produsen dan konsumen dapat berada di project dan organisasi yang berbeda.

Jika lampiran jaringan menerima koneksi dari antarmuka Private Service Connect, Google Cloud mengalokasikan alamat IP dari subnet konsumen yang ditentukan oleh lampiran jaringan. Jaringan konsumen dan produsen terhubung dan dapat berkomunikasi menggunakan alamat IP internal.

Di dalam Cloud Shell, buat antarmuka (bear) Private Service Connect, lalu masukkan psc-network- berkembang URI yang diidentifikasi sebelumnya dari output penjelasan lampiran jaringan.

gcloud compute instances create bear --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment

Validasi multi-nik

Validasi bahwa antarmuka PSC dikonfigurasi dengan Alamat IP yang sesuai. vNIC0 akan menggunakan prod-subnet (10.20.1.0/28) dan vNIC1 akan menggunakan intf-subnet konsumen (192.168.10.0/28).

gcloud compute instances describe bear --zone=us-central1-a | grep networkIP:

Contoh:

user$ gcloud compute instances describe bear --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.2
  networkIP: 192.168.10.2

10. Memperbarui aturan firewall konsumen

Buat aturan Cloud Firewall untuk mengizinkan akses dari beruang ke singa

Di cloud Shell, buat aturan dengan prioritas lebih tinggi yang memungkinkan traffic keluar dari rentang alamat IP attachment-subnet (intf-subnet) ke tujuan dalam rentang alamat lion-subnet-1.

gcloud compute firewall-rules create allow-limited-egress-to-lion \
    --network=consumer-vpc \
    --action=ALLOW \
    --rules=ALL \
    --direction=EGRESS \
    --priority=1000 \
    --source-ranges="192.168.10.0/28" \
    --destination-ranges="192.168.20.0/28" \
    --enable-logging

Di cloud Shell, buat aturan izin masuk yang menggantikan aturan tolak traffic masuk yang tersirat untuk traffic dari subnet psc-network-lampiran.

gcloud compute firewall-rules create allow-ingress \
--network=consumer-vpc \
--action=ALLOW \
--rules=ALL \
--direction=INGRESS \
--priority=1000 \
--source-ranges="192.168.10.0/28" \
--enable-logging

Membuat aturan Cloud Firewall untuk menolak akses dari beruang ke semua rentang (termasuk harimau)

Di cloud Shell, buat aturan prioritas rendah yang menolak semua traffic keluar dari rentang alamat IP subnet lampiran jaringan, intf-subnet.

gcloud compute firewall-rules create deny-all-egress \
    --network=consumer-vpc \
    --action=DENY \
    --rules=ALL \
    --direction=EGRESS \
    --priority=65534 \
    --source-ranges="192.168.10.0/28" \
    --destination-ranges="0.0.0.0/0" \
    --enable-logging

Buat aturan Cloud Firewall untuk mengizinkan akses dari cosmo untuk menanggung

Di cloud Shell, buat aturan izin masuk yang menggantikan aturan tolak traffic masuk yang tersirat untuk traffic dari subnet psc-network-lampiran.

gcloud compute firewall-rules create vm-subnet-allow-ingress \
    --network=consumer-vpc \
    --action=ALLOW \
    --rules=ALL \
    --direction=INGRESS \
    --priority=1000 \
    --source-ranges="192.168.40.0/28" \
    --destination-ranges="192.168.10.0/28" \
    --enable-logging

11. Membuat rute Linux untuk antarmuka PSC

Dari instance antarmuka PSC, konfigurasikan rute Linux untuk mengizinkan komunikasi produser ke subnet konsumen.

Menemukan nama OS tamu di antarmuka Private Service Connect Anda

Untuk mengonfigurasi perutean, Anda perlu mengetahui nama OS tamu dari antarmuka Private Service Connect, yang berbeda dengan nama antarmuka di Google Cloud.

Di dalam Cloud Shell, buka tab baru dan lakukan langkah berikut:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Login ke vm psc-interface, beruang, menggunakan IAP di Cloud Shell.

gcloud compute ssh bear --project=$projectid --zone=us-central1-a --tunnel-through-iap

Di Cloud Shell, dapatkan alamat IP instance psc-interface

ip a

Contoh:

user@bear:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.2/32 brd 10.20.1.2 scope global dynamic ens4
       valid_lft 85991sec preferred_lft 85991sec
    inet6 fe80::4001:aff:fe14:102/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.2/32 brd 192.168.10.2 scope global dynamic ens5
       valid_lft 85991sec preferred_lft 85991sec
    inet6 fe80::4001:c0ff:fea8:a02/64 scope link 
       valid_lft forever preferred_lft forever

Menemukan gateway IP antarmuka PSC Anda

Dalam daftar antarmuka jaringan, temukan dan simpan nama antarmuka yang terkait dengan alamat IP antarmuka Private Service Connect Anda—misalnya, ens5 (vNIC1)

Untuk mengonfigurasi pemilihan rute, Anda perlu mengetahui alamat IP gateway default antarmuka Private Service Connect

Di cloud Shell, kita akan menggunakan 1 karena antarmuka PSC dikaitkan dengan vNIC1.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

Contoh menghasilkan gw 192.168.10.1 default

user@bear:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

Menambahkan rute untuk subnet konsumen

Anda harus menambahkan rute ke gateway default antarmuka Private Service Connect untuk setiap subnet konsumen yang terhubung ke antarmuka Private Service Connect. Hal ini memastikan bahwa traffic yang terikat untuk traffic keluar jaringan konsumen dari antarmuka Private Service Connect.

Pada instance beruang, tambahkan rute ke subnet konsumen.

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5
sudo ip route add 192.168.30.0/28 via 192.168.10.1 dev ens5
sudo ip route add 192.168.40.0/28 via 192.168.10.1 dev ens5

Validasi tabel rute

Di Cloud Shell, validasi rute yang baru ditambahkan.

ip route show

Contoh.

user@bear:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5 
192.168.30.0/28 via 192.168.10.1 dev ens5 
192.168.40.0/28 via 192.168.10.1 dev ens5 

12. Memvalidasi keberhasilan konektivitas beruang ke singa

Mari konfirmasi bahwa instance VM produser, beruang, dapat berkomunikasi dengan instance konsumen, singa dengan melakukan curl.

Dari instance beruang, lakukan curl terhadap Alamat IP singa yang diidentifikasi sebelumnya dalam tutorial dari instance beruang.

curl -v <lions IP Address>

Contoh:

user@bear:~$ curl -v 192.168.20.2
*   Trying 192.168.20.2:80...
* Connected to 192.168.20.2 (192.168.20.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.20.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Tue, 06 Jun 2023 03:53:08 GMT
< Server: Apache/2.4.56 (Debian)
< Last-Modified: Mon, 05 Jun 2023 19:41:26 GMT
< ETag: "1e-5fd6716a1e11b"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
< 
Welcome to lion app server !!
* Connection #0 to host 192.168.20.2 left intact

13. Validasi konektivitas beruang ke harimau diblokir

Mari kita konfirmasi bahwa aturan firewall keluar memblokir akses dari beruang ke harimau dengan melihat log firewall.

Dari sesi Konsol Cloud baru dan Buka Logging → Logs Explorer → Select Show query

2ae597e6d970cddf.pngS

Tempelkan string kueri di bawah ke kolom penelusuran, lalu pilih stream

jsonPayload.rule_details.reference=&quot;network:consumer-vpc/firewall:deny-all-egress&quot;

30d7bfae315f2ee3.pngS

Dari instance beruang, lakukan curl terhadap Alamat IP harimau yang diidentifikasi sebelumnya dalam tutorial dari instance beruang. Waktu tunggu curl akan habis.

curl -v <tiger's IP Address>

Contoh:

user@bear:~$ curl -v 192.168.30.2 
*   Trying 192.168.30.2:80...
* connect to 192.168.30.2 port 80 failed: Connection timed out
* Failed to connect to 192.168.30.2 port 80: Connection timed out
* Closing connection 0
curl: (28) Failed to connect to 192.168.30.2 port 80: Connection timed out

Pastikan Log Explorer telah merekam log firewall yang ditolak. Pilih entri log dan luaskan kolom bertingkat untuk melihat metadata.

5c42a6587300be55.pngS

14. Validasi cosmo agar konektivitas berhasil

Buka tab Cloud Shell baru dan perbarui setelan project Anda.

Di dalam Cloud Shell, lakukan hal berikut:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Login ke instance cosmo menggunakan IAP di Cloud Shell.

gcloud compute ssh cosmo --project=$projectid --zone=us-central1-a --tunnel-through-iap

Di Cloud Shell, lakukan ping terhadap Alamat IP vNIV1 beruang yang diidentifikasi sebelumnya dalam tutorial

ping <bears vNIC1 IP Address>

Contoh:

user@cosmo:~$ ping 192.168.10.2 -c 5
PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.
64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=0.277 ms
64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=0.288 ms
64 bytes from 192.168.10.2: icmp_seq=3 ttl=64 time=0.265 ms
64 bytes from 192.168.10.2: icmp_seq=4 ttl=64 time=0.264 ms
64 bytes from 192.168.10.2: icmp_seq=5 ttl=64 time=0.366 ms

15. Pembersihan

Dari Cloud Shell, hapus komponen tutorial.

gcloud compute instances delete bear --zone=us-central1-a --quiet

gcloud compute instances delete lion --zone=us-central1-a --quiet

gcloud compute instances delete tiger --zone=us-central1-a --quiet

gcloud compute instances delete cosmo --zone=us-central1-a --quiet

gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet

gcloud compute firewall-rules delete allow-ingress allow-limited-egress-to-lion deny-all-egress ssh-iap-consumer ssh-iap-producer vm-subnet-allow-ingress --quiet

gcloud compute networks subnets delete cosmo-subnet-1 intf-subnet lion-subnet-1 prod-subnet tiger-subnet-1 --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet 

gcloud compute networks delete consumer-vpc --quiet

gcloud compute networks delete producer-vpc --quiet

16. Selamat

Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi Antarmuka Private Service Connect serta konektivitas konsumen dan produsen dengan menerapkan aturan firewall.

Anda membuat infrastruktur konsumen, dan Anda menambahkan lampiran jaringan yang memungkinkan produser membuat vm multi-nic untuk menjembatani komunikasi konsumen dan produser. Anda telah mempelajari cara membuat aturan firewall di jaringan VPC konsumen yang memungkinkan konektivitas ke instance di VPC konsumen dan produsen.

Cosmopup menganggap tutorialnya luar biasa!!

e6d3675ca7c6911f.jpeg

Apa selanjutnya?

Lihat beberapa tutorial ini...

Bacaan lebih lanjut & Video

Dokumen referensi