الوصول إلى Google APIs من مضيفين داخل المؤسسة باستخدام عناوين IPv6

1. مقدمة

توفّر ميزة "الوصول إلى Google" الخاصة للمضيفين على الموقع طريقة للأنظمة على الموقع للاتصال بخدمات Google وواجهات برمجة التطبيقات من خلال توجيه حركة البيانات عبر نفق الشبكة الافتراضية الخاصة (VPN) على Cloud أو مرفق VLAN لميزة Cloud Interconnect. يُعد الوصول الخاص إلى Google للمضيفين المحليين بديلاً للاتصال بواجهات برمجة تطبيقات Google وخدماتها على الإنترنت.

تتطلّب ميزة "الوصول الخاص إلى Google" للمضيفين على الموقع الإلكتروني توجيه طلبات واجهات برمجة تطبيقات Google إلى عناوين IP الافتراضية (VIP). بالنسبة إلى IPv6، يتم استخدام عناوين IP التالية:

  • بالنسبة إلى Private.googleapis.com: 2600:2d00:0002:2000::/64
  • بالنسبة إلى restricted.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

a0fc56abf24f3535.png

المُعطيات

  • كيفية إنشاء شبكة VPC ذات حِزم ثنائية
  • كيفية إنشاء شبكة افتراضية خاصة (VPN) بجودة عالية باستخدام IPv6
  • كيفية تعديل نظام أسماء النطاقات للوصول إلى ميزة "الوصول الخاص إلى Google"
  • كيفية إنشاء اتصال بميزة "الوصول الخاص إلى Google" والتحقّق منه

المتطلبات

  • مشروع 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- إنشاء جهاز كمبيوتر شخصي للنقل العام

f6932f551b5acac0.png

إنشاء شبكة 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. إنشاء الشبكة داخل الشركة

58d75cbc9cb20a51.png

تمثّل شبكة 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 للنقل العام

a0fc56abf24f3535.png

عند إنشاء كل بوابة، يتم تخصيص عنوانَي IPv4 خارجيَين تلقائيًا، أحدهما لكل واجهة بوابة. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الضبط.

في Cloud Shell، أنشئ بوابة شبكة 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" ← "بوابات شبكة VPN في السحابة الإلكترونية".

c8eed6ca929935bc.png

إنشاء "راوتر السحابة" لشبكة "الفضاء الافتراضي لعبور البيانات"

داخل 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 لـ transit-vpc

ستحتاج إلى إنشاء نفقَين لشبكة 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، أنشئ النفق tunnel1:

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 لتوفير إمكانية التوفّر العالية.

إنشاء نفق شبكة 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.

85fd5aef4b2c4010.png

إنشاء جلسات 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 وتبادل المعلومات بين الشبكات الافتراضية الخاصة داخل الشركة

في 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.

e100e31ea22c8124.png

التحقّق من أنّ "شبكة VPC للعبور" تتعرّف على مسارات IPv4 وIPv6 عبر شبكة VPN ذات التوفّر المزدوج

بما أنّه تمّ إنشاء نفقَي شبكة VPN وجلسات BGP لتحديد المسارات من on-premises-vpc، يتمّ التعرّف على المسارات من transit-vpc. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ←transit-vpc ← ROUTES.

راقِب المسارات الديناميكية لبروتوكولَي IPv4 وIPv6 التي تم تعلّمها والموضَّحة أدناه:

216bde7d08d75ec4.png

تأكَّد من أنّ جهاز vpc داخل الشركة لا يتعلّم مسارات باستخدام شبكة VPN HA

لا تحتوي شبكة Transit-vpc على شبكة فرعية، وبالتالي لن يعلن "موجه السحابة" عن أي شبكات فرعية لشبكة on-premises-vpc. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← داخل الشركة ← ROUTES.

6- الإعلان عن عنوان IPv6 الخاص private.googleapis.com

للوصول إلى "Google Private Access" من موقعك الجغرافي، عليك إنشاء إعلان مسار مخصّص من transit-vpc. سيتم الإعلان عن عنوان IPv6 2600:2d00:0002:2000:: للبيئة على الموقع، وستستخدمه أعباء العمل للوصول إلى Google APIs، مثل Cloud Storage وCloud BigQuery وCloud Bigtable، بعد تعديل نظام أسماء النطاقات (DNS) المحلي.

في هذا الدليل التعليمي حول رموز البرامج، ستفعّل إمكانية الوصول إلى واجهة برمجة التطبيقات لمعظم واجهات برمجة تطبيقات Google وخدماتها بغض النظر عمّا إذا كانت متوافقة مع عناصر التحكّم في خدمة سحابة VPC.

