1. مقدمة
يوفّر الوصول الخاص إلى Google للمضيفين في المؤسسة طريقة للأنظمة المحلية للاتصال بواجهات برمجة تطبيقات Google وخدماتها عن طريق توجيه حركة البيانات عبر نفق VPN من Google Cloud أو مرفق شبكة محلية افتراضية لـ Cloud Interconnect. يُعد الوصول الخاص إلى Google للمضيفين المحليين بديلاً للاتصال بواجهات برمجة تطبيقات Google وخدماتها على الإنترنت.
يتطلب الوصول الخاص إلى Google للمضيفين المحليين منك توجيه طلبات Google APIs إلى عناوين IP افتراضية (VIP). بالنسبة إلى الإصدار 6 من بروتوكول IP، يتم استخدام عناوين IP التالية:
- بالنسبة إلى Private.googleapis.com: 2600:2d00:0002:2000::/64
- بالنسبة إلى recognized.googleapis.com: 2600:2d00:0002:1000::/64
جدير بالذكر أنّ عنوان IP الافتراضي الذي تختاره يحدّد الخدمات التي يمكنك الوصول إليها. في هذا الدرس التطبيقي حول الترميز، سنستخدم Private.googleapis.com. لمزيد من المعلومات، يمكنك الاطّلاع على خيارات النطاق.
يشرح هذا الدرس التطبيقي حول الترميز كيفية تفعيل "وصول خاص إلى Google" للمضيفين المحليين الذين يستخدمون عناوين IPv6. عليك إعداد شبكة VPC باسم on-premises-vpc
لتمثيل بيئة داخل الشركة. بالنسبة إلى عملية النشر، لن يكون جهاز VPC داخل الشركة موجودًا، وبدلاً من ذلك سيتم استخدام شبكة مختلَطة مع مركز البيانات داخل المؤسسة أو مزود خدمة السحابة الإلكترونية.
ما الذي ستقوم ببنائه
في هذا الدرس التطبيقي حول الترميز، ستنشئ شبكة IPv6 شاملة توضّح الوصول داخل الشركة إلى واجهة برمجة التطبيقات للتخزين في السحابة الإلكترونية باستخدام CNAME *.googleapis.com إلى عنوان IPv6 في خاص.googleapis.com 2600:2d00:0002:2000::/64
كما هو موضّح في الشكل 1.
على شكل 1
ما ستتعرَّف عليه
- كيفية إنشاء شبكة VPC ثنائية الحزمة
- كيفية إنشاء شبكة افتراضية خاصة (VPN) بجودة عالية باستخدام IPv6
- كيفية تعديل نظام أسماء النطاقات للوصول إلى Private Google Access
- كيفية إنشاء اتصال خاص على Google Access والتحقّق من صحته
المتطلبات
- مشروع Google Cloud
2. قبل البدء
تعديل المشروع لإتاحة الدرس التطبيقي حول الترميز
يستخدم هذا الدرس التطبيقي حول الترميز $variables للمساعدة في تنفيذ إعدادات gcloud في Cloud Shell.
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3- إنشاء جهاز كمبيوتر شخصي للنقل العام
إنشاء شبكة VPC للنقل العام
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
4. إنشاء الشبكة داخل الشركة
تمثّل شبكة VPC هذه بيئة داخل الشركة.
إنشاء شبكة VPC داخل الشركة
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
إنشاء الشبكة الفرعية
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1
5- أنشِئ شبكة VPN عالية التوفّر لأجهزة الكمبيوتر الشخصية المستندة إلى وسائل النقل العام وأجهزة الكمبيوتر الشخصي داخل الشركة
إنشاء شبكة VPN خاصة بحملة تطبيقات للأجهزة الجوّالة لـ vpc للنقل العام
عند إنشاء كل مدخل، يتم تلقائيًا تخصيص عنوانين خارجيين من عناوين IPv4، حيث يتم تخصيص عنوانين لكل واجهة مدخل. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الضبط.
داخل Cloud Shell، أنشئ شبكة VPN HA VPN من خلال نوع التكديس IPV4_IPV6.
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
أنشئ شبكة VPN خاصة بحملة تطبيقات للأجهزة الجوّالة لـ vpc داخل الشركة
داخل Cloud Shell، إنشاء شبكة VPN HA VPN من خلال نوع التكديس IPV4_IPV6
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
التحقُّق من إنشاء GW لشبكة VPN HA
باستخدام وحدة التحكّم، انتقِل إلى الاتصال المختلط ← شبكة VPN ← CLOUD VPN GATEWAYS.
إنشاء Cloud Router لجهاز تحكُّم vPC للنقل العام
داخل Cloud Shell، أنشئ Cloud Router الذي يقع في us-central1
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
إنشاء Cloud Router لجهاز كمبيوتر افتراضي داخل الشركة
داخل Cloud Shell، أنشئ Cloud Router الذي يقع في us-central1
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
إنشاء أنفاق VPN للنقل العام لكل جهاز كمبيوتر
ستحتاج إلى إنشاء نفقَين لشبكة VPN على كل مدخل شبكة VPN الخاص بشبكة HA.
إنشاء نفق شبكة VPN 0
داخل Cloud Shell، أنشئ نفقًا 0:
gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 0
إنشاء نفق 1 لشبكة VPN
داخل Cloud Shell، أنشئ نفقًا1:
gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 1
إنشاء أنفاق VPN لشبكات VPN داخل الشركة
ستحتاج إلى إنشاء نفقَين لشبكة VPN على كل مدخل شبكة VPN الخاص بشبكة HA.
إنشاء نفق شبكة VPN 0
داخل Cloud Shell، أنشئ نفقًا 0:
gcloud compute vpn-tunnels create on-premises-tunnel0 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 0
إنشاء نفق 1 لشبكة VPN
داخل Cloud Shell، أنشئ نفقًا1:
gcloud compute vpn-tunnels create on-premises-tunnel1 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 1
التحقّق من إنشاء نفق شبكة VPN
باستخدام وحدة التحكّم، انتقِل إلى تقنية الاتصال المختلَط ← شبكة VPN ← CLOUD VPN TUNNELS.
إنشاء جلسات BGP
في هذا القسم، يمكنك ضبط واجهات Cloud Router وأقران BGP.
عند إنشاء أنفاق VPN التي تسمح بمرور حركة بيانات IPv6، حدِّد --enable-ipv6
عند تشغيل الأمر add-bgp-peer
.
إنشاء واجهة BGP وتبادل المعلومات بين الشبكات لـtransit-vpc
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel1-to-onpremise \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel0 \
--region us-central1
داخل Cloud Shell، أنشئ نظير BGP:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onpremise \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel2-to-onpremise \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel1 \
--region us-central1
داخل Cloud Shell، أنشئ نظير BGP:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel2 \
--interface if-tunnel2-to-onpremise \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12
إنشاء واجهة BGP وتبادل المعلومات بين شبكات VPC داخل الشركة
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel1-to-hub-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel0 \
--region us-central1
داخل Cloud Shell، أنشئ نظير BGP:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
--peer-name bgp-transit-vpc-tunnel0 \
--interface if-tunnel1-to-hub-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1
داخل Cloud Shell، أنشئ واجهة BGP:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel2-to-hub-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel1 \
--region us-central1
داخل Cloud Shell، أنشئ نظير BGP:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1\
--peer-name bgp-transit-vpc-tunnel1\
--interface if-tunnel2-to-hub-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11
انتقِل إلى الاتصال المختلط ← شبكة VPN للاطّلاع على تفاصيل الاتصال النفقي الخاص بشبكة VPN.
تأكَّد من أنّ حزمة vpc الخاصة بالنقل العام تتعلّم مسارات IPv4 وIPv6 من خلال شبكة VPN التي توفّر إمكانية الاتصال بجودة عالية.
نظرًا لأنه يتم إنشاء أنفاق شبكة VPN وجلسات BGP، يتم معرفة المسارات من vpc داخل الشركة من vpc للنقل العام. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ←transit-vpc ← ROUTES.
راقب المسارات الديناميكية IPv4 وIPv6 الموضحة أدناه:
تأكَّد من أنّ جهاز vpc داخل الشركة لا يتعلّم مسارات باستخدام شبكة VPN HA
لا يتضمّن Transit-vpc شبكة فرعية، وبالتالي لن تعلن Cloud Router عن أي شبكات فرعية لـ vpc داخل مقر الشركة. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← داخل الشركة ← ROUTES.
6- الإعلان عن IPv6 بشكل خاص.googleapis.com VIP
للوصول إلى Private Google Access من داخل الشركة، ستحتاج إلى إنشاء إعلان مسار مخصّص من جهاز vpc للنقل العام. بعد تحديث نظام أسماء النطاقات المحلي، سيتم الإعلان عن عنوان الإصدار 6 من بروتوكول الإنترنت 2600:2d00:0002:2000::
في البيئة داخل الشركة وسيتم استخدامه من خلال أحمال العمل للوصول إلى Google APIs مثل Cloud Storage وCloud BigQuery وCloud Bigtable.
في هذا الدرس التطبيقي حول الترميز، عليك تفعيل إمكانية وصول واجهة برمجة التطبيقات إلى معظم خدمات Google APIs وواجهاتها بغض النظر عمّا إذا كانت متوافقة مع عناصر التحكّم في خدمة "سحابة VPC".
من وحدة التحكّم، انتقِل إلى خيار الاتصال المختلط ← Cloud Router ←transit-vpc-cr-us-central1، ثم انقر على "تعديل".
في قسم "المسارات المُعلَن عنها"، حدِّد الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول بناءً على المثال أدناه، واختَر تم، ثم انقر على حفظ.
التحقّق من أنّ جهاز vpc داخل الشركة يتعلّم مسارات IPv6
والآن بعد أن تم الإعلان عن IPv6 بشكل خاص.googleapis.com VIP من "transit-vpc"، فإن بيانات vpc داخل الشركة ستتعرَّف على مسارات IPv6 الديناميكية لعنوان IP الافتراضي (VPC). باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← داخل الشركة ← ROUTES.
ملاحظة مسارات IPv6 المُعلَن عنها من vpc للنقل العام:
7. إنشاء اتصال بـ Google APIs باستخدام Private Google Access
في القسم التالي، سوف نتمكَّن من الوصول إلى خدمة Cloud Storage والتحقق من صحتها باستخدام عنوان IPv6 الخاص.googleapis.com VIP. لإجراء ذلك، نحتاج إلى تنفيذ الإجراءات التالية في ملف vpc داخل الشركة.
- يمكنك إنشاء قاعدة جدار حماية للدخول للسماح بوصول الخادم الوكيل (IAP) المستند إلى الهوية للوصول إلى بروتوكول النقل الآمن.
- أنشِئ Cloud Router وCloud NAT لتنزيل برنامجَي tcpdump وdnsutils.
- إنشاء منطقة خاصة لنظام أسماء النطاقات في Cloud من أجل googleapis.com.
- أنشِئ حزمة على Cloud Storage.
إنشاء قاعدة جدار الحماية للشراء داخل التطبيق
للسماح لعمليات الشراء داخل التطبيق بالاتصال بمثيلات الأجهزة الافتراضية، أنشِئ قاعدة جدار حماية تعمل على:
- ينطبق ذلك على جميع مثيلات الأجهزة الافتراضية التي تريد أن تتوفّر إمكانية الوصول إليها من خلال استخدام الشراء داخل التطبيق.
- يسمح بالزيارات الواردة من نطاق IP 35.235.240.0/20. يحتوي هذا النطاق على جميع عناوين IP التي يستخدمها بروتوكول IAP لإعادة توجيه بروتوكول التحكم بالنقل.
داخل Cloud Shell، أنشئ قاعدة جدار الحماية للشراء داخل التطبيق.
gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
--network on-premises-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
إعدادات جهاز توجيه السحابة الإلكترونية وترجمة عنوان الشبكة (NAT)
يتم استخدام ترجمة عنوان الشبكة في السحابة الإلكترونية في الدرس التطبيقي حول الترميز لتثبيت حزمة البرامج لأنّ مثيل الجهاز الافتراضي (VM) لا يتضمّن عنوان IP خارجيًا.
داخل Cloud Shell، أنشئ Cloud Router.
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
داخل Cloud Shell، أنشئ بوابة NAT.
gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
إنشاء مثيل تجريبي، مربع الاختبار داخل الشركة
إنشاء مثيل اختبار سيتم استخدامه لاختبار الاتصال والتحقّق من صحة الاتصال بعنوان IPv6 Private.googleapis.com VIP.
أنشئ المثيل داخل Cloud Shell.
gcloud compute instances create on-premises-testbox \
--project=$projectname \
--machine-type=e2-micro \
--stack-type=IPV4_IPV6 \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=on-premises-subnet1-us-central1 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
إنشاء المنطقة الخاصة بنظام Cloud DNS
سنستخدم Cloud DNS لإنشاء منطقة خاصة وسجلات *.googleapis.com، وفي ما يلي الخطوات المطلوبة.
داخل Cloud Shell، أنشئ منطقة نظام أسماء نطاقات خاصة v6-googleapis.com.
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
داخل Cloud Shell، أنشئ سجلّ AAAA لـ special.googleapis.com. والتي تشير إلى عنوان IPv6 2600:2d00:0002:2000::
.
gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"
داخل Cloud Shell، أنشئ CNAME للنطاق *.googleapis.com للإشارة إلى special.googleapis.com.
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
التحقّق من المنطقة الخاصة لنظام أسماء النطاقات في السحابة الإلكترونية
انتقِل إلى "خدمات الشبكة" ← Cloud DNS ← v6-googleapis.
إنشاء حزمة Cloud Storage
في Cloud Shell، أنشِئ حزمة تخزين في السحابة الإلكترونية واستبدِل bucket_name باسم فريد عالمي تفضّله، وجرِّب اسمًا آخر إذا سبق استخدامه.
gsutil mb -l us-central1 -b on gs://bucket_name
8. الوصول إلى Google APIs والتحقّق من صحتها باستخدام عناوين IPv6
في القسم التالي، عليك تنفيذ بروتوكول النقل الآمن (SSH) في محطتيّ Cloud Shell. تُستخدم الوحدة الطرفية الأولى للتحقّق من صحة البحث عن عناوين IPv6 باستخدام tcpdump، بينما تُستخدَم الوحدة الثانية للوصول إلى حزمة التخزين في السحابة الإلكترونية.
داخل Cloud Shell، يمكنك تنفيذ بروتوكول ssh لاختبار المثيل on-invents-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
داخل الوحدة الطرفية Cloud Shell الأولى، ابدأ tcpdump وراقِب المنفذ 53 لحركة بيانات نظام أسماء النطاقات.
sudo tcpdump -nn -i ens4 port 53
المثال أدناه.
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
افتح وحدة طرفية جديدة في Cloud Shell من خلال النقر على الرمز "+". بعد فتح علامة التبويب الجديدة، عدِّل متغيّر اسم المشروع.
داخل Cloud Shell، عدِّل متغيّر اسم المشروع.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
داخل Cloud Shell 2، عليك تنفيذ ssh لاختبار المثيل on-Organizations-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
إجراء البحث للتحقّق من صحة بحث نظام أسماء النطاقات
داخل الوحدة الطرفية Cloud Shell رقم 2، عليك إجراء بحث في Storage.googleapis.com.
dig AAAA storage.googleapis.com
عليك فحص قسم الإجابة، وتخزين منطقة نظام أسماء النطاقات الخاصة.googleapis.com CNAME إلى ملف Private.googleapis.com AAAA 2600:2d00:2:2000::
، في ما يلي مثال على ذلك:
user@on-premises-testbox:~$ dig AAAA storage.googleapis.com
; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com. IN AAAA
;; ANSWER SECTION:
storage.googleapis.com. 300 IN CNAME private.googleapis.com.
private.googleapis.com. 300 IN AAAA 2600:2d00:2:2000::
;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE rcvd: 101
داخل الوحدة الطرفية Cloud Shell الأولى، افحص الأداة tcpdump التي تؤكِّد التحويل باستخدام نظام أسماء النطاقات إلى AAAA 2600:2d00:2:2000::
.
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)
استنادًا إلى الأمر dig وtcpdump، يمكننا أن نستنتج أن التحويل باستخدام نظام أسماء النطاقات (DNS) إلى Storage.googleapis.com يتم تحقيقه من خلال 2600:2d00:2:2000::
، وهو عنوان IPv6 لـ special.googleapis.com.
تنفيذ قائمة gsutil للتحقق من إمكانية الوصول إلى مساحة التخزين في السحابة الإلكترونية
داخل الوحدة الطرفية Cloud Shell رقم 2، نفِّذ قائمة مقابل حزمة التخزين التي تم إنشاؤها سابقًا باستخدام gsutil. غيّر bucket_name إلى الحزمة التي أنشأتها سابقًا.
gsutil -d ls gs://bucket_name
على سبيل المثال، عند استخدام حزمة codelab-ipv6 للتخزين في السحابة الإلكترونية، افحص ناتج تصحيح الأخطاء الذي يشير إلى storage.googleapis.com وHTTP/1.1 200 OK.
user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
bucket: 'codelab-ipv6'
delimiter: '/'
maxResults: 1000
projection: ProjectionValueValuesEnum(noAcl, 1)
versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
items: []
prefixes: []>
user@on-premises-testbox:~$
داخل الوحدة الطرفية Cloud Shell الأولى، افحص الأداة tcpdump التي تؤكِّد التحويل باستخدام نظام أسماء النطاقات إلى AAAA 2600:2d00:2:2000::
.
eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)
اخرج من نظام تشغيل مثيل testbox داخل الشركة، والعودة إلى طلب Cloud Shell.
9. تنظيف
داخل Cloud Shell، يمكنك تنفيذ ما يلي:
gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet
gcloud compute routers delete transit-vpc-cr-us-central1 on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet
gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet
gcloud compute networks delete on-premises-vpc --quiet
gcloud compute networks delete transit-vpc --quiet
gsutil rb gs://bucket_name
gcloud dns record-sets delete *.googleapis.com. \
--type=CNAME \
--zone=v6-googleapis
gcloud dns record-sets delete private.googleapis.com. \
--type=AAAA \
--zone=v6-googleapis
gcloud dns managed-zones delete v6-googleapis
10. تهانينا
تهانينا، لقد نجحت في إعداد والتحقّق من إمكانية وصول خاص إلى Google باستخدام IPv6.
لقد أنشأت البنية الأساسية للنقل العام والبنية الأساسية في المؤسسة، وأنشأت منطقة خاصة لنظام أسماء النطاقات تتيح الحل لنطاقات Google API التي تستخدم IPv6. لقد تعلمت كيفية اختبار والتحقق من صحة الوصول إلى IPv6 باستخدام الحفر والتخزين في السحابة الإلكترونية.
يرى موقع Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.
الخطوات التالية
اطّلع على بعض هذه الدروس التطبيقية حول الترميز...