استخدام Private Service Connect لنشر الخدمات واستخدامها

1. مقدمة

تتيح Private Service Connect لمنتج الخدمة تقديم الخدمات بشكل خاص لمستهلك الخدمة. يوفّر Private Service Connect المزايا التالية:

  • يمكن لشبكة VPC لمنتج الخدمة أن تتيح استخدام أكثر من مستهلك خدمة واحد.
  • يتصل كل مستهلك بعنوان IP داخلي يحدده. ينفّذ Private Service Connect ترجمة عنوان الشبكة (NAT) لتوجيه الطلب إلى منتِج الخدمة.

45b90d50690dd111.png

الشكل 2. تستخدم Private Service Connect نقاط النهاية ومرفقات الخدمة للسماح لمستهلكي الخدمة بإرسال حركة البيانات من شبكة VPC الخاصة بالمستهلك إلى الخدمات في شبكة VPC الخاصة بمنتج الخدمة (انقر للتكبير).

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

  • مزايا ربط الخدمة الخاصة
  • المفاهيم الرئيسية لمستهلكي الخدمات
  • المفاهيم الرئيسية لمنتجي الخدمات
  • إنشاء بيئة منتج
  • عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
  • إنشاء بيئة للمستهلك
  • إنشاء قاعدة إعادة توجيه في شبكة المستهلك
  • التحقق من إمكانية وصول مستهلكي بروتوكول التحكم بالنقل
  • تفعيل & التحقّق من صحة بروتوكول الخادم الوكيل
  • تفعيل التحكم في الوصول للسياسة

المتطلبات

  • الإلمام بأجهزة موازنة الحمل الداخلية
  • القدرة على إنشاء سحابة VPC في مشروعين

2. مزايا ربط الخدمة الخاصة

عند استخدام PSC، يمكنك الاستفادة من العديد من المزايا مقارنةً باستخدام تبادل المعلومات بين شبكات VPC:

تحكُّم أفضل في مساحة عناوين IP الخاصة

  • بصفتك مستهلكًا للخدمة، يمكنك التحكُّم في عنوان IP الخاص المُستخدم للاتصال بالخدمة المُدارة التي تريد الوصول إليها.
  • بصفتك مستهلكًا للخدمة، لا داعي للقلق بشأن حجز نطاقات عناوين IP الخاصة لخدمات الخلفية التي يتم استهلاكها في شبكة VPC. ما عليك سوى اختيار عنوان IP من شبكتك الفرعية للاتصال بخدمات المنتجين.
  • بصفتك من منتجي الخدمة، يمكنك اختيار استخدام نموذج استعارة متعدّدة، حيث تحتوي سحابة VPC على خدمات توفّر عدة شبكات VPC للمستهلكين. لم يعد المستهلكون الذين لديهم نطاقات شبكة فرعية متداخلة مشكلةً.
  • وبصفتك مقدِّم خدمة، يمكنك توسيع نطاق خدمتك إلى أكبر عدد ممكن من مثيلات الأجهزة الافتراضية، بدون الحاجة إلى التواصل مع المستهلك للحصول على مزيد من عناوين IP.

تحسين مستوى الأمان والعزل

  • بصفتك مستهلكًا للخدمة، يمكنك وحدك بدء التواصل مع منتِج الخدمة. يعمل هذا الاتصال أحادي الاتجاه على تبسيط تهيئة جدار الحماية إلى حد كبير، ولكنه يقلل أيضًا من المخاطر الناتجة عن حركة البيانات العشوائية الواردة من منتِج الخدمة.
  • بصفتك منتج خدمة، لن تحتاج إلى تغيير قواعد جدار الحماية استنادًا إلى نطاقات الشبكة الفرعية في VPC للمستهلك. يمكنك ببساطة إنشاء قواعد جدار حماية لنطاق عنوان IP الخاص بترجمة عنوان الشبكة (NAT) والذي تم إعداده لخدمتك.

