1. مقدمة
واجهة Private Service Connect هي مورد يتيح لشبكة سحابة إلكترونية خاصة افتراضية (VPC) للمنتج بدء عمليات الربط بوجهات مختلفة في شبكة سحابة إلكترونية خاصة افتراضية للمستهلك. يمكن أن تكون شبكات المنتجين والمستهلكين في مشاريع ومؤسسات مختلفة.
إذا كانت مرفقات الشبكة تقبل اتصالاً من واجهة Private Service Connect، تخصص Google Cloud للواجهة عنوان IP من شبكة فرعية للمستهلك يحدّده مرفق الشبكة. تكون شبكات المستهلكين والمنتجين متصلة ويمكنها التواصل باستخدام عناوين IP الداخلية.
يشبه الاتصال بين مرفق الشبكة وواجهة Private Service Connect الاتصال بين نقطة نهاية Private Service Connect ومرفق الخدمة، ولكن هناك اختلافان رئيسيان بينهما:
- تسمح إضافة الشبكة لشبكة المنتج ببدء عمليات الربط بشبكة المستهلِك (مغادرة الخدمة المُدارة)، في حين تسمح نقطة النهاية لشبكة المستهلِك ببدء عمليات الربط بشبكة المنتج (دخول الخدمة المُدارة).
- يكون اتصال واجهة Private Service Connect انتقاليًا. وهذا يعني أنّ شبكة المنتجين يمكنها التواصل مع الشبكات الأخرى المتصلة بشبكة المستهلكين.
ما ستُنشئه
ستُنشئ مرفق شبكة psc-network-attachment واحدًا في شبكة VPC للمستهلك، ما يؤدي إلى إنشاء واجهتَي PSC كخلفيتَين لجهاز موازنة الحمل الداخلي من المستوى 4. من شبكة VPC الخاصة بالمنتج، سيرسل Tiger طلب curl إلى Cosmo في backend-vpc. في "سحابة VPC" الخاصة بالمنتج، عليك إنشاء مسار ثابت إلى قفزة الوجهة 192.168.20.0/28 كجهاز موازنة الحمل الداخلي الذي سيستفيد من الخلفية وواجهات PSC اللاحقة لتوجيه الزيارات إلى Cosmo. اطّلِع على الشكل 1 للحصول على نظرة عامة.
يمكن استخدام النهج نفسه مع الخدمات المُدارة من Google التي يتم ربطها بشبكة VPC مع شبكة VPC الخاصة بالعميل عند استخدام إمكانية الوصول إلى الخدمة الخاصة.
الشكل 1
ما ستتعرّف عليه
- كيفية إنشاء مرفق شبكة
- كيفية استخدام المنتج مرفق شبكة لإنشاء واجهة PSC كخدمات خلفية
- كيفية إنشاء اتصال من المنتج إلى المستهلِك باستخدام "التحميل الموازن للطبقة الأساسية" كقفزة تالية
- كيفية السماح بالوصول من الجهاز الافتراضي للمنتج (tiger) إلى الجهاز الافتراضي للمستهلك (cosmo) عبر ربط شبكات VPC
المتطلبات
- مشروع Google Cloud
- أذونات إدارة الهوية وإمكانية الوصول
- مشرف شبكة Compute (roles/compute.networkAdmin)
- مشرف مثال Cloud 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
إنشاء الشبكة الفرعية لمرفق شبكة 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 في البرنامج التعليمي الخاص بتثبيت حِزم البرامج لأنّ مثيل VM لا يتضمّن عنوان IP علنيًا. تتيح ميزة "ترجمة عنوان الشبكة في السحابة الإلكترونية" للأجهزة الافتراضية التي تتضمّن عناوين 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. تفعيل 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، نفِّذ الأمر describe مع مثيلات الأجهزة الافتراضية 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
دوِّن معرّف الموارد المنتظم 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 للاستهلاك والخلفية. يُعيد هذا الإجراء طريقة 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. إعداد حساب المنتج
إنشاء شبكة 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 في البرنامج التعليمي الخاص بتثبيت حِزم البرامج لأنّ مثيل VM لا يتضمّن عنوان IP علنيًا. تتيح ميزة "ترجمة عنوان الشبكة في السحابة الإلكترونية" للأجهزة الافتراضية التي تتضمّن عناوين 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
تفعيل 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) للمنتج بدء عمليات الربط بوجهات مختلفة في شبكة سحابة إلكترونية خاصة افتراضية للمستهلك. يمكن أن تكون شبكات المنتجين والمستهلكين في مشاريع ومؤسسات مختلفة.
إذا كانت مرفقات الشبكة تقبل اتصالاً من واجهة Private Service Connect، تخصص Google Cloud للواجهة عنوان IP من شبكة فرعية للمستهلك يحدّده مرفق الشبكة. تكون شبكات المستهلكين والمنتجين متصلة ويمكنها التواصل باستخدام عناوين IP الداخلية.
في البرنامج التعليمي، ستُنشئ مثيلَين باستخدام مرفق شبكة "اتصال الخدمات الخاصة" الذي سيكون الخلفية لجهاز موازنة الحمل الداخلي.
داخل Cloud Shell، أنشئ واجهة Private Service Connect (rabbit) وأدخِل عنوان URL لـ psc-network-attachment الذي تم تحديده سابقًا من ناتج وصف مرفق الشبكة.
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) وأدخِل عنوان URL لـ psc-network-attachment الذي تم تحديده سابقًا من ناتج وصف مرفق الشبكة.
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"
التحقّق من صحة عناوين ip المتعددة
تأكَّد من ضبط واجهة PSC باستخدام عنوان IP المناسب. ستستخدم وحدة vNIC0 شبكة فرعية للإنتاج (10.20.1.0/28)، وستستخدم وحدة vNIC1 شبكة فرعية للتفاعل (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. إنشاء rabbit وfox وإضافتهما إلى مجموعة مثيلات غير مُدارة
في القسم التالي، ستُنشئ مجموعة نُسخ مثبّتة غير مُدارة ستتألف من نُسخ rabbit وfox لواجهة PSC.
داخل 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) - الأرنب
من مثيل واجهة PSC، يمكنك ضبط جداول IP في Linux للسماح للمنتِج بالتواصل مع الشبكات الفرعية للمستهلِك.
العثور على اسم نظام التشغيل الضيف لواجهة Private Service Connect
لضبط التوجيه، عليك معرفة اسم نظام التشغيل للضيف في واجهة Private Service Connect، والذي يختلف عن اسم الواجهة في Google Cloud.
سجِّل الدخول إلى جهاز الكمبيوتر الظاهري psc-interface، rabbit، باستخدام IAP في Cloud Shell.
gcloud compute ssh rabbit --project=$projectid --zone=us-central1-a --tunnel-through-iap
في Cloud Shell، احصل على عنوان IP لمثيل واجهة psc.
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
ينتج المثال عنوان gw التلقائي 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
في 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@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.
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
ينتج المثال عنوان gw التلقائي 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، مع ضبط القفزة التالية على أنّها جهاز موازنة الحمل الداخلي. بعد الإنشاء، سيتم توجيه أي حزمة (ضمن "شبكة إنتاج الفيديو") إلى الوجهة 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، عدِّل جدول مسار producer-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
التحقّق من تجعد الشعر
لنتأكّد من أنّ مثيل الجهاز الافتراضي للمنتِج، 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.
لقد أنشأت البنية الأساسية للمستهلك وأضفت مرفق شبكة سمح للمنتج بإنشاء جهاز افتراضي مزوّد بعدة بطاقات شبكة لربط اتصالات المستهلك والمنتج. لقد تعرّفت على كيفية استخدام واجهة PSC للتواصل مع خدمات الطرف الأول/الطرف الثالث عبر ربط VPC باستخدام جهاز موازنة حمل داخلي ومسار ثابت في vpc الخاص بالمنتج.
تعتقد Cosmopup أنّ الأدلة التعليمية رائعة.
الخطوة التالية
اطّلِع على بعض هذه الأدلة التعليمية...
- استخدام Private Service Connect لنشر الخدمات واستخدامها باستخدام GKE
- استخدام Private Service Connect لنشر الخدمات واستخدامها
- الاتصال بالخدمات المستضافة على الموقع باستخدام "الشبكات المختلطة" باستخدام Private Service Connect وجهاز موازنة تحميل وكيل TCP داخلي
مزيد من المراجع والفيديوهات
- نظرة عامة على Private Service Connect
- ما هي خدمة Private Service Connect؟
- أنواع أجهزة موازنة الحمولة المتوافقة