อินเทอร์เฟซ Private Service Connect

1. บทนำ

อินเทอร์เฟซ Private Service Connect คือทรัพยากรที่ช่วยให้เครือข่าย Virtual Private Cloud (VPC) ของผู้ผลิตเริ่มการเชื่อมต่อกับปลายทางต่างๆ ในเครือข่าย VPC ของผู้บริโภคได้ เครือข่ายผู้ผลิตและเครือข่ายผู้บริโภคอาจอยู่ในโปรเจ็กต์และองค์กรที่แตกต่างกัน

หากไฟล์แนบเครือข่ายยอมรับการเชื่อมต่อจากอินเทอร์เฟซ Private Service Connect ทาง Google Cloud จะจัดสรรที่อยู่ IP ให้กับอินเทอร์เฟซจากซับเน็ตของผู้บริโภคที่ไฟล์แนบเครือข่ายระบุ เครือข่ายของผู้บริโภคและผู้ผลิตเชื่อมต่อกันและสื่อสารกันได้โดยใช้ที่อยู่ IP ภายใน

การเชื่อมต่อระหว่างไฟล์แนบเครือข่ายกับอินเทอร์เฟซ Private Service Connect คล้ายกับการเชื่อมต่อระหว่างปลายทาง Private Service Connect กับไฟล์แนบบริการ แต่มีข้อแตกต่างที่สำคัญ 2 ข้อดังนี้

  • ไฟล์แนบเครือข่ายช่วยให้เครือข่ายของผู้ผลิตเริ่มการเชื่อมต่อกับเครือข่ายของผู้บริโภคได้ (การรับส่งข้อมูลขาออกของบริการที่มีการจัดการ) ส่วนปลายทางช่วยให้เครือข่ายของผู้บริโภคเริ่มการเชื่อมต่อกับเครือข่ายของผู้ผลิตได้ (การรับส่งข้อมูลขาเข้าของบริการที่มีการจัดการ)
  • การเชื่อมต่ออินเทอร์เฟซ Private Service Connect เป็นแบบทรานซิทีฟ ซึ่งหมายความว่าเครือข่ายผู้ผลิตสามารถสื่อสารกับเครือข่ายอื่นๆ ที่เชื่อมต่อกับเครือข่ายผู้บริโภคได้

สิ่งที่คุณจะสร้าง

ในบทแนะนํานี้ คุณจะได้สร้างสถาปัตยกรรมอินเทอร์เฟซ Private Service Connect (PSC) ที่ครอบคลุมซึ่งใช้กฎไฟร์วอลล์ของ Cloud เพื่ออนุญาตและปฏิเสธการเชื่อมต่อจากผู้ผลิตไปยังระบบประมวลผลของผู้บริโภคดังที่แสดงในรูปที่ 1

รูปที่ 1

d39bf35e55bdf9e6.png

คุณจะต้องสร้าง psc-network-attachment รายการเดียวใน VPC ของผู้บริโภค ซึ่งจะทำให้เกิดกรณีการใช้งานต่อไปนี้

  1. สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้หมีเข้าถึงสิงโตได้
  2. สร้างกฎไฟร์วอลล์ในระบบคลาวด์ที่ปฏิเสธการเข้าถึงจากหมีไปยังเสือ
  3. สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้เข้าถึงจาก cosmo ไปยัง bear

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างไฟล์แนบเครือข่าย
  • วิธีที่โปรดิวเซอร์สามารถใช้ไฟล์แนบเครือข่ายเพื่อสร้างอินเทอร์เฟซ PSC
  • วิธีสร้างการสื่อสารจากผู้ผลิตไปยังผู้บริโภค
  • วิธีอนุญาตให้เข้าถึงจาก VM ของผู้ผลิต (หมี) ไปยัง VM ของผู้บริโภค (สิงโต)
  • วิธีบล็อกการเข้าถึงจาก VM ของผู้ผลิต (หมี) ไปยัง VM ของผู้บริโภค (เสือ)
  • วิธีอนุญาตให้เข้าถึงจาก VM ของผู้บริโภค (cosmo) ไปยัง VM ของผู้ผลิต (bear)

สิ่งที่ต้องมี

2. ก่อนเริ่มต้น

อัปเดตโปรเจ็กต์เพื่อรองรับบทแนะนำ

บทแนะนำนี้ใช้ตัวแปร $เพื่อช่วยให้ใช้งานการกำหนดค่า gcloud ใน Cloud Shell ได้

ใน Cloud Shell ให้ทําดังนี้

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

3. การตั้งค่าสำหรับผู้บริโภค

สร้าง VPC ของผู้บริโภค

ใน Cloud Shell ให้ทําดังนี้

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

สร้างซับเน็ตของผู้บริโภค

