1. مقدمة
تتيح Private Service Connect لمنتج الخدمة تقديم الخدمات بشكل خاص لمستهلك الخدمة. يوفّر Private Service Connect المزايا التالية:
- يمكن لشبكة VPC لمنتج الخدمة أن تتيح استخدام أكثر من مستهلك خدمة واحد.
- يتصل كل مستهلك بعنوان IP داخلي يحدده. ينفّذ Private Service Connect ترجمة عنوان الشبكة (NAT) لتوجيه الطلب إلى منتِج الخدمة.
الشكل 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 وقواعد جدار الحماية المرتبطة بالاتصال بتطبيق المنتِج.
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID
.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.
إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي Google Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.
من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بالبيئة بضع لحظات فقط. عند الانتهاء، من المفترض أن يظهر لك شيء مثل هذا:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 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" & "www-02" وشغِّل جلسة SSH واحدة لكل مثيل.
من "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 الثابت
- من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
- في الحقل "Query" (طلب البحث)، حدِّث الإدخال أدناه باستخدام yourconsumerproject (تشغيل طلب البحث)
LogName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة
- وسِّع السجلّ وحدِّد المخرجات المقدَّمة أدناه. لاحظ أن dest_ip: 10.0.60.100 هو عنوان IP الثابت لبروتوكول TCP و src_ip: 10.0.60.2 هو عنوان IP لمثيل الجهاز الافتراضي.
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 من خلال تنفيذ الخطوات التالية:
- من Cloud Console، تحديد تسجيل العمليات ← Log Explorer
- في الحقل "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")
- توفّر نتائج طلب البحث ما يلي لكل لقطة شاشة مقدّمة
- وسِّع السجلّ وحدِّد المخرجات المقدَّمة أدناه. دوِّن TCP ILB dest_ip: 10.0.2.10 وNAT TCP source_range (192.168.0.0/24) & src_ip المعني: 192.168.0.2.
21. تفعيل بروتوكول الخادم الوكيل
يحوّل Private Service Connect تلقائيًا عنوان IP المصدر الخاص بالمستهلك إلى عنوان في إحدى الشبكات الفرعية الخاصة بـ Private Service Connect في شبكة VPC الخاصة بمنتِج الخدمة. إذا كنت تريد الاطّلاع على عنوان IP المصدر الأصلي للمستهلك بدلاً من ذلك، يمكنك تفعيل بروتوكول PROXY. إذا تم تفعيل بروتوكول PROXY، يمكنك الحصول على عنوان IP المصدر للمستهلك ورقم تعريف اتصال PSC من رأس بروتوكول PROXY.
حذف خدمات المنتِجين المنشورة
ملاحظة: في القسم التالي، يمكنك تنفيذ تحديثات الإعداد في المشروع الذي يحتوي على خدمة أدا
من 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" & "www-02" وإطلاق جلسة واحدة لكل مثيل.
من "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 | ||
توقيع بروتوكول الوكيل |
| ||
الإصدار، البروتوكول، الطول |
| ||
عنوان IP Src |
|
| |
عنوان IP لجهاز Dst |
|
| |
منفذ Src |
|
| |
منفذ Dst |
|
| |
نوع TLV (PP2_TYPE_GCP) |
| ||
طول TLV |
| ||
pscConnectionId |
|
|
ويمكن أيضًا التحقّق من صحة 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 ← المشاريع المرتبطة.
تم تغيير حالة مشروع المستهلك إلى "في انتظار المراجعة" ضمن "المشاريع المرتبطة".
قبول مشروع المستهلكين من خلال تنفيذ ما يلي في 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 ← المشاريع المرتبطة.
تم تغيير حالة مشروع المستهلك إلى "مقبول" ضمن "المشاريع المرتبطة".
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. تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
المواضيع التي تناولناها
- مزايا ربط الخدمة الخاصة
- المفاهيم الرئيسية لمستهلكي الخدمات
- المفاهيم الرئيسية لمنتجي الخدمات
- إنشاء بيئة منتج
- عرض الخدمة (بيئة المنتج) من خلال مرفق خدمة
- إنشاء بيئة للمستهلك
- إنشاء قاعدة إعادة توجيه في شبكة المستهلك
- التحقق من إمكانية وصول مستهلكي بروتوكول التحكم بالنقل
- تفعيل & التحقّق من صحة بروتوكول الخادم الوكيل
- تفعيل التحكم في الوصول للسياسة