قابلية تطوير أفضل

  • تتيح PSC تصميمًا قابلاً للتوسع بشكل كبير من خلال دعم آلاف المستهلكين، كما تسمح لجهات إصدار الخدمات بتقديم خدمات قابلة للتوسع بشكل كبير متعدد المستأجرين أو خدمات مستأجر واحد.
  • بصفتك مستهلك خدمة يستخدم خدمة خاصة، يمكنك إنشاء موارد حسب الحاجة في سحابة VPC. لا يتأثّر حجم ذلك بعدد هذه الموارد التي تم إنشاؤها في سحابة VPC الخاصة بالمنتج.

3- المفاهيم الرئيسية لمستهلكي الخدمات

يمكنك استخدام نقاط نهاية Private Service Connect للاستفادة من الخدمات خارج شبكة VPC. ينشئ مستهلكو الخدمة نقاط نهاية Private Service Connect تتصل بخدمة مستهدَفة.

نقاط النهاية

يمكنك استخدام نقاط نهاية Private Service Connect للاتصال بخدمة مستهدَفة. تحتوي نقاط النهاية على عنوان IP داخلي في شبكة VPC وتستند إلى مورد قاعدة إعادة التوجيه.

يمكنك إرسال الزيارات إلى نقطة النهاية التي تعيد توجيهها إلى استهدافات خارج شبكة VPC.

الأهداف

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

  • حزمة واجهة برمجة التطبيقات:
  • جميع واجهات برمجة التطبيقات: معظم واجهات Google APIs
  • VPC-SC: واجهات برمجة التطبيقات المتوافقة مع عناصر التحكم في خدمة سحابة VPC
  • خدمة منشورة في شبكة سحابة VPC أخرى يمكن إدارة هذه الخدمة من خلال مؤسستك أو جهة خارجية.

خدمة منشورة

لربط نقطة النهاية بخدمة منتِج الخدمة، تحتاج إلى مرفق الخدمة للخدمة. يحتوي معرّف الموارد المنتظم (URI) لمرفق الخدمة على هذا التنسيق: projects/SERVICE_PROJECT/regions/region/serviceمُرفَقs/SERVICE_NAME

4. المفاهيم الرئيسية لمنتجي الخدمات

لإتاحة إحدى الخدمات للمستهلكين، يمكنك إنشاء واحدة أو أكثر من الشبكات الفرعية المخصصة لاستخدامها في ترجمة عنوان الشبكة (NAT) لعناوين IP للمستهلك. بعد ذلك، تُنشئ مرفق خدمة يشير إلى هذه الشبكات الفرعية.

الشبكات الفرعية الخاصة بخدمة Private Service Connect

لعرض خدمة، ينشئ منتج الخدمة أولاً شبكة فرعية واحدة أو أكثر باستخدام Private Service Connect.

عند إرسال طلب من شبكة VPC للمستهلك، تتم ترجمة عنوان IP المصدر للمستهلك باستخدام NAT (SNAT) المصدر إلى عنوان IP تم اختياره من إحدى الشبكات الفرعية لـ Private Service Connect.

إذا كنت تريد الاحتفاظ بمعلومات عنوان IP لاتصال المستهلك، راجع عرض معلومات اتصال المستهلك.

ولا يمكن استخدام هذه الشبكات الفرعية للموارد، مثل مثيلات الأجهزة الافتراضية أو قواعد إعادة التوجيه. تُستخدم الشبكات الفرعية فقط لتوفير عناوين IP لمؤشر SNAT للاتصالات الواردة من المستهلكين.

يجب أن تحتوي الشبكة الفرعية لـ Private Service Connect على عنوان IP واحد على الأقل لكل 63 جهاز افتراضي (VM) للمستهلكين لكي يتم تخصيص 1,024 صف مصدر لترجمة عنوان الشبكة لكل جهاز افتراضي.

الحد الأدنى لحجم الشبكة الفرعية الخاصة بـ Private Service Connect هو /24.

مرفقات الخدمة

