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

1. مقدمة

واجهة Private Service Connect هي مورد يتيح لشبكة السحابة الإلكترونية الافتراضية الخاصة (VPC) للمُنتِج بدء اتصالات بوجهات مختلفة في شبكة VPC الاستهلاكية. قد تكون شبكات الإنتاج والمستهلكين في مشاريع ومؤسسات مختلفة.

إذا قبل مرفق شبكة اتصالاً من واجهة Private Service Connect، تخصّص خدمة Google Cloud للواجهة عنوان IP من الشبكة الفرعية للمستهلك والتي حدّدها مرفق الشبكة. شبكتا المستهلك والمنتج متصلان ويمكنهما الاتصال باستخدام عناوين IP داخلية.

يتشابه الاتصال بين مرفق شبكة وواجهة Private Service Connect مع الاتصال بين نقطة نهاية Private Service Connect ومرفق خدمة، ولكن هناك نوعان مختلفان من الاتصال:

  • يتيح مرفق الشبكة لشبكة المنتج بدء اتصالات بشبكة مستهلك (خروج خدمة مُدارة)، بينما تتيح نقطة النهاية لشبكة مستهلك بدء اتصالات بشبكة المنتج (دخول الخدمة المُدارة).
  • اتصال واجهة Private Service Connect عملية انتقالية. وهذا يعني أنه يمكن لشبكة المنتجين الاتصال بشبكات أخرى متصلة بشبكة المستهلك.

ما الذي ستقوم ببنائه

عليك إنشاء مرفق واحد من نوع psc-network في شبكة VPC للمستهلك، ما يؤدي إلى إنشاء واجهتَي PSC كخلفيات لجهاز موازنة الحمل الداخلي من المستوى 4. من المنتج VPC tiger سيرسل ملتفة إلى cosmo في backend-vpc. في سحابة VPC الخاصة بمنتج المنتج، عليك إنشاء مسار ثابت إلى حركة بيانات الوجهة 192.168.20.0/28 في المرحلة التالية كجهاز موازنة الحمل الداخلي الذي سيستخدم الواجهة الخلفية وواجهات(واجهات) PSC اللاحقة لتوجيه حركة البيانات إلى الكون. انظر الشكل 1 للحصول على نظرة عامة.

يمكن استخدام النهج نفسه مع الخدمات المُدارة من Google والتي يتم تبادلها مع شبكة VPC الخاصة بالعميل عند استخدام الوصول إلى الخدمة الخاصة.

على شكل 1

36dbc7f825a21cbd.png

