1. مقدمة
واجهة Private Service Connect هي مورد يتيح لشبكة السحابة الإلكترونية الخاصة الافتراضية (VPC) الخاصة بالمنتِج بدء الاتصالات بمختلف الوجهات في شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC) الخاصة بالمستهلك. يمكن أن تكون شبكات المنتجين والمستهلكين في مشاريع ومؤسسات مختلفة.
إذا قبلت أداة ربط الشبكة اتصالاً من واجهة Private Service Connect، يخصّص Google Cloud للواجهة عنوان IP من شبكة فرعية للمستهلك تحدّدها أداة ربط الشبكة. ترتبط شبكات المستهلكين والمنتجين ويمكنها التواصل باستخدام عناوين IP الداخلية.
يشبه الاتصال بين مرفق الشبكة وواجهة Private Service Connect الاتصال بين نقطة نهاية Private Service Connect ومرفق الخدمة، ولكنّه يختلف عنه في نقطتَين أساسيتَين:
- تتيح مرفقات الشبكة لشبكة المنتج بدء الاتصالات بشبكة المستهلك (خروج الخدمة المُدارة)، بينما تتيح نقطة النهاية لشبكة المستهلك بدء الاتصالات بشبكة المنتج (دخول الخدمة المُدارة).
- اتصال واجهة Private Service Connect متعدٍّ. وهذا يعني أنّه يمكن لشبكة منتِجة التواصل مع شبكات أخرى مرتبطة بشبكة المستهلك.
ما ستنشئه
ستنشئ مرفقًا واحدًا لشبكة PSC في شبكة VPC الخاصة بالمستهلك، ما يؤدي إلى إنشاء واجهتَي PSC كخلفيات لجهاز موازنة الحمل الداخلي من الطبقة 4. من شبكة VPC الخاصة بالمنتج، سيرسل VPC tiger طلب curl إلى cosmo في شبكة VPC الخلفية. في شبكة VPC الخاصة بالمنتج، ستنشئ مسارًا ثابتًا إلى حركة بيانات الوجهة 192.168.20.0/28، وستكون الخطوة التالية هي جهاز موازنة الحمل الداخلي الذي سيستفيد من الواجهات الخلفية وواجهات PSC اللاحقة لتوجيه حركة البيانات إلى cosmo. راجِع الشكل 1 للحصول على نظرة عامة.
يمكن اتّباع النهج نفسه مع الخدمات المُدارة من Google والتي يتم تبادل المعلومات بينها وبين شبكة VPC الخاصة بالعميل عند استخدام الوصول الخاص إلى الخدمة.
الشكل 1