يعرض منتجو الخدمة خدمتهم من خلال مرفق خدمة.

  • لعرض خدمة، ينشئ منتج الخدمة مرفق خدمة يشير إلى قاعدة إعادة توجيه جهاز موازنة الحمل للخدمة.
  • للوصول إلى خدمة، ينشئ مستهلك الخدمة نقطة نهاية تشير إلى مرفق الخدمة.

إعدادات الاتصال المفضّلة

عندما تنشئ خدمة، تختار طريقة إتاحتها. وثمة خياران لذلك:

  • قبول الاتصالات تلقائيًا لجميع المشاريع - يمكن لأي مستهلك خدمة ضبط نقطة نهاية والاتصال بالخدمة تلقائيًا.
  • قبول الاتصالات لمشاريع محددة - يهيئ مستخدمو الخدمة نقطة نهاية للاتصال بالخدمة ويقبل منتج الخدمة طلبات الاتصال أو يرفضها.

5- بيئة الاختبار

تتكوّن شبكة المستهلك من عنوان IP ثابت لبروتوكول TCP يُستخدم في إنشاء الطلبات إلى منتِج الخدمة، بالإضافة إلى مرفق الخدمة المستهدفة الذي يرتبط بمرفق خدمة المنتج (الخدمة المنشورة).

لنلقِ الآن نظرة على شبكة المنتجين. لاحظ كيف أن شبكة المنتجين ليس لها تعيين لشبكة المستهلكين، ولكن، بدلاً من ذلك، تحتوي شبكة المنتجين على مرفق خدمة (خدمة منشورة) يستخدمه المستهلك للخدمات. إن مرفق خدمة المنتج في معملنا عبارة عن جهاز موازنة الحمل الداخلي من الطبقة 4 (Pproduct-forwarding-rule) الذي يتم ربطه بخدمة خلفية تدعم تطبيق بروتوكول التحكم بالنقل.

تسمح الشبكة الفرعية NAT وقواعد جدار الحماية المرتبطة بالاتصال بتطبيق المنتِج.

28b09284a99eb60b.png

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

bce75f34b2c53987.png

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:

f6ef2b5f13479f3a.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل على Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ كل أعمالك في هذا التمرين من خلال متصفح.

6- قبل البدء

يتطلب الدرس التطبيقي حول الترميز مشروعَين، على الرغم من أنّ هذا البرنامج ليس شرطًا لـ PSC. دوّن المراجع لدعم مشروع واحد أو عدة مشروعات.

مشروع واحد: تعديل المشروع لدعم المنتِج وشبكة المستهلك

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

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

مشروعات متعددة: تحديث المشروع لدعم شبكة المنتجين

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

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

7. إنشاء شبكة VPC لـ الإنتاجين

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

شبكة سحابة VPC

من Cloud Shell

gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom

إنشاء شبكة فرعية

من Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2

إنشاء مثيل Cloud NAT

تقنية NAT في السحابة الإلكترونية ليست هي نفسها ترجمة عنوان الشبكة المستخدمة في PSC. يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية بشكل صريح للوصول إلى الإنترنت لتنزيل حزم التطبيقات.

إنشاء Cloud Router

من Cloud Shell

gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2

إنشاء Cloud NAT

من Cloud Shell

gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

8. إنشاء مثيلات الحوسبة

من Cloud Shell، أنشئ مثيلاً www-01

gcloud compute instances create www-01 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

من Cloud Shell، أنشئ مثيلاً www-02

gcloud compute instances create www-02 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

9. إنشاء مجموعة مثيلات غير مُدارة

إنشاء مجموعة مثيلات غير مُدارة تتكون من www-01 www-02

من Cloud Shell

gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a

gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02

gcloud compute health-checks create http hc-http-80 --port=80

10. إنشاء خدمات الواجهة الخلفية لبروتوكول TCP وقاعدة إعادة التوجيه جدار حماية

أنشئ خدمة الخلفية من Cloud Shell.

gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80

gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a

من Cloud Shell، يمكنك إنشاء قاعدة إعادة التوجيه.

gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2

من Cloud Shell، يمكنك إنشاء قاعدة جدار حماية لتفعيل عمليات التحقّق من الصحة في الخلفية.

gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging

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

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

من Cloud Shell

gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

11. إنشاء شبكة فرعية لـ TCP (ترجمة عنوان الشبكة)

من Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect

12. إنشاء مرفقات خدمة TCP وقواعد جدار الحماية

من Cloud Shell، أنشئ مرفق خدمة TCP.

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp

التحقق من صحة مرفق خدمة TCP

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2

من Cloud Shell، أنشئ قاعدة جدار حماية تسمح بوصول الشبكة الفرعية لـ TCP NAT إلى الواجهة الخلفية لـ ILB.

gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging

13. إنشاء شبكة VPC للمستهلكين

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

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

شبكة VC

يتطلب الدرس التطبيقي حول الترميز مشروعَين، على الرغم من أنّ هذا البرنامج ليس شرطًا لـ PSC. دوّن المراجع لدعم مشروع واحد أو عدة مشروعات.

مشروع واحد: تعديل المشروع لدعم المنتِج وشبكة المستهلك

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

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

مشروعات متعددة - تحديث المشروع لدعم الشبكة للمستهلك

داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.

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

من Cloud Shell

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

إنشاء شبكة فرعية لـ PSC

من Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2

إنشاء عنوان IP ثابت لتطبيقات TCP

من Cloud Shell

gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100

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

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

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

من Cloud Shell

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

على الرغم من أن ذلك ليس مطلوبًا لـ PSC، يمكنك إنشاء قاعدة جدار حماية للمخرج لمراقبة حركة بيانات PSC للمستهلك إلى مرفق خدمة المنتجين.

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

إنشاء مثيل Cloud NAT

تقنية NAT في السحابة الإلكترونية ليست هي نفسها ترجمة عنوان الشبكة المستخدمة في PSC. يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية بشكل صريح للوصول إلى الإنترنت من أجل تنزيل حِزم التطبيقات.

إنشاء Cloud Router

من Cloud Shell

gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2

إنشاء Cloud NAT

من Cloud Shell

gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

14. إنشاء جهاز افتراضي لمثيل الاختبار

من Cloud Shell

gcloud compute instances create test-instance-1 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=consumer-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install iperf3 -y
apt-get install tcpdump -y'

15. إنشاء مرفق خدمة TCP

من Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

16. التحقّق من الصحة

سنستخدم CURL وTCPDUMP سجلات جدار الحماية للتحقق من صحة اتصال المستهلك والمنتج.

يتم استخدام عناوين IP الثابتة في مشروع المستهلك لإنشاء الاتصال بمنتِج. يتم التحقّق من صحة ربط عنوان IP الثابت بقاعدة إعادة توجيه المستهلك من خلال تنفيذ البنية التالية.

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

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

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2

إخراج:

IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T13:34:23.359-07:00'
id: '2768158450402915488'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
<snip>

17. التحقق من صحة بروتوكول التحكم بالنقل (TCP)

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

من مشروع أداة الإنتاج، حدد "www-01" &amp; "www-02" وشغِّل جلسة SSH واحدة لكل مثيل.

6d0bb8c5cb115876.png

من "www-01" تنفيذ بروتوكول TCPDUMP لمراقبة بروتوكول NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

من "www-02" تنفيذ بروتوكول TCPDUMP لمراقبة بروتوكول NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

من مشروع المستهلك، حدِّد "test-instance-1". وإطلاق جلستين.

من "test-instance-1" تؤدي الجلسة الأولى بروتوكول TCPDUMP لمراقبة المستهلك

sudo tcpdump -i any host 10.0.60.100 -n

من "test-instance-1" الجلسة الثانية تقوم بإجراء تحقق من بروتوكول التحكم في الإرسال (TCP)

curl -v 10.0.60.100 

18 الملاحظات - المستهلك

من "test-instance-1" الجلسة الثانية CURL ناجحة وينتج عنها 200 OK.

