الخدمات المُدارة لواجهة Private Service Connect Interface

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

36dbc7f825a21cbd.png

ما ستتعرّف عليه

  • كيفية إنشاء مرفق شبكة
  • كيفية استخدام المنتج مرفق شبكة لإنشاء واجهة PSC كخدمات خلفية
  • كيفية إنشاء اتصال من المنتج إلى المستهلِك باستخدام "التحميل الموازن للطبقة الأساسية" كقفزة تالية
  • كيفية السماح بالوصول من الجهاز الافتراضي للمنتج (tiger) إلى الجهاز الافتراضي للمستهلك (cosmo) عبر ربط شبكات VPC

المتطلبات

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 أنّ الأدلة التعليمية رائعة.

e6d3675ca7c6911f.jpeg

الخطوة التالية

اطّلِع على بعض هذه الأدلة التعليمية...

مزيد من المراجع والفيديوهات

مستندات المرجع