ما ستتعلمه
- كيفية إنشاء مرفق شبكة
- كيف يمكن للمنتِج استخدام مرفق شبكة لإنشاء واجهة PSC كخلفيات
- كيفية إنشاء اتصال من المنتِج إلى المستهلك باستخدام ILB كقفزة تالية
- كيفية السماح بالوصول من الجهاز الظاهري الخاص بالمنتج (tiger) إلى الجهاز الظاهري الخاص بالمستهلك (cosmo) عبر ربط شبكة VPC
المتطلبات
- مشروع Google Cloud
- أذونات "إدارة الهوية وإمكانية الوصول"
- مشرف شبكة Cloud Compute (roles/compute.networkAdmin)
- مشرف مثيل Compute (roles/compute.instanceAdmin)
- مشرف أمان Compute (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
إنشاء الشبكة الفرعية لمرفق شبكة 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
إنشاء شبكة VPC للخادم الخلفي
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create backend-vpc --project=$projectid --subnet-mode=custom
إنشاء الشبكات الفرعية لشبكة VPC الخلفية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets create cosmo-subnet-1 --project=$projectid --range=192.168.20.0/28 --network=backend-vpc --region=us-central1
إنشاء قواعد جدار الحماية backend-vpc
في Cloud Shell، أنشئ قاعدة دخول للزيارات من الشبكة الفرعية psc-network-attachment إلى cosmo
gcloud compute firewall-rules create allow-ingress-to-cosmo \
--network=backend-vpc \
--action=ALLOW \
--rules=ALL \
--direction=INGRESS \
--priority=1000 \
--source-ranges="192.168.10.0/28" \
--destination-ranges="192.168.20.0/28" \
--enable-logging
إعداد Cloud Router وNAT
يتم استخدام Cloud NAT في البرنامج التعليمي لتثبيت حزمة البرامج لأنّ الجهاز الظاهري لا يتضمّن عنوان IP عامًا. تتيح خدمة Cloud NAT للأجهزة الافتراضية التي تستخدم عناوين IP خاصة الوصول إلى الإنترنت.
داخل Cloud Shell، أنشئ موجّه السحابة.
gcloud compute routers create cloud-router-for-nat --network backend-vpc --region us-central1
داخل Cloud Shell، أنشئ بوابة 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. تفعيل عمليات الشراء داخل التطبيق
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح بحركة البيانات الواردة من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.
داخل Cloud Shell، أنشئ قاعدة جدار حماية IAP.
gcloud compute firewall-rules create ssh-iap-consumer \
--network backend-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
5- إنشاء مثيلات أجهزة افتراضية للمستهلكين
داخل Cloud Shell، أنشئ مثيل الجهاز الافتراضي للمستهلك، 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 cosmo's backend server !!' | tee /var/www/html/index.html
EOF"
الحصول على عناوين IP الخاصة بالأجهزة الافتراضية وتخزينها:
داخل Cloud Shell، نفِّذ وصفًا لمثيلات الأجهزة الافتراضية في Cosmo.
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$ gcloud compute network-attachments describe psc-network-attachment --region=us-central1
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2023-06-07T11:27:33.116-07:00'
fingerprint: 8SDsvG6TfYQ=
id: '5014253525248340730'
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 الخاصة بالمستهلك وشبكة VPC الخلفية
عليك إنشاء اتصال ربط شبكة VPC بين شبكة VPC الخاصة بالمستهلك وشبكة VPC الخلفية. ويكرّر ذلك الطريقة التي تنشئ بها Google اتصالاً بشبكات VPC الخاصة بالعملاء للخدمات المُدارة، بالإضافة إلى الربط بين المؤسسات لتوفير اتصال الشبكة. يجب إعداد ربط VPC من كل شبكة VPC.
تبادل المعلومات بين شبكة VPC الخاصة بالمستهلك وشبكة VPC الخلفية
إنشاء اتصال تبادل معلومات بين الشبكات لشبكة VPC من المستهلك إلى شبكة VPC الخلفية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks peerings create consumer-to-backend-vpc \
--network=consumer-vpc \
--peer-project=$projectid \
--peer-network=backend-vpc \
--stack-type=IPV4_ONLY
إنشاء اتصال تبادل معلومات بين الشبكات لشبكة VPC من الخلفية إلى شبكة VPC الخاصة بالمستهلك
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks peerings create backend-to-consumer-vpc \
--network=backend-vpc \
--peer-project=$projectid \
--peer-network=consumer-vpc \
--stack-type=IPV4_ONLY
التحقّق من صحة تفاصيل حالة تبادل المعلومات بين شبكات VPC
داخل Cloud Shell، تأكَّد من أنّ حالة "الربط بين شبكات VPC" هي "نشط" و"متصل".
gcloud compute networks peerings list
مثال:
user@cloudshell$ gcloud compute networks peerings list
NAME: backend-to-consumer-vpc
NETWORK: backend-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: consumer-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU:
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.
NAME: consumer-to-backend-vpc
NETWORK: consumer-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: backend-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU:
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.
8. إعداد Producer
إنشاء شبكة 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
داخل Cloud Shell، أنشئ الشبكة الفرعية المستخدَمة للمثيل tiger.
gcloud compute networks subnets create prod-subnet-2 --project=$projectid --range=10.30.1.0/28 --network=producer-vpc --region=us-central1
داخل Cloud Shell، أنشئ الشبكة الفرعية المستخدَمة لجهاز موازنة الحمل الداخلي.
gcloud compute networks subnets create prod-subnet-3 --project=$projectid --range=172.16.10.0/28 --network=producer-vpc --region=us-central1
إعداد Cloud Router وNAT
يتم استخدام Cloud NAT في البرنامج التعليمي لتثبيت حزمة البرامج لأنّ الجهاز الظاهري لا يتضمّن عنوان IP عامًا. تتيح خدمة Cloud NAT للأجهزة الافتراضية التي تستخدم عناوين IP خاصة الوصول إلى الإنترنت.
داخل Cloud Shell، أنشئ موجّه السحابة.
gcloud compute routers create cloud-router-for-nat-producer --network producer-vpc --region us-central1
داخل Cloud Shell، أنشئ بوابة NAT.
gcloud compute routers nats create cloud-nat-us-central1-producer --router=cloud-router-for-nat-producer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
تفعيل عمليات الشراء داخل التطبيق
للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة VM الافتراضية، أنشئ قاعدة جدار حماية تتضمّن ما يلي:
- ينطبق على جميع مثيلات الأجهزة الافتراضية التي تريد إتاحتها باستخدام IAP.
- يسمح بحركة البيانات الواردة من نطاق عناوين IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي تستخدمها خدمة IAP لإعادة توجيه بروتوكول TCP.
داخل Cloud Shell، أنشئ قاعدة جدار حماية IAP.
gcloud compute firewall-rules create ssh-iap-producer \
--network producer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
إنشاء مثيلات أجهزة افتراضية للمنتج
داخل Cloud Shell، أنشئ مثيل الجهاز الافتراضي للمستهلك، 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=prod-subnet-2 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump"
9- إنشاء قواعد جدار الحماية الخاصة بالمنتج
في شبكة VPC الخاصة بالمنتج، أنشئ قاعدة جدار حماية تتيح الدخول تسمح بالاتصال من prod-subnet-2 بجميع المثيلات في producer-vpc.
داخل Cloud Shell، أنشئ قاعدة جدار الحماية الخاصة بالمنتج.
gcloud compute --project=$projectid firewall-rules create allow-tiger-ingress --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=10.30.1.0/28 --enable-logging
10. إنشاء واجهة Private Service Connect
واجهة Private Service Connect هي مورد يتيح لشبكة السحابة الإلكترونية الخاصة الافتراضية (VPC) الخاصة بالمنتِج بدء الاتصالات بمختلف الوجهات في شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC) الخاصة بالمستهلك. يمكن أن تكون شبكات المنتجين والمستهلكين في مشاريع ومؤسسات مختلفة.
إذا قبلت أداة ربط الشبكة اتصالاً من واجهة Private Service Connect، يخصّص Google Cloud للواجهة عنوان IP من شبكة فرعية للمستهلك تحدّدها أداة ربط الشبكة. ترتبط شبكات المستهلكين والمنتجين ويمكنها التواصل باستخدام عناوين IP الداخلية.
في هذا البرنامج التعليمي، ستنشئ مثلتَين باستخدام مرفق شبكة Private Service Connect الذي سيكون الخلفية لجهاز موازنة الحمل الداخلي.
داخل Cloud Shell، أنشئ واجهة Private Service Connect (rabbit) وأدرِج معرّف الموارد المنتظم (URI) لربط الشبكة الذي تم تحديده سابقًا من ناتج وصف ربط الشبكة.
gcloud compute instances create rabbit --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 --metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump
sudo apt-get install apache2 -y
sudo service apache2 restart"
في Cloud Shell، أنشئ واجهة Private Service Connect (fox) وأدرِج psc-network-attachment URI الذي تم تحديده سابقًا من ناتج وصف ربط الشبكة.
gcloud compute instances create fox --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 --metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump
sudo apt-get install apache2 -y
sudo service apache2 restart"
التحقّق من صحة بطاقات الشبكة المتعددة
تأكَّد من ضبط واجهة PSC باستخدام عنوان IP المناسب. ستستخدم vNIC0 شبكة prod-subnet الخاصة بالمنتج (10.20.1.0/28)، وستستخدم vNIC1 شبكة intf-subnet الخاصة بالمستهلك (192.168.10.0/28).
gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:
gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:
مثال:
user$ gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:
networkIP: 10.20.1.2
networkIP: 192.168.10.2
user$ gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:
networkIP: 10.20.1.3
networkIP: 192.168.10.3
11. إنشاء أرنب وثعلب وإضافتهما إلى مجموعة مثيلات غير مُدارة
في القسم التالي، ستنشئ مجموعة مثيلات غير مُدارة تتألف من مثيلات واجهة PSC، أي rabbit وfox.
داخل Cloud Shell، أنشئ مجموعة الأجهزة الافتراضية غير المُدارة.
gcloud compute instance-groups unmanaged create psc-interface-instances-ig --project=$projectid --zone=us-central1-a
داخل Cloud Shell، أضِف مثيلَي fox وrabbit إلى مجموعة المثيلات.
gcloud compute instance-groups unmanaged add-instances psc-interface-instances-ig --project=$projectid --zone=us-central1-a --instances=fox,rabbit
12. إنشاء التحقق من الصحة لبروتوكول TCP وخدمات الخلفية وقاعدة إعادة التوجيه وجدار الحماية
داخل Cloud Shell، أنشئ عملية التحقّق من صحة الخلفية.
gcloud compute health-checks create http hc-http-80 --port=80
إنشاء خدمة الخلفية داخل Cloud Shell
gcloud compute backend-services create psc-interface-backend --load-balancing-scheme=internal --protocol=tcp --region=us-central1 --health-checks=hc-http-80
gcloud compute backend-services add-backend psc-interface-backend --region=us-central1 --instance-group=psc-interface-instances-ig --instance-group-zone=us-central1-a
إنشاء قاعدة إعادة التوجيه داخل Cloud Shell
gcloud compute forwarding-rules create psc-ilb --region=us-central1 --load-balancing-scheme=internal --network=producer-vpc --subnet=prod-subnet-3 --address=172.16.10.10 --ip-protocol=TCP --ports=all --backend-service=psc-interface-backend --backend-service-region=us-central1
إنشاء قاعدة جدار حماية من Cloud Shell لتفعيل عمليات التحقّق من صحة الخلفية
gcloud compute firewall-rules create ilb-health-checks --allow tcp:80,tcp:443 --network producer-vpc --source-ranges 130.211.0.0/22,35.191.0.0/16
13. إنشاء جداول IP لنظام التشغيل Linux لواجهات PSC - rabbit
من مثيل واجهة PSC، اضبط جداول عناوين IP في نظام التشغيل Linux للسماح بتواصل المنتج مع الشبكات الفرعية للمستهلك.
العثور على اسم نظام التشغيل الضيف لواجهة Private Service Connect
لضبط التوجيه، عليك معرفة اسم نظام التشغيل الضيف لواجهة Private Service Connect، وهو يختلف عن اسم الواجهة في Google Cloud.
سجِّل الدخول إلى الجهاز الظاهري لواجهة psc وRabbit باستخدام IAP في Cloud Shell.
gcloud compute ssh rabbit --project=$projectid --zone=us-central1-a --tunnel-through-iap
في Cloud Shell، احصل على عنوان IP الخاص بمثيل psc-interface.
ip a
مثال:
user@rabbit:~$ 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 59396sec preferred_lft 59396sec
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 66782sec preferred_lft 66782sec
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
ينتج المثال بوابة تلقائية 192.168.10.1
user@rabbit:~$ 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.
التحقّق من صحة جدول التوجيه
في Cloud Shell، تحقّق من صحة المسارات الحالية.
ip route show
على سبيل المثال،
user@rabbit:~$ 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
في Cloud Shell، أضِف المسار إلى cosmo-subnet-1.
sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5
التحقّق من صحة جدول التوجيه
في Cloud Shell، تحقّق من صحة المسارات المضافة المعدَّلة.
ip route show
على سبيل المثال،
user@rabbit:~$ 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
إنشاء قواعد جداول عناوين IP
في Cloud Shell، تحقّق من صحة جداول IP الحالية.
sudo iptables -t nat -L -n -v
مثال:
user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
تعديل جداول IP في Cloud Shell
sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1
في Cloud Shell، تحقّق من صحة جداول IP المعدَّلة.
sudo iptables -t nat -L -n -v
مثال:
user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ens5 0.0.0.0/0 0.0.0.0/0
14. إنشاء جداول IP لنظام التشغيل Linux لواجهات PSC - fox
من مثيل واجهة PSC، اضبط جداول عناوين IP في نظام التشغيل Linux للسماح بتواصل المنتج مع الشبكات الفرعية للمستهلك.
العثور على اسم نظام التشغيل الضيف لواجهة Private Service Connect
لضبط التوجيه، عليك معرفة اسم نظام التشغيل الضيف لواجهة Private Service Connect، وهو يختلف عن اسم الواجهة في Google Cloud.
افتح علامة تبويب جديدة في Cloud Shell وعدِّل إعدادات مشروعك.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
سجِّل الدخول إلى الجهاز الظاهري psc-interface، fox، باستخدام IAP في Cloud Shell.
gcloud compute ssh fox --project=$projectid --zone=us-central1-a --tunnel-through-iap
في Cloud Shell، احصل على عنوان IP الخاص بمثيل psc-interface.
ip a
مثال:
user@fox:~$ 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:03 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 10.20.1.3/32 brd 10.20.1.3 scope global dynamic ens4
valid_lft 65601sec preferred_lft 65601sec
inet6 fe80::4001:aff:fe14:103/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:03 brd ff:ff:ff:ff:ff:ff
altname enp0s5
inet 192.168.10.3/32 brd 192.168.10.3 scope global dynamic ens5
valid_lft 63910sec preferred_lft 63910sec
inet6 fe80::4001:c0ff:fea8:a03/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
ينتج المثال بوابة تلقائية 192.168.10.1
user@fox:~$ 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.
التحقّق من صحة جدول التوجيه
في Cloud Shell، تحقّق من صحة المسارات الحالية.
ip route show
على سبيل المثال،
user@fox:~$ 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
في Cloud Shell، أضِف المسار إلى cosmo-subnet-1.
sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5
التحقّق من صحة جدول التوجيه
في Cloud Shell، تحقّق من صحة المسارات المضافة المعدَّلة.
ip route show
على سبيل المثال،
user@fox:~$ 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
إنشاء قواعد جداول عناوين IP
في Cloud Shell، تحقّق من صحة جداول IP الحالية.
sudo iptables -t nat -L -n -v
مثال:
user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
في Cloud Shell، عدِّل جداول IP.
sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1
في Cloud Shell، تحقّق من صحة جداول IP المعدَّلة.
sudo iptables -t nat -L -n -v
مثال:
user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ens5 0.0.0.0/0 0.0.0.0/0
15. تعديل جدول التوجيه
في شبكة VPC الخاصة بالمنتج، أنشِئ مسارًا ثابتًا إلى الشبكة الفرعية للمستهلكين 192.168.20.0/28، والقفزة التالية هي جهاز موازنة الحمل الداخلي. بعد الإنشاء، سيتم توجيه أي حزمة (داخل شبكة VPC الخاصة بالمنتج) إلى الوجهة 192.168.20.0/28 إلى موازن الحمل الداخلي.
افتح علامة تبويب جديدة في Cloud Shell وعدِّل إعدادات مشروعك.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
في Cloud Shell، عدِّل جدول مسار VPC الخاص بالمنتج باستخدام مسار ثابت.
gcloud beta compute routes create producer-to-cosmo-subnet-1 --project=$projectid --network=producer-vpc --priority=1000 --destination-range=192.168.20.0/28 --next-hop-ilb=psc-ilb --next-hop-ilb-region=us-central1
16. التحقّق من نجاح الاتصال من tiger إلى cosmo
التحقّق من صحة Curl
لنؤكّد أنّ مثيل الجهاز الافتراضي الخاص بالمنتج، tiger، يمكنه التواصل مع مثيل المستهلك، cosmo، من خلال تنفيذ curl.
افتح علامة تبويب جديدة في Cloud Shell وعدِّل إعدادات مشروعك.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
سجِّل الدخول إلى مثيل tiger باستخدام IAP في Cloud Shell.
gcloud compute ssh tiger --project=$projectid --zone=us-central1-a --tunnel-through-iap
نفِّذ عملية curl على عنوان IP الخاص بـ Cosmo الذي تم تحديده سابقًا في البرنامج التعليمي من مثيل Tiger.
curl -v <cosmo's IP Address>
مثال:
user@tiger:~$ 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: Fri, 09 Jun 2023 03:49:42 GMT
< Server: Apache/2.4.56 (Debian)
< Last-Modified: Fri, 09 Jun 2023 03:28:37 GMT
< ETag: "27-5fda9f6ea060e"
< Accept-Ranges: bytes
< Content-Length: 39
< Content-Type: text/html
<
Welcome to cosmo's backend server !!
تهانينا!! لقد تحقّقت بنجاح من إمكانية الاتصال من شبكة VPC الخاصة بالمنتج إلى شبكة VPC الخلفية من خلال تنفيذ أمر curl.
17. تَنظيم
من Cloud Shell، احذف مكوّنات البرنامج التعليمي.
gcloud compute instances delete cosmo --zone=us-central1-a --quiet
gcloud compute instances delete rabbit --zone=us-central1-a --quiet
gcloud compute instances delete fox --zone=us-central1-a --quiet
gcloud compute instances delete tiger --zone=us-central1-a --quiet
gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet
gcloud compute firewall-rules delete allow-ingress-to-cosmo allow-tiger-ingress ilb-health-checks ssh-iap-consumer ssh-iap-producer --quiet
gcloud beta compute routes delete producer-to-cosmo-subnet-1 --quiet
gcloud compute forwarding-rules delete psc-ilb --region=us-central1 --quiet
gcloud compute backend-services delete psc-interface-backend --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-interface-instances-ig --zone=us-central1-a --quiet
gcloud compute health-checks delete hc-http-80 --quiet
gcloud compute networks subnets delete cosmo-subnet-1 prod-subnet prod-subnet-2 prod-subnet-3 intf-subnet --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet
gcloud compute routers delete cloud-router-for-nat-producer --region=us-central1 --quiet
gcloud compute networks delete consumer-vpc --quiet
gcloud compute networks delete producer-vpc --quiet
gcloud compute networks delete backend-vpc --quiet
18 تهانينا
تهانينا، لقد نجحت في إعداد واجهة Private Service Connect والتحقّق منها، كما تحقّقت من إمكانية الاتصال بين المستهلك والمنتج عبر تبادل معلومات بين شبكات VPC.
لقد أنشأت البنية الأساسية للمستهلك، وأضفت مرفق شبكة سمح للمنتج بإنشاء جهاز افتراضي متعدد بطاقات واجهة شبكة (NIC) لربط الاتصال بين المستهلك والمنتج. تعرّفت على كيفية استخدام واجهة PSC للتواصل مع خدمات الطرف الأول أو الطرف الثالث من خلال تبادل معلومات بين الشبكات عبر شبكة VPC باستخدام جهاز موازنة حمل داخلي ومسار ثابت في شبكة VPC الخاصة بالمنتج.
تعتقد Cosmopup أنّ الفيديوهات التعليمية رائعة!!

ما هي الخطوات التالية؟
يمكنك الاطّلاع على بعض هذه البرامج التعليمية...
- استخدام Private Service Connect لنشر الخدمات واستهلاكها مع GKE
- استخدام Private Service Connect لنشر الخدمات واستهلاكها
- الاتصال بالخدمات المحلية عبر شبكة مختلطة باستخدام خدمة Private Service Connect وجهاز موازنة الحمل الداخلي الذي يستخدم وكيل TCP
مزيد من المعلومات والفيديوهات
- نظرة عامة على Private Service Connect
- ما هي خدمة Private Service Connect؟
- أنواع موازنات الحمل المتوافقة