@test-instance-1:~$ curl -v 10.0.60.100 
* Rebuilt URL to: 10.0.60.100/
*   Trying 10.0.60.100...
* TCP_NODELAY set
* Connected to 10.0.60.100 (10.0.60.100) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.60.100
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Wed, 14 Jul 2021 21:20:22 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT
< ETag: "1d-5c71aed5edabd"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/html
< 
Page on www-01 in us-west2-a
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.60.100 left intact

من "test-instance-1" الجلسة الأولى TCPDUMP تحدد مثيل الجهاز الافتراضي ← اتصال واستجابة عنوان IP الثابت لبروتوكول TCP

21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

تسجيل جدار الحماية

استخدام مستكشف السجلات للتحقق من قاعدة جدار الحماية "vpc-consumner-psc" هو التقاط التدفق بين الجهاز الافتراضي وعنوان IP الثابت

  1. من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
  2. في الحقل "Query" (طلب البحث)، حدِّث الإدخال أدناه باستخدام yourconsumerproject (تشغيل طلب البحث)

LogName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة

b573c878a8d6d01f.png

  1. وسِّع السجلّ وحدِّد المخرجات المقدَّمة أدناه. لاحظ أن dest_ip: 10.0.60.100 هو عنوان IP الثابت لبروتوكول TCP و src_ip: 10.0.60.2 هو عنوان IP لمثيل الجهاز الافتراضي.

1b4f46b3e61f6f12.png

19. الملاحظات - المنتج

من مثيل الخلفية "www-01" أو "www-02" تتم ملاحظة الاتصال التالي بين الشبكة الفرعية لـ TCP NAT وTCP ILB.

21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

20. تسجيل جدار الحماية

استخدام مستكشف السجلات للتحقق من قاعدة جدار الحماية "vpc-demo-allowpsc-tcp" التقاط بروتوكول NAT (ترجمة عنوان الشبكة) (TCP) تدفق TCP ILB من خلال تنفيذ الخطوات التالية:

  1. من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
  2. في الحقل "Query" (استعلام) ، قم بتحديث الإدخال أدناه باستخدام yourprodproject وحدد "Run Query"

LogName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-provider/firewall:vpc-demo-allowpsc-tcp")

  1. توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة

8ce6b0d17d76ad6d.png

  1. وسِّع السجلّ وحدِّد المخرجات المقدَّمة أدناه. دوِّن TCP ILB dest_ip: 10.0.2.10 وNAT TCP source_range (192.168.0.0/24) & src_ip المعني: 192.168.0.2.

e157a7af8cb667e.png

21. تفعيل بروتوكول الخادم الوكيل

يحوّل Private Service Connect تلقائيًا عنوان IP المصدر الخاص بالمستهلك إلى عنوان في إحدى الشبكات الفرعية الخاصة بـ Private Service Connect في شبكة VPC الخاصة بمنتِج الخدمة. إذا كنت تريد الاطّلاع على عنوان IP المصدر الأصلي للمستهلك بدلاً من ذلك، يمكنك تفعيل بروتوكول PROXY. إذا تم تفعيل بروتوكول PROXY، يمكنك الحصول على عنوان IP المصدر للمستهلك ورقم تعريف اتصال PSC من رأس بروتوكول PROXY.

e9d1c49971b10ed0.png

الإشارة إلى المستندات

حذف خدمات المنتِجين المنشورة

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

من Cloud Shell، احذف مرفقات خدمة TCP.

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

من Cloud Shell، تحقّق من حذف مرفقات الخدمة (ما مِن عناصر مدرَجة).

gcloud compute service-attachments list

إنشاء مرفق خدمة TCP مع تفعيل بروتوكول الخادم الوكيل

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \
--producer-forwarding-rule=vpc-demo-www-ilb-tcp \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=vpc-demo-us-west2-psc-tcp \
--enable-proxy-protocol

من Cloud Shell، التحقّق من أنّ مرفقات الخدمة يتم إنشاؤها مع تفعيل بروتوكول الخادم الوكيل (صحيح)

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

من Cloud Shell، حذف قواعد إعادة توجيه بروتوكول TCP.

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

