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
คุณจะสร้างไฟล์แนบเครือข่าย PSC รายการเดียวใน VPC ของผู้บริโภค ซึ่งทำให้เกิดกรณีการใช้งานต่อไปนี้
- สร้างกฎไฟร์วอลล์ของ Cloud เพื่ออนุญาตการเข้าถึงจากหมีถึงสิงโต
- สร้างกฎของ Cloud ไฟร์วอลล์ปฏิเสธการเข้าถึงจากหมีเป็นเสือ
- สร้างกฎการเก็บรักษาของ Cloud เพื่ออนุญาตการเข้าถึงจาก Cosmo ไปจนถึง Bear
สิ่งที่คุณจะได้เรียนรู้
- วิธีการสร้างไฟล์แนบเครือข่าย
- ผู้ผลิตสามารถใช้ไฟล์แนบเครือข่ายเพื่อสร้างอินเทอร์เฟซ PSC ได้อย่างไร
- วิธีสร้างการสื่อสารจากผู้ผลิตไปยังผู้บริโภค
- วิธีอนุญาตการเข้าถึงจาก VM ผู้ผลิต (หมี) ไปยัง VM สำหรับผู้บริโภค (สิงโต)
- วิธีบล็อกการเข้าถึงจาก VM ผู้ผลิต (หมี) ไปยัง VM ของผู้บริโภค (Tiger)
- วิธีอนุญาตการเข้าถึงจาก VM สำหรับผู้บริโภค (cosmo) ไปยัง VM ของผู้ผลิต (หมี)
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud
- สิทธิ์ IAM
- ผู้ดูแลระบบเครือข่าย Compute (roles/compute.networkAdmin)
- ผู้ดูแลระบบอินสแตนซ์ Compute (roles/compute.instanceAdmin)
- ผู้ดูแลระบบความปลอดภัยของการประมวลผล (roles/compute.securityAdmin)
2. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์เพื่อรองรับบทแนะนำ
บทแนะนำนี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า 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 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 ของผู้บริโภค
ใน Cloud Shell ให้สร้างอินสแตนซ์ VM ของผู้บริโภค เช่น 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"
ใน Cloud Shell ให้สร้างอินสแตนซ์ VM สำหรับผู้บริโภคชื่อ 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"
ใน Cloud Shell ให้สร้างอินสแตนซ์ VM สำหรับผู้บริโภคชื่อ 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"
รับและจัดเก็บที่อยู่ IP ของอินสแตนซ์:
ภายใน Cloud Shell ให้ดำเนินการอธิบายอินสแตนซ์ VM ของ Lion และ 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. ไฟล์แนบเครือข่ายของ 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. การตั้งค่าผู้ผลิต
สร้างเครือข่าย VPC ผู้ผลิต
ภายใน Cloud Shell ให้ดำเนินการต่อไปนี้
gcloud compute networks create producer-vpc --project=$projectid --subnet-mode=custom
สร้างซับเน็ตผู้ผลิต
ภายใน Cloud Shell ให้สร้างซับเน็ตที่ใช้สำหรับ vNIC0 ของอินเทอร์เฟซ psc
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 ภายในได้
Inside Cloud Shell ให้สร้างอินเทอร์เฟซ Private Service Connect (หมี) แล้วแทรก psc-network-attachment URI ที่ระบุก่อนหน้านี้จากเอาต์พุตอธิบายไฟล์แนบเครือข่าย
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
การตรวจสอบความถูกต้องแบบหลายเทคนิค
ตรวจสอบความถูกต้องของอินเทอร์เฟซ 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 เพื่ออนุญาตการเข้าถึงจากหมีถึงสิงโต
ใน Cloud Shell ให้สร้างกฎลำดับความสำคัญที่สูงขึ้นซึ่งอนุญาตข้อมูลขาออกจากช่วงที่อยู่ IP ของซับเน็ตไฟล์แนบ (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
สร้างกฎของ Cloud ไฟร์วอลล์ปฏิเสธการเข้าถึงทุกช่วงจากหมี (รวมเสือ)
ใน Cloud Shell ให้สร้างกฎที่มีลำดับความสำคัญต่ำที่ปฏิเสธการรับส่งข้อมูลขาออกทั้งหมดจากช่วงที่อยู่ IP ของซับเน็ตของไฟล์แนบเครือข่าย
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
สร้างกฎการเก็บรักษาของ Cloud เพื่ออนุญาตการเข้าถึงจาก 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
Inside Cloud Shell ให้เปิดแท็บใหม่และดำเนินการต่อไปนี้
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
เข้าสู่ระบบ VM ของอินเทอร์เฟซ PSC โดยใช้ IAP ใน Cloud Shell
gcloud compute ssh bear --project=$projectid --zone=us-central1-a --tunnel-through-iap
รับที่อยู่ IP ของอินสแตนซ์อินเทอร์เฟซ psc ใน Cloud Shell
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
ในอินสแตนซ์หมี ให้เพิ่มเส้นทางไปยังซับเน็ตของผู้บริโภค
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 ของผู้ผลิตหมีสามารถสื่อสารกับอินสแตนซ์ของผู้บริโภคอย่าง lion โดยใช้การเล่น 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. ตรวจสอบการเชื่อมต่อ "หมีกับเสือ" ถูกบล็อก
โปรดยืนยันว่ากฎไฟร์วอลล์ขาออกกำลังบล็อกการเข้าถึงจากหมีจนถึงเสือโดยการดูบันทึกไฟร์วอลล์
จากเซสชัน Cloud Console ใหม่ ให้ไปที่การบันทึก → เครื่องมือสำรวจบันทึก → เลือกแสดงการค้นหา
วางสตริงการค้นหาด้านล่างในช่องค้นหา แล้วเลือกสตรีม
jsonPayload.rule_details.reference="network:consumer-vpc/firewall:deny-all-egress"
จากตัวอย่างหมี ให้ทำการขดดูที่อยู่ IP ของเสือที่ระบุไว้ก่อนหน้านี้ในบทแนะนำจากตัวอย่างหมี เคอร์ลิงจะหมดเวลาในที่สุด
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
ตรวจสอบว่า Log Explorer ได้บันทึกบันทึกไฟร์วอลล์ที่ถูกปฏิเสธ เลือกรายการบันทึกและขยายช่องที่ซ้อนกันเพื่อดูข้อมูลเมตา
14. ตรวจสอบการเชื่อมต่อ Cosmo to Bear ว่าประสบความสำเร็จ
เปิดแท็บ 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 ของหมีที่ระบุก่อนหน้านี้ในบทแนะนำ
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 แบบมัลตินิกเพื่อเชื่อมการสื่อสารระหว่างผู้บริโภคและผู้ผลิต คุณได้เรียนรู้วิธีสร้างกฎไฟร์วอลล์ในเครือข่าย VPC ของผู้บริโภคที่อนุญาตให้เชื่อมต่อกับอินสแตนซ์ใน VPC ของผู้บริโภคและผู้ผลิตแล้ว
Cosmopup คิดว่าบทแนะนำยอดเยี่ยม!!
สิ่งที่ต้องทำต่อไป
ดูบทแนะนำบางส่วนเหล่านี้...
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการด้วย GKE
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการ
- เชื่อมต่อกับบริการภายในองค์กรผ่านเครือข่ายแบบผสมโดยใช้ Private Service Connect และตัวจัดสรรภาระงานพร็อกซี TCP ภายใน