1. مقدمة
باستخدام Private Service Connect، يمكنك إنشاء نقاط نهاية خاصة باستخدام عناوين IP داخلية عالمية داخل شبكة VPC. ويمكنك تعيين أسماء نظام أسماء النطاقات لعناوين IP الداخلية هذه بأسماء ذات معنى مثل Storage-pscendpoint.p.googleapis.com وbigtable-adsteam.p.googleapis.com. بدلاً من إرسال طلبات واجهة برمجة التطبيقات إلى نقاط نهاية الخدمة العامة، مثل Storage.googleapis.com، يمكنك إرسال الطلبات إلى نقطة نهاية Private Service Connect، والتي تكون خاصة وداخلية في شبكة VPC.
وتكون هذه الأسماء وعناوين IP داخلية بالنسبة إلى شبكة VPC وأي شبكات داخلية متصلة بها باستخدام أنفاق Cloud VPN أو مرفقات Cloud Interconnect (شبكة VLAN).
يمكنك التحكم في حركة البيانات التي تذهب إلى أي نقطة نهاية، ويمكنك إثبات بقاء حركة البيانات داخل Google Cloud.
المعلومات التي ستطّلع عليها
- حالات الاستخدام الخاصة بربط الخدمة الخاصة
- متطلبات الشبكة
- واجهات برمجة التطبيقات المتوافقة
- إنشاء نقطة نهاية Private Service Connect
- إنشاء حزمة في السحابة الإلكترونية
- إنشاء وتعديل المناطق الخاصة في Cloud DNS
- إنشاء NAT GW للوصول إلى googleapis العلني
- إنشاء ملف إعداد BOTO وتعديله
- تنفيذ قائمة gsutil على VM1 الذي تم حلّه مقابل نقطة نهاية خدمة PSC
- تنفيذ قائمة gsutil على VM2 الذي تم حله على googleapis.com العلني
- استخدام Tcpdump للتحقق من صحة التحويل باستخدام نظام أسماء النطاقات (DNS)
المتطلبات
- معرفة بمحرر DNS أو nano أو vi
2. حالات الاستخدام الخاصة بربط الخدمة الخاصة
يمكنك إنشاء عدة نقاط نهاية في Private Service Connect في شبكة VPC نفسها. ليس هناك حد أقصى لمعدّل نقل البيانات لنقطة نهاية معيّنة. بما أنّ نقاط نهاية Private Service Connect تستخدم عناوين IP داخلية عالمية، يمكن لأي مورد في شبكة VPC استخدامها.
عند استخدام نقاط نهاية متعددة، يمكنك تحديد مسارات شبكة مختلفة باستخدام قواعد جدار الحماية وجهاز توجيه السحابة الإلكترونية.
- يمكنك إنشاء قواعد جدار حماية لمنع بعض الأجهزة الافتراضية من الوصول إلى واجهات Google APIs من خلال نقطة نهاية Private Service Connect، مع السماح للأجهزة الافتراضية الأخرى بالوصول إلى هذه الواجهات.
- يمكنك وضع قاعدة جدار حماية على مثيل آلة افتراضية تمنع جميع الزيارات إلى الإنترنت. ستظلّ الزيارات المُرسَلة إلى نقاط نهاية Private Service Connect تصل إلى Google.
- إذا كان لديك مضيفون محليون متصلون بشبكة VPC باستخدام نفق شبكة VPN أو مرفق Cloud Interconnect (VLAN)، يمكنك إرسال بعض الطلبات من خلال النفق أو شبكة VLAN أثناء إرسال طلبات أخرى على الإنترنت المتاح للجميع. تتيح لك هذه الإعدادات تجاوز النفق أو شبكة VLAN في خدمات، مثل "كتب Google" التي لا يتيحها تطبيق Private Google Access. لإنشاء هذه الإعدادات، عليك إنشاء نقطة نهاية خاصة بـ Private Service Connect، ثم الإعلان عن عناوين IP لنقطة نهاية Private Service Connect باستخدام إعلانات المسارات المخصّصة في Cloud Router، وتفعيل سياسة إعادة التوجيه الواردة في Cloud DNS. يمكن للتطبيق إرسال بعض الطلبات من خلال نفق الشبكة الافتراضية الخاصة على Cloud أو مرفق Cloud Interconnect (VLAN) باستخدام اسم نقطة نهاية Private Service Connect، وطلبات أخرى على الإنترنت باستخدام اسم نظام أسماء النطاقات التلقائي.
- إذا وصلت شبكتك داخل المؤسسة بشبكة VPC باستخدام مرفقات Cloud Interconnect متعددة (VLAN)، يمكنك إرسال بعض البيانات من الشبكة المحلية على شبكة محلية افتراضية واحدة والباقي على الشبكات الأخرى، كما هو موضّح في الشكل 2. يتيح لك هذا إمكانية استخدام شبكاتك الخاصة على نطاق واسع بدلاً من شبكات Google، والتحكُّم في حركة البيانات لتلبية المتطلبات الجغرافية. لإنشاء هذا الإعداد، أنشِئ نقطتَي نهاية في Private Service Connect. يمكنك إنشاء إعلان مسار مخصص لنقطة النهاية الأولى في جلسة BGP في جهاز Cloud Router الذي يدير الشبكة المحلية الافتراضية الأولى، وأنشئ إعلان مسار مخصصًا مختلفًا لنقطة النهاية الثانية في جلسة BGP لموجه Cloud Router الذي يدير الشبكة المحلية الافتراضية الثانية. يُرسِل المضيفون في المؤسسة الذين تم ضبطهم لاستخدام اسم نقطة نهاية Private Service Connect حركة البيانات عبر مرفق Cloud Interconnect (VLAN) المقابل.
- يمكنك أيضًا استخدام مرفقات Cloud Interconnect متعددة (VLAN) في هيكلة نشطة/نشطة. في حال الإعلان عن عنوان IP نفسه لنقطة نهاية Private Service Connect باستخدام إعلانات المسارات المخصّصة لجلسات BGP على أجهزة توجيه السحابة الإلكترونية التي تدير الشبكات المحلية الافتراضية، سيتم توجيه الحزم المُرسَلة من الأنظمة داخل الشركة إلى نقاط النهاية عبر الشبكات المحلية الافتراضية باستخدام ECMP.
الشكل 1. من خلال ضبط Private Service Connect وCloud Router والمضيفين الداخليين، يمكنك تحديد مرفق Cloud Interconnect (VLAN) الذي يُستخدم لإرسال الزيارات إلى Google APIs.
3- متطلبات الشبكة
لاستخدام Private Service Connect، يجب أن تحتوي مثيلات الأجهزة الافتراضية (VM) التي لا تتضمّن عناوين IP خارجية على واجهتها الأساسية في شبكة فرعية مع تفعيل Private Google Access.
يمكن للجهاز الافتراضي الذي لديه عنوان IP خارجي الوصول إلى واجهات Google APIs وخدماتها باستخدام نقاط نهاية Private Service Connect سواء تم تفعيل Private Google Access للشبكة الفرعية أم لا. يظل الاتصال بنقطة نهاية Private Service Connect ضمن شبكة Google.
لا يمكن الوصول إلى نقاط نهاية Private Service Connect من شبكات VPC المتبادلة.
واجهات برمجة التطبيقات المتوافقة
عند إنشاء نقطة نهاية Private Service Connect، يمكنك اختيار حزمة واجهات برمجة التطبيقات التي تريد الوصول إليها: all-apis أو vpc-sc.
وتتيح حِزم واجهة برمجة التطبيقات إمكانية الوصول إلى واجهات برمجة التطبيقات نفسها المتوفّرة من خلال عناوين IP المهمّة للوصول الخاص إلى Google.
- توفِّر حزمة جميع واجهات برمجة التطبيقات إمكانية الوصول إلى واجهات برمجة التطبيقات نفسها المُستخدَمة في Private.googleapis.com.
- توفر حزمة vpc-sc إمكانية الوصول إلى واجهات برمجة التطبيقات نفسها التي تدل على Restricted.googleapis.com.
4. طوبولوجيا مختبر الترميز حالة الاستخدام
الشكل 1 - طوبولوجيا الدرس التطبيقي
حالة استخدام درس تطبيقي حول الترميز -
يحتاج عميلنا إلى استخدام مزيج من الوصول الخاص (الاتصال) والمتاح للجميع على googleapis الخاص بنقل البيانات في السحابة الإلكترونية. لتلبية متطلبات عملائنا، سننشر Private Service Connect الذي يتألّف من عنوان /32 فريد وإعدادات BOTO وتحديثات سجلّ نظام أسماء النطاقات. سيستخدم الجهاز الافتراضي 1 PSC للوصول إلى حزمة التخزين على السحابة الإلكترونية. في المقابل، سيستخدم VM2 نطاقات IP العامة googleapis.com عبر GW NAT.
ويتم نشر جميع جوانب التمرين المعملي في Google Cloud Platform، إلا أن حالة الاستخدام نفسها تنطبق على نشر السحابة الإلكترونية المختلطة التي تتطلب فصل حركة البيانات.
5- الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب.)
يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع 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- قبل البدء
تفعيل واجهات برمجة التطبيقات
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname
تفعيل جميع الخدمات اللازمة
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
7. إنشاء شبكة VPC
شبكة سحابة VPC
من Cloud Shell
gcloud compute networks create psc-lab --subnet-mode custom
الناتج
Created NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 psc-lab CUSTOM REGIONAL
إنشاء شبكة فرعية
من Cloud Shell
gcloud compute networks subnets create psclab-subnet \ --network psc-lab --range 10.0.0.0/24 --region us-central1
–enable-private-ip-google-access
الناتج
Created NAME REGION NETWORK RANGE psclab-subnet us-central1 psc-lab 10.0.0.0/24
إنشاء قواعد جدار الحماية
من Cloud Shell
gcloud compute firewall-rules create psclab-ssh \ --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
الناتج
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED psclab-ssh psc-lab INGRESS 1000 tcp:22 False
إنشاء مثيل Cloud NAT
إنشاء Cloud Router
من Cloud Shell
gcloud compute routers create crnat \ --network psc-lab \ --asn 65000 \ --region us-central1
إنشاء Cloud NAT
من Cloud Shell
gcloud compute routers nats create cloudnat \ --router=crnat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging \ --region us-central1
8. إنشاء نقطة نهاية Private Service Connect
عند ضبط عنوان IP لنقطة نهاية Private Service Connect <pscendpointip>
، عليك تقديم عنوان IP فريد غير محدّد في VPC.
من Cloud Shell
gcloud beta compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=<pscendpointip> \ --network=psc-lab
تخزين "pscendpointip" طوال مدة التمرين المعملي
(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
يمكنك إنشاء قاعدة إعادة توجيه لربط نقطة النهاية بواجهات Google APIs وخدماتها.
من Cloud Shell
gcloud beta compute forwarding-rules create pscendpoint \ --global \ --network=psc-lab \ --address=psc-ip \ --target-google-apis-bundle=all-apis
سرد نقاط نهاية Private Service Connect التي تم ضبطها
من Cloud Shell
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
وصف نقاط نهاية Private Service Connect التي تم ضبطها
من Cloud Shell
gcloud compute forwarding-rules describe \ pscendpoint --global
9. إنشاء حزمة
يمكنك إنشاء حزمة Cloud Storage واستبدال BUCKET_NAME باسم فريد عالمي تفضّله.
من Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
تخزين "BUCKET_NAME" طوال مدة التمرين المعملي
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. إعداد نظام أسماء النطاقات
لنفرض أنّ لديك تطبيقًا يستخدم Google Cloud Storage. بدون توفّر Private Service Connect، قد يتم ربط التطبيقات بالموقع الإلكتروني "storage.googleapis.com" والذي يتم ربطه تلقائيًا ببعض العناوين العامة. من خلال Private Service Connect، يمكنك إنشاء واستخدام أسماء، مثل "storage-psclab.p.googleapis.com". ويكون الاسم والعناوين خاصًا بشبكة VPC وأي شبكات متصلة داخل الشركة.
يتبع Private Service Connect لنظام أسماء النطاقات اصطلاح التسمية، SERVICE-ENDPOINT.p.googleapis.com. في المثال الوارد أعلاه، "storage" يمثل SERVICE & "psclab" هي نقطة النهاية. من الضروري تضمين علامة "-" بين SERVICE و ENDPOINT.
للوصول إلى نقطة نهاية Cloud Storage باستخدام Private Service Connect، أنشئ سجلّ نظام أسماء النطاقات (A) على Storage-psclab.p.googleapis.com يشير إلى عنوان IP لنقطة النهاية في Private Service Connect.
إنشاء منطقة خاصة لنظام أسماء النطاقات
gcloud dns --project=$projectname managed-zones create psc-dns-zone --description="" --dns-name="p.googleapis.com." --visibility="private" --networks="psc-lab"
إنشاء سجلّ DNS A
gcloud dns --project=$projectname record-sets transaction start --zone=psc-dns-zone gcloud dns --project=$projectname record-sets transaction add $pscendpointip --name=storage-pscendpoint.p.googleapis.com. --ttl=300 --type=A --zone=psc-dns-zone gcloud dns --project=$projectname record-sets transaction execute --zone=psc-dns-zone
11. إنشاء أجهزة افتراضية
إنشاء جهاز افتراضي (psc-instance-1) مستخدَم للتحقّق من صحة ربط الخدمة الخاصة
من Cloud Shell
gcloud compute instances create psc-instance-1 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
تسجيل الدخول إلى مثيل الجهاز الافتراضي (psc-instance-1)
بروتوكول النقل الآمن (SSH) إلى الجهاز الافتراضي (VM) من خلال Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
أنشئ محطات دفع إضافية في Cloud Shell بالنقر على + (لقطة شاشة أدناه) ثلاث مرات.
إنشاء جهاز افتراضي (psc-instance-2) يتم استخدامه للتحقق من صحة Google APIs العامة
من علامة التبويب 2
gcloud compute instances create psc-instance-2 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
من علامة التبويب 2، بروتوكول النقل الآمن (SSH) إلى الجهاز الافتراضي (VM) من خلال Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
من علامة التبويب 3 SSH إلى psc-instance-1 من خلال Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
من علامة التبويب 4 Shell SSH إلى psc-instance-2 عبر Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
12. التحقّق من سلوك أداة Gsutil الحالي
من علامة التبويب 4 (psc-instance-2)، ابدأ tcpdump ومراقبة حركة بيانات نظام أسماء النطاقات
sudo tcpdump -vv -i eth0 port 53
فحص بحث نظام أسماء النطاقات لحزمة التخزين من علامة التبويب 2 (psc-instance-2)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
افحص تصحيح أخطاء gsutil، حيث يتم استخدام HOST Storage.googleapis.com لتحليل نظام أسماء النطاقات (DNS).
<snip> send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
من علامة التبويب 4 (psc-instance-2)، تحقَّق من استخدام سجلّات A العامة لنظام أسماء النطاقات في GoogleAPI.com عند الوصول إلى حزمة التخزين.
metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128
13. تعديل سلوك Gsutil
تذكر في خطوة سابقة أنك أنشأت منطقة نظام أسماء نطاقات خاصة وسجل A تم ربطهما بعنوان IP لنقطة نهاية PSC. في الخطوة التالية، سنتحكّم الآن في طريقة عمل أداة gsutil من خلال تعديل ملف BOTO للأجهزة الافتراضية على psc-instance-1.
عرض إعدادات BOTO التلقائية من الوحدة الطرفية لمثيل الجهاز الافتراضي من علامة التبويب 1 (psc-instance-1)
[psc-instance ~]$ more /etc/boto.cfg
الإخراج (سيختلف project_id)
[GSUtil] default_project_id = 234086459238 default_api_version = 2 [GoogleCompute] service_account = default
حدِّث تهيئة BOTO باستخدام nano أو VI Editor، وتأكد من نسخ جميع الإدخالات ولصقها.
مثال: sudo nano /etc/boto.cfg
أو
مثال: sudo vi /etc/boto.cfg
من علامة التبويب 1 (psc-instance-1) الطرفية لمثيل الجهاز الافتراضي (VM)
[Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com
التحقّق من صحة الإعدادات، لأنّ ترتيب [Credentials] مهم لبحث نظام أسماء النطاقات
more /etc/boto.cfg [Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com [GSUtil] default_project_id = 234086459238 default_api_version = 2 [GoogleCompute] service_account = default
14. التأكّد من سلوك بحث gsutil المعدَّل
من علامة التبويب 3 (psc-instance-1) ابدأ tcpdump ومراقبة حركة بيانات نظام أسماء النطاقات
sudo tcpdump -vv -i eth0 port 53
فحص بحث gsutil لحزمة التخزين من علامة التبويب 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
تؤكد سجلّات تصحيح الأخطاء إمكانية الوصول إلى حزمة مساحة التخزين من خلال نقطة نهاية Private Service Connect "pscendpoint"
إخراج:
<snip> INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com', 'accept': 'application/json', 'accept-encoding': 'gzip, deflate', 'content-length': '0', 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'} INFO 0131 22:14:18.796502 base_api.py] Body: (none) connect: (storage-pscendpoint.p.googleapis.com, 443) send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
من علامة التبويب 3 (psc-instance-1)، تحقَّق من أنّ عنوان IP لنقطة نهاية PSC هو سجلّ نظام أسماء النطاقات A الذي يتم استخدامه عند محاولة الوصول إلى حزمة التخزين.
@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98) metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70) 05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)
التحقّق من استخدام عنوان IP لنقطة نهاية Private Service Connect الآن في التحويل باستخدام نظام أسماء النطاقات (DNS)
من علامة التبويب 1
nslookup storage-pscendpoint.p.googleapis.com
الناتج
@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: storage-pscendpoint.p.googleapis.com Address: <pscip>
15. خطوات التنظيف
الخروج من مثيل الجهاز الافتراضي (كل علامات التبويب)
exit
حذف مكونات التمرين المعملي من وحدة طرفية واحدة في Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet gcloud compute routers delete crnat --region=us-central1 --quiet gcloud beta compute forwarding-rules delete pscendpoint --global --quiet gcloud beta compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
من Console، تأكَّد من عرض المشروع الصحيح، ثم اختَر Networking Services (خدمات الشبكات) ← Cloud DNS.
تحديد انقر على "psc-dns-zone"
اختيار مجموعة السجلّات "storage-pscendpoint.p.googleapis.com" ثم انقر على "حذف مجموعات السجلَّات"
انقر على "حذف منطقة" لإكمال تنظيف التمرين المعملي
16. تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
النقاط التي تناولناها
- حالات الاستخدام الخاصة بربط الخدمة الخاصة
- متطلبات الشبكة
- واجهات برمجة التطبيقات المتوافقة
- تم إنشاء نقطة نهاية Private Service Connect.
- تم إنشاء حزمة تخزين في السحابة الإلكترونية
- تم إنشاء مناطق خاصة في Cloud DNS.
- تم تعديل ملف إعداد BOTO
- تم إنشاء NAT GW
- تنفيذ قائمة gsutil على VM1 الذي تتم مطابقته مع نقطة نهاية خدمة PSC
- تنفيذ قائمة gsutil على جهاز VM2 الذي يتم التعامل معه مع متصفِّح googleapis.com العلني
- استخدام Tcpdump للتحقق من صحة التحويل باستخدام نظام أسماء النطاقات (DNS)