إعادة إنشاء قواعد إعادة توجيه TCP للربط بمرفق خدمة (المنتج) الذي تم إنشاؤه مسبقًا

من Cloud Shell، يمكنك إنشاء قاعدة إعادة توجيه TCP.

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \
--region=us-west2 --network=vpc-demo-consumer \
--address=vpc-consumer-psc-tcp \
--target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

التحقق من بروتوكول الخادم الوكيل

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

من مشروع أداة الإنتاج، حدد "www-01" &amp; "www-02" وإطلاق جلسة واحدة لكل مثيل.

6d0bb8c5cb115876.png

من "www-01" تنفيذ بروتوكول TCPDUMP لمراقبة بروتوكول NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

من "www-02" تنفيذ بروتوكول TCPDUMP لمراقبة بروتوكول NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

من مشروع المستهلك، حدِّد "test-instance-1". وإطلاق جلسة واحدة

من "test-instance-1" جلسة لإجراء تمرين

curl 10.0.60.100 

الملاحظات - المستهلك

تجدر الإشارة إلى أنّه في حال تفعيل الإصدار 2 من بروتوكول PROXY ولكن لم يتمّ ضبط التطبيق على دعمه، ستظهر رسالة خطأ في حال الاتصال من البرنامج العميل كما هو موضّح في المثال أدناه. يجب توفّر تحديثات Apache لاستيعاب رأس الإصدار 2 من الخادم الوكيل الإضافي لم يتم تناولها في الدرس التطبيقي حول الترميز.

من "test-instance-1" ينتج عن الجلسة CURL عدد 400 طلب غير صالح على الرغم من نجاح طلب البحث في الخلفية.

@test-instance-1:~$ curl 10.0.60.100 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>

الملاحظات - المستهلك

من مثيل الخلفية "www-01" أو "www-02" تتم ملاحظة الاتصال التالي بين الشبكة الفرعية لـ TCP NAT وTCP ILB مع بروتوكول الخادم الوكيل المضمن في التقاط الصور.

في معظم الحالات، تحتوي الحزمة الثالثة في الأداة tcpdump على عناصر معلومات بروتوكول الخادم الوكيل (IE). بشكل اختياري، حدد الحزمة ذات 39 بايت التي تحتوي على بروتوكول الخادم الوكيل IE.

192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP
        0x0000:  4500 004f 0000 4000 4006 6df4 c0a8 0003  E..O..@.@.m.....
        0x0010:  0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b  .......P..+<N%..
        0x0020:  5018 6e00 b617 0000 0d0a 0d0a 000d 0a51  P.n............Q
        0x0030:  5549 540a 2111 0017 0a00 3c02 0a00 3c64  UIT.!.....<...<d
        0x0040:  8138 0050 e000 0800 9b34 d70a 003c 64    .8.P.....4...<d

تحديد توقيع بروتوكول PROXY: 0d0a0d0a000d0a515549540a في التقاط حزم البيانات

من خلال تحديد توقيع بروتوكول PROXY، يمكن تقسيم الحقول وفك ترميزها على النحو التالي:

توقيع بروتوكول PROXY: 0d0a0d0a000d0a515549540a

حقول بروتوكول الوكيل الأخرى: 21 11 00 17

عناوين IP والمنافذ: 0a003c02 0a003c64 8138 0050

نوع TLV: e0

طول TLV: 00 00

معرّف pscConnection ID: 009b34d70a003c64

سداسي عشري

عشري / IP

توقيع بروتوكول الوكيل

0d0a0d0a000d0a515549540a

الإصدار، البروتوكول، الطول

21 11 0017

عنوان IP Src

0a003c02

10.0.60.2

عنوان IP لجهاز Dst

0a003c64

10.0.60.100

منفذ Src

8138

33080

منفذ Dst

0050

80

نوع TLV (PP2_TYPE_GCP)

e0

طول TLV

0008

pscConnectionId

00004dde290a003c64

43686719580552292

ويمكن أيضًا التحقّق من صحة pscConnectionId من خلال وصف قاعدة إعادة توجيه المستهلك على النحو التالي، والتأكّد من تطابقها مع:

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