ใน Cloud Shell ให้ทําดังนี้

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

ใน Cloud Shell ให้ทําดังนี้

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

ใน Cloud Shell ให้ทําดังนี้

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

สร้างซับเน็ตการแนบเครือข่าย Private Service Connect

ใน Cloud Shell ให้ทําดังนี้

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

การกำหนดค่า Cloud Router และ NAT

มีการใช้ Cloud NAT ในบทแนะนำสำหรับการติดตั้งแพ็กเกจซอฟต์แวร์เนื่องจากอินสแตนซ์ VM ไม่มีที่อยู่ IP สาธารณะ Cloud NAT ช่วยให้ VM ที่มีที่อยู่ IP ส่วนตัวเข้าถึงอินเทอร์เน็ตได้

สร้าง Cloud Router ใน Cloud Shell

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

สร้างเกตเวย์ NAT ใน Cloud Shell

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. เปิดใช้ IAP

หากต้องการอนุญาตให้ IAP เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎไฟร์วอลล์ที่มีลักษณะดังนี้

  • มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการเข้าถึงโดยใช้ IAP
  • อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้มีที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP

สร้างกฎไฟร์วอลล์ IAP ใน Cloud Shell

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

5. สร้างอินสแตนซ์ VM ของผู้บริโภค

สร้างอินสแตนซ์ VM ของผู้บริโภคชื่อ lion ใน Cloud Shell

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"

สร้างอินสแตนซ์ VM ของผู้บริโภคชื่อ tiger ใน Cloud Shell

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"

สร้างอินสแตนซ์ VM ของผู้บริโภคชื่อ cosmo ใน Cloud Shell

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"

รับและจัดเก็บที่อยู่ IP ของอินสแตนซ์ ดังนี้

ใน Cloud Shell ให้ใช้คำสั่ง describe กับอินสแตนซ์ VM ของสิงโตและเสือ

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. ไฟล์แนบเครือข่าย Private Service Connect

ไฟล์แนบเครือข่ายคือทรัพยากรระดับภูมิภาคที่แสดงถึงฝั่งผู้บริโภคของอินเทอร์เฟซ Private Service Connect คุณเชื่อมโยงซับเน็ตเดียวกับการแนบเครือข่าย และผู้ผลิตจะกำหนด IP ให้กับอินเทอร์เฟซ Private Service Connect จากซับเน็ตนั้น ซับเน็ตต้องอยู่ในภูมิภาคเดียวกับการแนบเครือข่าย ไฟล์แนบเครือข่ายต้องอยู่ในภูมิภาคเดียวกับบริการของโปรดิวเซอร์

สร้างไฟล์แนบเครือข่าย

สร้างไฟล์แนบเครือข่ายใน Cloud Shell

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

แสดงรายการไฟล์แนบของเครือข่าย

ใน Cloud Shell ให้แสดงรายการไฟล์แนบของเครือข่าย

gcloud compute network-attachments list

อธิบายไฟล์แนบของเครือข่าย

อธิบายไฟล์แนบเครือข่ายใน Cloud Shell

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

จด URI ของ psc-network-attachment ที่ผู้ผลิตจะใช้เมื่อสร้างอินเทอร์เฟซ Private Service Connect ตัวอย่างด้านล่าง

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. การตั้งค่า Producer

สร้างเครือข่าย VPC ของผู้ผลิต

ใน Cloud Shell ให้ทําดังนี้

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

สร้างซับเน็ตของผู้ผลิต

สร้างซับเน็ตที่ใช้สำหรับ vNIC0 ของอินเทอร์เฟซ psc ใน Cloud Shell

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

8. เปิดใช้ IAP

หากต้องการอนุญาตให้ IAP เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎไฟร์วอลล์ที่มีลักษณะดังนี้

  • มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการเข้าถึงโดยใช้ IAP
  • อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้มีที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP

สร้างกฎไฟร์วอลล์ IAP ใน Cloud Shell

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

9. สร้างอินเทอร์เฟซ Private Service Connect

อินเทอร์เฟซ Private Service Connect คือทรัพยากรที่ช่วยให้เครือข่าย Virtual Private Cloud (VPC) ของผู้ผลิตเริ่มการเชื่อมต่อกับปลายทางต่างๆ ในเครือข่าย VPC ของผู้บริโภคได้ เครือข่ายผู้ผลิตและเครือข่ายผู้บริโภคอาจอยู่ในโปรเจ็กต์และองค์กรที่แตกต่างกัน

หากไฟล์แนบเครือข่ายยอมรับการเชื่อมต่อจากอินเทอร์เฟซ Private Service Connect ทาง Google Cloud จะจัดสรรที่อยู่ IP ให้กับอินเทอร์เฟซจากซับเน็ตของผู้บริโภคที่ไฟล์แนบเครือข่ายระบุ เครือข่ายของผู้บริโภคและผู้ผลิตเชื่อมต่อกันและสื่อสารกันได้โดยใช้ที่อยู่ IP ภายใน

