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-network-attachment รายการเดียวใน VPC ของผู้บริโภค ซึ่งจะทำให้เกิดกรณีการใช้งานต่อไปนี้
- สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้หมีเข้าถึงสิงโตได้
- สร้างกฎไฟร์วอลล์ในระบบคลาวด์ที่ปฏิเสธการเข้าถึงจากหมีไปยังเสือ
- สร้างกฎไฟร์วอลล์ในระบบคลาวด์เพื่ออนุญาตให้เข้าถึงจาก cosmo ไปยัง bear
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างไฟล์แนบเครือข่าย
- วิธีที่โปรดิวเซอร์สามารถใช้ไฟล์แนบเครือข่ายเพื่อสร้างอินเทอร์เฟซ PSC
- วิธีสร้างการสื่อสารจากผู้ผลิตไปยังผู้บริโภค
- วิธีอนุญาตให้เข้าถึงจาก VM ของผู้ผลิต (หมี) ไปยัง VM ของผู้บริโภค (สิงโต)
- วิธีบล็อกการเข้าถึงจาก VM ของผู้ผลิต (หมี) ไปยัง VM ของผู้บริโภค (เสือ)
- วิธีอนุญาตให้เข้าถึงจาก VM ของผู้บริโภค (cosmo) ไปยัง VM ของผู้ผลิต (bear)
สิ่งที่ต้องมี
- โปรเจ็กต์ Google Cloud
- สิทธิ์ IAM
- ผู้ดูแลระบบเครือข่าย Compute (roles/compute.networkAdmin)
- ผู้ดูแลระบบอินสแตนซ์ Compute (roles/compute.instanceAdmin)
- ผู้ดูแลระบบรักษาความปลอดภัยของ Compute (roles/compute.securityAdmin)
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 → เลือก "แสดงการค้นหา"
วางสตริงการค้นหาด้านล่างลงในช่องค้นหา แล้วเลือกสตรีม
jsonPayload.rule_details.reference="network:consumer-vpc/firewall:deny-all-egress"
จากอินสแตนซ์หมี ให้ใช้คำสั่ง 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
ตรวจสอบว่าเครื่องมือสำรวจบันทึกได้บันทึกบันทึกไฟร์วอลล์ที่ถูกปฏิเสธ เลือกรายการบันทึกและขยายช่องที่ฝังอยู่เพื่อดูข้อมูลเมตา
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 คิดว่าบทแนะนำเจ๋งสุดๆ
ขั้นตอนถัดไป
ลองดูบทแนะนำเหล่านี้...
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการด้วย GKE
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการ
- เชื่อมต่อกับบริการในองค์กรผ่านเครือข่ายแบบผสมโดยใช้ Private Service Connect และตัวจัดสรรภาระงานพร็อกซี TCP ภายใน