الخدمات المُدارة لواجهة 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 في شبكة VPC الخاصة بالمستهلك، ما يؤدي إلى إنشاء واجهتَي PSC كخلفيات لجهاز موازنة الحمل الداخلي من الطبقة 4. من شبكة VPC الخاصة بالمنتج، سيرسل VPC tiger طلب curl إلى cosmo في شبكة VPC الخلفية. في شبكة VPC الخاصة بالمنتج، ستنشئ مسارًا ثابتًا إلى حركة بيانات الوجهة 192.168.20.0/28، وستكون الخطوة التالية هي جهاز موازنة الحمل الداخلي الذي سيستفيد من الواجهات الخلفية وواجهات PSC اللاحقة لتوجيه حركة البيانات إلى cosmo. راجِع الشكل 1 للحصول على نظرة عامة.

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

الشكل 1

36dbc7f825a21cbd.png

ما ستتعلمه

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

e6d3675ca7c6911f.jpeg

ما هي الخطوات التالية؟

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

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

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