ใน Cloud Shell ให้สร้างอินเทอร์เฟซ Private Service Connect (หมี) และแทรก psc-network-attachment UR ที่ระบุไว้ก่อนหน้านี้จากเอาต์พุตอธิบายไฟล์แนบเครือข่าย

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

การตรวจสอบ NIC หลายรายการ

ตรวจสอบว่าอินเทอร์เฟซ PSC ได้รับการกําหนดค่าด้วยที่อยู่ IP ที่เหมาะสม vNIC0 จะใช้ prod-subnet ของผู้ผลิต (10.20.1.0/28) และ vNIC1 จะใช้ intf-subnet ของผู้บริโภค (192.168.10.0/28)

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

ตัวอย่าง

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

10. อัปเดตกฎไฟร์วอลล์ของผู้บริโภค

สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้หมีเข้าถึงสิงโตได้

ใน Cloud Shell ให้สร้างกฎที่มีลำดับความสำคัญสูงกว่าซึ่งอนุญาตให้มีการออกข้อมูลจากช่วงที่อยู่ IP ของ attachment-subnet (intf-subnet) ไปยังปลายทางในช่วงที่อยู่ของ 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

ใน Cloud Shell ให้สร้างกฎที่อนุญาตการรับส่งข้อมูลขาเข้าซึ่งลบล้างกฎการปฏิเสธการรับส่งข้อมูลขาเข้าโดยนัยสําหรับการรับส่งข้อมูลจากซับเน็ต psc-network-attachment

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

สร้างกฎไฟร์วอลล์ในระบบคลาวด์ที่ปฏิเสธการเข้าถึงจาก Bear ไปยังทุกช่วง (รวม Tiger ด้วย)

ใน Cloud Shell ให้สร้างกฎที่มีลําดับความสําคัญต่ำซึ่งปฏิเสธการรับส่งข้อมูลขาออกทั้งหมดจากช่วงที่อยู่ IP ของซับเน็ตของไฟล์แนบเครือข่าย 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

สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้เข้าถึงจาก cosmo ไปยัง bear

ใน Cloud Shell ให้สร้างกฎที่อนุญาตการรับส่งข้อมูลขาเข้าซึ่งลบล้างกฎการปฏิเสธการรับส่งข้อมูลขาเข้าโดยนัยสําหรับการรับส่งข้อมูลจากซับเน็ต psc-network-attachment

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. สร้างเส้นทาง Linux สําหรับอินเทอร์เฟซ PSC

จากอินสแตนซ์อินเทอร์เฟซ PSC ให้กําหนดค่าเส้นทาง Linux เพื่ออนุญาตให้โปรดิวเซอร์สื่อสารกับซับเน็ตของผู้บริโภค

ค้นหาชื่อระบบปฏิบัติการของผู้มาเยือนของอินเทอร์เฟซ Private Service Connect

หากต้องการกำหนดค่าการกำหนดเส้นทาง คุณต้องทราบชื่อระบบปฏิบัติการของผู้ใช้ชั่วคราวของอินเทอร์เฟซ Private Service Connect ซึ่งแตกต่างจากชื่ออินเทอร์เฟซใน Google Cloud

ใน Cloud Shell ให้เปิดแท็บใหม่แล้วทําดังนี้

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

เข้าสู่ระบบ VM psc-interface ชื่อ bear โดยใช้ IAP ใน Cloud Shell

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

ใน Cloud Shell ให้รับที่อยู่ IP ของอินสแตนซ์ psc-interface

ip a

ตัวอย่าง

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

ค้นหา IP เกตเวย์ของอินเทอร์เฟซ PSC

ในรายการอินเทอร์เฟซเครือข่าย ให้ค้นหาและบันทึกชื่ออินเทอร์เฟซที่เชื่อมโยงกับที่อยู่ IP ของอินเทอร์เฟซ Private Service Connect เช่น ens5 (vNIC1)

หากต้องการกำหนดค่าการกำหนดเส้นทาง คุณจะต้องทราบที่อยู่ IP ของเกตเวย์เริ่มต้นของอินเทอร์เฟซ Private Service Connect

ใน Cloud Shell เราจะใช้ 1 เนื่องจากอินเทอร์เฟซ PSC เชื่อมโยงกับ vNIC1

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

ตัวอย่างสร้าง gw เริ่มต้น 192.168.10.1

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

เพิ่มเส้นทางสำหรับซับเน็ตของผู้บริโภค