من Cloud Shell، اشرح قواعد إعادة توجيه TCP.

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2

إخراج يصف pscConnectionID

$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T16:50:31.766-07:00'
id: '4443494505307621032'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '43686719580552292'
pscConnectionStatus: ACCEPTED

22. سياسة الاتصال

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

لا يؤثر التغيير من القبول التلقائي إلى القبول الصريح في نقاط نهاية المستهلك التي كانت مرتبطة بالخدمة قبل هذا التغيير. يمكن لنقاط النهاية الحالية للمستهلك الاتصال بالخدمة المنشورة إلى أن يتم حذف مرفق الخدمة. يجب قبول نقاط نهاية المستهلك الجديدة قبل أن يتمكّن من الاتصال بالخدمة. يُرجى الاطِّلاع على مقالة إدارة طلبات الوصول إلى خدمة منشورة للحصول على مزيد من المعلومات.

في هذا القسم من التمرين المعملي، ستقوم بتعديل سياسة الاتصال الخاصة بمنتِج الموافقة صراحةً على مرفق الخدمة الخاص بالمستهلك.

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

من خدمة Cloud Shell، يمكنك تعديل سياسة إعدادات الاتصال المفضّلة من القبول التلقائي إلى القبول يدويًا.

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL

يمكنك تحديد حالة نقطة النهاية من خلال الانتقال إلى "خدمات الشبكة" ← Private Service Connect ← "الخدمات المنشورة" ← vpc-demo-psc-west2-tcp ← المشاريع المرتبطة.

e1d90d1563e10731.png

تم تغيير حالة مشروع المستهلك إلى "في انتظار المراجعة" ضمن "المشاريع المرتبطة".

قبول مشروع المستهلكين من خلال تنفيذ ما يلي في Cloud Shell، والتأكد من التعديل باستخدام اسم المشروع المناسب

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20

يمكنك تحديد حالة نقطة النهاية من خلال الانتقال إلى "خدمات الشبكة" ← Private Service Connect ← "الخدمات المنشورة" ← vpc-demo-psc-west2-tcp ← المشاريع المرتبطة.

35cba9ac640594a2.png

تم تغيير حالة مشروع المستهلك إلى "مقبول" ضمن "المشاريع المرتبطة".

23. خطوات التنظيف

خطوات تنظيف شبكة المنتجين

ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا

حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع أداة نشر الأخبار

gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet

gcloud compute routers delete crnatprod --region=us-west2 --quiet

gcloud compute instances delete www-01 --zone=us-west2-a --quiet

gcloud compute instances delete www-02 --zone=us-west2-a --quiet

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet

gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet

gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet

gcloud compute health-checks delete hc-http-80 --quiet

gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet

gcloud compute firewall-rules delete vpc-demo-health-checks --quiet

gcloud compute firewall-rules delete psclab-iap-prod --quiet

gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet

gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet

gcloud compute networks delete vpc-demo-producer --quiet

ملاحظة: في القسم التالي، نفِّذ تعديلات الإعدادات في المشروع الذي يحتوي على "خدمة المستهلك"

خطوات تنظيف شبكة المستهلكين

حذف مكونات المعمل، من واجهة مستخدم سحابية واحدة في الوحدة الطرفية لمشروع أداة نشر الأخبار

gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet

gcloud compute routers delete crnatconsumer --region=us-west2 --quiet

gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

24. تهانينا!

تهانينا على إكمال الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها

  • مزايا ربط الخدمة الخاصة
  • المفاهيم الرئيسية لمستهلكي الخدمات
  • المفاهيم الرئيسية لمنتجي الخدمات
  • إنشاء بيئة منتج
  • عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
  • إنشاء بيئة للمستهلك
  • إنشاء قاعدة إعادة توجيه في شبكة المستهلك
  • التحقق من إمكانية وصول مستهلكي بروتوكول التحكم بالنقل
  • تفعيل & التحقّق من صحة بروتوكول الخادم الوكيل
  • تفعيل التحكم في الوصول للسياسة