المعلومات التي ستطّلع عليها

  • كيفية إنشاء مرفق شبكة
  • كيف يمكن للمنتج استخدام مرفق شبكة لإنشاء واجهة PSC كخلفيات
  • كيفية التواصل من المنتج إلى المستهلك باستخدام حزمة ILB في المرحلة التالية
  • كيفية السماح بالوصول من الجهاز الافتراضي (VM) الخاص بالمنتِج إلى الجهاز الافتراضي (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 إلى 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

إعدادات جهاز توجيه السحابة الإلكترونية وترجمة عنوان الشبكة (NAT)

يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في البرنامج التعليمي لتثبيت حزمة البرامج لأن الجهاز الافتراضي (VM) ليس له عنوان IP عام. تُتيح آلية Cloud NAT (ترجمة عنوان الشبكة) للأجهزة الافتراضية (VM) التي لها عناوين 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. تفعيل الشراء داخل التطبيق

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

  • ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
  • يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.

داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network backend-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

5- إنشاء مثيلات الأجهزة الافتراضية للمستهلك

داخل Cloud Shell، إنشاء مثيل vm للمستهلك، cosmo

gcloud compute instances create cosmo \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=cosmo-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to cosmo's backend server !!' | tee /var/www/html/index.html
      EOF"

الحصول على عناوين IP للمثيلات وتخزينها:

داخل Cloud Shell، أدخِل وصفًا لمثيلات cosmo VM.

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 الذي سيستخدمه المنتج عند إنشاء واجهات اتصال الخدمة الخاصة. المثال التالي:

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 في الخلفية. يكرّر ذلك كيفية إنشاء Google للاتصال بخوادم 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 من الخلفية إلى العميل الافتراضي

داخل 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، أنشئ الشبكة الفرعية المستخدَمة لنمر المثيل.

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

إعدادات جهاز توجيه السحابة الإلكترونية وترجمة عنوان الشبكة (NAT)

يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في البرنامج التعليمي لتثبيت حزمة البرامج لأن الجهاز الافتراضي (VM) ليس له عنوان IP عام. تُتيح آلية Cloud NAT (ترجمة عنوان الشبكة) للأجهزة الافتراضية (VM) التي لها عناوين 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

تفعيل الشراء داخل التطبيق

للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:

  • ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
  • يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.

داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.

gcloud compute firewall-rules create ssh-iap-producer \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

إنشاء مثيلات الجهاز الافتراضي (VM) الخاصة بالمنتِ

داخل Cloud Shell، أنشئ مثيل vm للمستهلك، tiger

gcloud compute instances create tiger \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=prod-subnet-2 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump"

9. إنشاء قواعد جدار الحماية للمنتج

في سحابة VPC الخاصة بأداة المنتج، أنشئ قاعدة جدار حماية دخول تسمح بالاتصال من prod-subnet-2 إلى جميع الحالات في POLICY-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 داخلية.

ستنشئ في البرنامج التعليمي حالتين باستخدام مرفق اتصال الشبكة الخاص الذي سيكون الخلفية لجهاز موازنة التحميل الداخلي.

داخل Cloud Shell، أنشِئ واجهة Private Service Connect (أرنب) وأدرِج عنوان URL الخاص بـ psc-network-attachment UR الذي تم تحديده سابقًا من مرفق الشبكة الخاص بالناتج.

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 الشبكة الفرعية للمنتج (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 أرنب وثعلب.

داخل Cloud Shell، أنشئ مجموعة المثيلات غير المُدارة.

gcloud compute instance-groups unmanaged create psc-interface-instances-ig --project=$projectid --zone=us-central1-a

داخل Cloud Shell، أضف ثعلبًا وأرانبًا إلى مجموعة المثيل.

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. إنشاء جداول linux IP لواجهة(واجهات) PSC - أرنب

من مثيل واجهة PSC، يمكنك إعداد جداول عنوان IP في نظام التشغيل Linux للسماح بتواصل المنتج إلى الشبكات الفرعية للمستهلكين.

ابحث عن اسم نظام تشغيل الضيف في واجهة Private Service Connect.

لضبط التوجيه، يجب معرفة اسم نظام تشغيل الضيف لواجهة Private Service Connect، والذي يختلف عن اسم الواجهة في Google Cloud.

سجّل الدخول إلى psc-interface vm، vm، باستخدام بروتوكول 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

ينتج في المثال المعامل التلقائي 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  

تعديل جداول عناوين 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. إنشاء جداول linux IP لواجهة(واجهات) PSC - ثعلب

من مثيل واجهة 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 vm، 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

ينتج في المثال المعامل التلقائي 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. تعديل جدول المسار

في prod-vpc، أنشأ مسارًا ثابتًا للشبكة الفرعية للمستهلكين 192.168.20.0/28، وهي القفزة التالية كجهاز موازنة الحمل الداخلي. بعد الإنشاء، سيتم توجيه أي حزمة (داخل POLICY-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، يمكنك تعديل جدول المسار product-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

التحقّق من صحة تمويج الشعر

لنؤكّد أنّ مثيل الجهاز الافتراضي (VM) للمنتِج، tiger، يمكنه التواصل مع مثيل المستهلك، cosmo من خلال تنفيذ حلقة منعطف.

افتح علامة تبويب جديدة في Cloud Shell وعدِّل إعدادات مشروعك.

داخل Cloud Shell، يمكنك تنفيذ ما يلي:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

سجِّل الدخول إلى مثيل النمور باستخدام الشراء داخل التطبيق في Cloud Shell.

gcloud compute ssh tiger --project=$projectid --zone=us-central1-a --tunnel-through-iap

قم بإجراء دائرة حول عنوان IP الخاص بـ cosmo المحدد سابقًا في البرنامج التعليمي من مثيل النمور.

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 !!

تهانينا!! لقد تحققت بنجاح من الاتصال من POLICY-vpc إلى backend-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 تهانينا

تهانينا، لقد نجحت في إعداد والتحقّق من صحة واجهة اتصال الخدمة الخاصة، كما تم التحقّق من إمكانية اتصال المستهلك والمنتج من خلال تبادل المعلومات بين شبكات VPC.

لقد أنشأت البنية الأساسية للمستهلك، وأضفت مرفق شبكة سمح للمنتِج بإنشاء جهاز افتراضي متعدد المستويات للتواصل بين المستهلكين والمنتجين. لقد تعلّمت كيف يمكن استخدام واجهة PSC للاتصال بخدمات 1P/3P من خلال تبادل المعلومات بين الشبكات باستخدام تبادل المعلومات بين الشبكات باستخدام جهاز موازنة حمل داخلي ومسار ثابت في vpc الخاص بالمنتج.

يعتبر تطبيق Cosmopup الفيديوهات التعليمية رائعة.

e6d3675ca7c6911f.jpeg

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

اطّلع على بعض هذه البرامج التعليمية...

تعزيز القراءة الفيديوهات

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