คุณต้องเพิ่มเส้นทางไปยังเกตเวย์เริ่มต้นของอินเทอร์เฟซ Private Service Connect สำหรับซับเน็ตของผู้บริโภคแต่ละรายการที่เชื่อมต่อกับอินเทอร์เฟซ Private Service Connect วิธีนี้ช่วยให้มั่นใจว่าการรับส่งข้อมูลที่กำหนดเส้นทางไปยังเครือข่ายของผู้บริโภคจะออกจากอินเทอร์เฟซ Private Service Connect

ในอินสแตนซ์ Bear ให้เพิ่มเส้นทางไปยังซับเน็ตของผู้บริโภค

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

ตรวจสอบตารางเส้นทาง

ใน Cloud Shell ให้ตรวจสอบเส้นทางที่เพิ่มใหม่

ip route show

ตัวอย่างเช่น

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. ตรวจสอบการเชื่อมต่อหมีกับสิงโตที่สำเร็จ

มาดูกันว่าอินสแตนซ์ VM ของผู้ผลิต bear สามารถสื่อสารกับอินสแตนซ์ของผู้บริโภค lion ได้โดยทำ curl

จากอินสแตนซ์หมี ให้ใช้ curl กับที่อยู่ IP ของสิงโตที่ระบุไว้ก่อนหน้านี้ในบทแนะนำจากอินสแตนซ์หมี

curl -v <lions IP Address>

ตัวอย่าง

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. ตรวจสอบว่าการเชื่อมต่อ Bear to Tiger ถูกบล็อก

มาดูกันว่ากฎไฟร์วอลล์ขาออกบล็อกการเข้าถึงจาก Bear ไปยัง Tiger หรือไม่โดยดูที่บันทึกไฟร์วอลล์

จากเซสชัน Cloud Console ใหม่ ให้ไปที่การบันทึก → Logs Explorer → เลือก "แสดงการค้นหา"

2ae597e6d970cddf.png

วางสตริงการค้นหาด้านล่างลงในช่องค้นหา แล้วเลือกสตรีม

jsonPayload.rule_details.reference="network:consumer-vpc/firewall:deny-all-egress"

30d7bfae315f2ee3.png

จากอินสแตนซ์หมี ให้ใช้คำสั่ง curl กับที่อยู่ IP ของเสือที่ระบุไว้ก่อนหน้านี้ในบทแนะนำจากอินสแตนซ์หมี Curl จะหมดเวลาในที่สุด

curl -v <tiger's IP Address>

ตัวอย่าง

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

ตรวจสอบว่าเครื่องมือสำรวจบันทึกได้บันทึกบันทึกไฟร์วอลล์ที่ถูกปฏิเสธ เลือกรายการบันทึกและขยายช่องที่ฝังอยู่เพื่อดูข้อมูลเมตา

5c42a6587300be55.png

14. ตรวจสอบการเชื่อมต่อ Cosmo สำเร็จ

เปิดแท็บ Cloud Shell ใหม่และอัปเดตการตั้งค่าโปรเจ็กต์

ใน Cloud Shell ให้ทําดังนี้

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

เข้าสู่ระบบอินสแตนซ์ Cosmo โดยใช้ IAP ใน Cloud Shell

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

ใน Cloud Shell ให้ทำการ ping กับที่อยู่ IP vNIV1 ของ Bear ที่ระบุไว้ก่อนหน้านี้ในบทแนะนำ

ping <bears vNIC1 IP Address>

ตัวอย่าง

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. ล้างข้อมูล

ลบคอมโพเนนต์บทแนะนำจาก Cloud Shell

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. ขอแสดงความยินดี

ขอแสดงความยินดี คุณได้กําหนดค่าและตรวจสอบอินเทอร์เฟซ Private Service Connect รวมถึงการเชื่อมต่อของผู้บริโภคและผู้ผลิตเรียบร้อยแล้วโดยใช้กฎไฟร์วอลล์

คุณได้สร้างโครงสร้างพื้นฐานของผู้บริโภคและเพิ่มไฟล์แนบเครือข่ายที่อนุญาตให้ผู้ผลิตสร้าง VM หลาย NIC เพื่อเชื่อมต่อการสื่อสารระหว่างผู้บริโภคและผู้ผลิต คุณได้เรียนรู้วิธีสร้างกฎไฟร์วอลล์ในเครือข่าย VPC ของผู้บริโภคที่อนุญาตให้เชื่อมต่อกับอินสแตนซ์ใน VPC ของผู้บริโภคและ VPC ของผู้ผลิต

Cosmopup คิดว่าบทแนะนำเจ๋งสุดๆ

e6d3675ca7c6911f.jpeg

ขั้นตอนถัดไป

ลองดูบทแนะนำเหล่านี้...

การอ่านเพิ่มเติมและวิดีโอ

เอกสารอ้างอิง