من وحدة التحكّم، انتقِل إلى "الاتصال المختلط" ← "أجهزة توجيه السحابة الإلكترونية" ← transit-vpc-cr-us-central1، ثم اختَر "تعديل".

3e36e3b5ea741ec5.png

في قسم "المسارات المُعلَن عنها"، حدِّد الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول بناءً على المثال أدناه، واختَر تم، ثم انقر على حفظ.

9283ama7b214f70d.png

التأكّد من أنّ شبكة vpc على الموقع الجغرافي تتعرّف على مسارات IPv6

بعد أن تم الإعلان عن عنوان IPv6 الخاص بـ private.googleapis.com VIP من transit-vpc، ستتعرّف on-premises-vpc على مسارات IPv6 الديناميكية لعنوان IP الخاص بالجهاز الافتراضي المميّز. باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC ← شبكات VPC ← داخل الشركة ← ROUTES.

راقِب طرق IPv6 المُعلَن عنها من transit-vpc:

caf3b79b035b2a20.png

7- إجراء اتصال بـ Google APIs باستخدام Private Google Access

في القسم التالي، سنصل إلى Cloud Storage ونتحقق من إمكانية الاتصال بها باستخدام عنوان IP الخاص private.googleapis.com‏ (IPv6). لإجراء ذلك، علينا تنفيذ الإجراءات التالية في on-premises-vpc.

  • أنشئ قاعدة جدار حماية للدخول للسماح بوصول "الوكيل المدرك للهوية" (IAP) للوصول إلى بروتوكول النقل الآمن (SSH).
  • أنشِئ Cloud Router وCloud NAT لتنزيل برنامجَي tcpdump وdnsutils.
  • إنشاء منطقة خاصة لنظام أسماء النطاقات في Cloud في googleapis.com.
  • أنشئ حزمة في Cloud Storage.

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

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

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

في Cloud Shell، أنشئ قاعدة جدار حماية IAP.

gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
    --network on-premises-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

إعداد Cloud Router و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

إنشاء مثيل اختباري، على-الموقع-اختبار-الصندوق

أنشئ مثيلًا تجريبيًا سيتم استخدامه لاختبار الاتصال بعنوان IP الخاص private.googleapis.com‏ IPv6 والتحقّق منه.

أنشئ المثيل داخل 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 لنطاق private.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 لتوجيهه إلى ‎private.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.

455e355195a2a48f.png

إنشاء حزمة Cloud Storage

في Cloud Shell، أنشِئ حزمة تخزين في السحابة الإلكترونية واستبدِل bucket_name باسم فريد عالمي تفضّله، وجرِّب اسمًا آخر إذا سبق استخدامه.

gsutil mb  -l us-central1 -b on gs://bucket_name

8. الوصول إلى واجهات برمجة تطبيقات Google والتحقّق منها باستخدام عناوين IPv6

في القسم التالي، عليك تنفيذ بروتوكول النقل الآمن (SSH) في محطتيّ Cloud Shell. تُستخدم الوحدة الطرفية الأولى للتحقّق من صحة البحث عن عناوين IPv6 باستخدام tcpdump، بينما تُستخدَم الوحدة الثانية للوصول إلى حزمة التخزين في السحابة الإلكترونية.

داخل Cloud Shell، نفِّذ الأمر ssh للوصول إلى المثيل التجريبي on-premises-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-premises-testbox.

gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

تنفيذ dig للتحقّق من البحث في نظام أسماء النطاقات

داخل الوحدة الطرفية Cloud Shell رقم 2، عليك إجراء بحث في Storage.googleapis.com.

dig AAAA storage.googleapis.com

تحقَّق من قسم ANSWER (الإجابة)، ومنطقة نظام أسماء النطاقات الخاصة storage.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، يمكننا استنتاج أنّ عملية حلّ نظام أسماء النطاقات لـ storage.googleapis.com تتم من خلال 2600:2d00:2:2000::، وهو عنوان IPv6 الخاص بـ private.googleapis.com.

تنفيذ gsutil list للتحقّق من إمكانية الوصول إلى مساحة التخزين في السحابة الإلكترونية

داخل الوحدة الطرفية 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)

اخرج من نظام التشغيل الخاص بمثيل "علبة الاختبار" على الموقع، ثم ارجع إلى طلب 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 والتحقّق منها باستخدام dig ومساحة التخزين في السحابة الإلكترونية.

يعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة.

8c2a10eb841f7b01.jpeg

الخطوات التالية

اطّلِع على بعض هذه الدروس التطبيقية حول الترميز...

محتوى إضافي للقراءة والفيديوهات

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