1. مقدمة
تؤثّر المسارات المخصّصة الثابتة في سلوك التوجيه التلقائي في شبكة VPC. تتيح المسارات المخصّصة لبروتوكول IPv6 الآن سمات جديدة للقفزة التالية: next-hop-gateway وnext-hop-instance وnext-hop-address. يوضّح هذا الدرس التطبيقي حول الترميز كيفية استخدام مسارات IPv6 المخصّصة مع خيارات القفزة التالية الجديدة هذه باستخدام شبكتَي VPC متصلتَين من خلال مثيل جهاز افتراضي متعدد بطاقات NIC. ستوضّح أيضًا كيفية دمج عناوين ULA وGUA وتوفير إمكانية الوصول إلى شبكة VPC التي تستخدم عناوين ULA من الإنترنت العام باستخدام إمكانية التوجيه المخصّص الجديدة.
أهداف الدورة التعليمية
- كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام قفزة تالية من نوع next-hop-instance
- كيفية إنشاء مسار IPv6 مخصّص باستخدام next-hop-gateway كقفزة تالية
- كيفية إنشاء مسار مخصّص لبروتوكول IPv6 باستخدام قفزة تالية بعنوان next-hop-address
المتطلبات
- مشروع Google Cloud
2. قبل البدء
تعديل المشروع ليتوافق مع الدرس العملي
يستفيد هذا الدرس التطبيقي حول الترميز من $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.
داخل Cloud Shell، نفِّذ ما يلي
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export projectname=$(gcloud config list --format="value(core.project)")
البنية العامة للدرس التطبيقي

لتوضيح كلا نوعَي القفزات التالية للمسارات المخصّصة، عليك إنشاء 3 شبكات VPC: شبكة VPC للعميل تستخدم عناوين GUA، وشبكة VPC للخادم تستخدم عناوين ULA، وشبكة VPC ثانية للخادم تستخدم عناوين GUA.
لكي تتمكّن شبكة VPC الخاصة بالعميل من الوصول إلى خادم ULA، ستستخدم مسارًا مخصّصًا يستخدِم كلاً من next-hop-instance وnext-hop-address للإشارة إلى مثيل بوابة متعددة بطاقات NIC. لتوفير إمكانية الوصول إلى خادم GUA (بعد حذف المسار التلقائي ::/0)، ستستخدم مسارًا مخصّصًا مع next-hop-gateway يشير إلى "بوابة الإنترنت التلقائية" لتوفير التوجيه عبر الإنترنت.
3- إعداد شبكة VPC للعميل
إنشاء شبكة VPC للعميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create client-vpc \
--project=$projectname \
--subnet-mode=custom \
--mtu=1500 --bgp-routing-mode=regional
إنشاء الشبكة الفرعية للعميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets create client-subnet \
--network=client-vpc \
--project=$projectname \
--range=192.168.1.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=external \
--region=us-central1
سجِّل الشبكة الفرعية GUA المعيّنة في متغيّر بيئي باستخدام الأمر التالي
export client_subnet=$(gcloud compute networks subnets \
describe client-subnet \
--project $projectname \
--format="value(externalIpv6Prefix)" \
--region us-central1)
تشغيل نسخة العميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute instances create client-instance \
--subnet client-subnet \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
إضافة قاعدة جدار الحماية لزيارات شبكة VPC الخاصة بالعميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-gateway-client \
--direction=INGRESS --priority=1000 \
--network=client-vpc --action=ALLOW \
--rules=tcp --source-ranges=$client_subnet \
--project=$projectname
إضافة قاعدة جدار الحماية للسماح بالوصول إلى IAP لمثيل العميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-iap-client \
--direction=INGRESS --priority=1000 \
--network=client-vpc --action=ALLOW \
--rules=tcp:22 --source-ranges=35.235.240.0/20 \
--project=$projectname
تأكيد إمكانية الوصول إلى الجهاز الظاهري للعميل عبر بروتوكول SSH
داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
في حال نجاح العملية، ستظهر لك نافذة طرفية من مثيل العميل. اخرج من جلسة SSH لمتابعة الدرس البرمجي.
4. إعداد شبكة VPC لخادم ULA
إنشاء شبكة VPC لخادم ULA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create server-vpc1 \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional \
--enable-ula-internal-ipv6
إنشاء الشبكات الفرعية لخادم ULA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets create server-subnet1 \
--network=server-vpc1 \
--project=$projectname \
--range=192.168.0.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=internal \
--region=us-central1
سجِّل شبكة ULA الفرعية المخصّصة في متغيّر بيئة باستخدام الأمر التالي
export server_subnet1=$(gcloud compute networks subnets \
describe server-subnet1 \
--project $projectname \
--format="value(internalIpv6Prefix)" \
--region us-central1)
تشغيل الجهاز الافتراضي للخادم باستخدام عنوان IPV6 داخلي من نوع ULA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute instances create server-instance1 \
--subnet server-subnet1 \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
إضافة قاعدة جدار الحماية للسماح بالوصول إلى الخادم من العميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-client-server1 \
--direction=INGRESS --priority=1000 \
--network=server-vpc1 --action=ALLOW \
--rules=tcp --source-ranges=$client_subnet \
--project=$projectname
إضافة قاعدة جدار الحماية للسماح باستخدام IAP
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-iap-server1 \
--direction=INGRESS --priority=1000 \
--network=server-vpc1 --action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--project=$projectname
تثبيت Apache في مثيل خادم ULA
داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:
gcloud compute ssh server-instance1 \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل واجهة الجهاز الظاهري للخادم، نفِّذ الأمر التالي
sudo apt update && sudo apt -y install apache2
التأكّد من أنّ Apache قيد التشغيل
sudo systemctl status apache2
استبدال صفحة الويب الافتراضية
echo '<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>' | sudo tee /var/www/html/index.html
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
5- إعداد شبكة VPC لخادم GUA
إنشاء شبكة VPC لخادم GUA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks create server-vpc2 \
--project=$projectname \
--subnet-mode=custom --mtu=1500 \
--bgp-routing-mode=regional
إنشاء الشبكات الفرعية لخادم GUA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets create server-subnet2 \
--network=server-vpc2 \
--project=$projectname \
--range=192.168.0.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=external \
--region=us-central1
سجِّل الشبكة الفرعية GUA المعيّنة في متغيّر بيئي باستخدام الأمر التالي
export server_subnet2=$(gcloud compute networks subnets \
describe server-subnet2 \
--project $projectname \
--format="value(externalIpv6Prefix)" \
--region us-central1)
تشغيل الجهاز الافتراضي للخادم باستخدام عنوان IPV6 من نوع GUA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute instances create server-instance2 \
--subnet server-subnet2 \
--stack-type IPV4_IPV6 \
--zone us-central1-a \
--project=$projectname
إضافة قاعدة جدار الحماية للسماح بالوصول داخل الشبكة الفرعية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-client-server2 \
--direction=INGRESS \
--priority=1000 \
--network=server-vpc2 \
--action=ALLOW \
--rules=tcp --source-ranges=$client_subnet \
--project=$projectname
إضافة قاعدة جدار الحماية للسماح باستخدام IAP
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules create allow-iap-server2 \
--direction=INGRESS \
--priority=1000 \
--network=server-vpc2 \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20 \
--project=$projectname
تأكيد إمكانية الوصول إلى مثيل خادم GUA باستخدام بروتوكول SSH وتثبيت Apache
داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:
gcloud compute ssh server-instance2 \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل واجهة الجهاز الظاهري للخادم، نفِّذ الأمر التالي
sudo apt update && sudo apt -y install apache2
التأكّد من أنّ Apache قيد التشغيل
sudo systemctl status apache2
استبدال صفحة الويب الافتراضية
echo '<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>' | sudo tee /var/www/html/index.html
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
6. إنشاء مثيل بوابة
حذف المسار التلقائي لشبكة VPC الخاصة بالعميل
في إطار الاستعداد لإعادة توجيه حركة بيانات الإصدار 6 من عنوان ULA إلى الجهاز الظاهري الذي يتضمّن بطاقات شبكة متعددة وإيقاف توجيه الخروج من الإنترنت احذف المسار التلقائي ::/0 الذي يشير إلى مدخل الإنترنت التلقائي.
داخل Cloud Shell، اتّبِع الخطوات التالية:
export client_defroutename=$(gcloud compute routes list \
--project $projectname \
--format='value(name)' \
--filter="network:client-vpc AND destRange~'::/0'")
gcloud compute routes delete $client_defroutename \
--project $projectname \
--quiet
تشغيل جهاز افتراضي متعدد واجهات الشبكة (NIC) لبوابة
داخل Cloud Shell، نفِّذ ما يلي:
gcloud compute instances create gateway-instance \
--project=$projectname \
--zone=us-central1-a \
--network-interface=stack-type=IPV4_IPV6,subnet=client-subnet,no-address \
--network-interface=stack-type=IPV4_IPV6,subnet=server-subnet1,no-address \
--can-ip-forward
ضبط مثيل البوابة
في Cloud Shell، سجِّل الدخول إلى مثيل البوابة (قد يستغرق ذلك بضع دقائق لتتمكّن من استخدام SSH بنجاح أثناء بدء تشغيل المثيل):
gcloud compute ssh gateway-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل واجهة سطر الأوامر لجهاز VM الخاص بالبوابة، نفِّذ الأمر التالي لتفعيل إعادة توجيه IPv6 ومواصلة قبول إعلانات الموجه مع تفعيل إعادة التوجيه (accept_ra = 2)
sudo sysctl -w net.ipv6.conf.ens4.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens5.accept_ra=2
sudo sysctl -w net.ipv6.conf.ens4.accept_ra_defrtr=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
التحقّق من جدول توجيه الإصدار السادس من بروتوكول الإنترنت (IPv6) على الجهاز الظاهري
ip -6 route show
نموذج للناتج يعرض مسارات الشبكة الفرعية لكلّ من ULA وGUA، مع توجيه المسار التلقائي إلى واجهة GUA.
::1 dev lo proto kernel metric 256 pref medium
2600:1900:4000:7a7f:0:1:: dev ens4 proto kernel metric 256 expires 83903sec pref medium
2600:1900:4000:7a7f::/65 via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
fd20:3df:8d5c::1:0:0 dev ens5 proto kernel metric 256 expires 83904sec pref medium
fd20:3df:8d5c::/64 via fe80::4001:c0ff:fea8:1 dev ens5 proto ra metric 1024 expires 84sec pref medium
fe80::/64 dev ens5 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:c0ff:fea8:101 dev ens4 proto ra metric 1024 expires 88sec pref medium
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
7. إنشاء مسارات إلى مثيل البوابة واختبارها (باستخدام اسم المثيل)
في هذا القسم، ستضيف مسارات إلى كلّ من شبكتَي VPC للعميل والخادم باستخدام اسم مثيل البوابة كقفزة تالية.
تدوين عناوين الخادم
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute instances list \
--project $projectname \
--filter="name~server-instance" \
--format='value[separator=","](name,networkInterfaces[0].ipv6Address,networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)'
من المفترض أن يعرض هذا الأمر أسماء مثيلات الخادم وبادئات IPv6 الخاصة بها. مثال على الناتج
server-instance1,fd20:3df:8d5c:0:0:0:0:0,
server-instance2,,2600:1900:4000:71fd:0:0:0:0
دوِّن كلا العنوانين لأنّك ستستخدمهما لاحقًا في أوامر curl من مثيل العميل. لسوء الحظ، لا يمكن استخدام متغيّرات البيئة بسهولة لتخزين هذه المتغيّرات لأنّها لا تنتقل عبر جلسات SSH.
تنفيذ أمر curl من العميل إلى مثيل خادم ULA
للاطّلاع على السلوك قبل إضافة أي مسارات جديدة نفِّذ أمر curl من مثيل العميل إلى مثيل الخادم 1.
داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، نفِّذ عملية curl باستخدام عنوان ULA IPV6 الخاص بمثيل server1 (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا).
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC الخاصة بالعميل لا تتضمّن مسارًا يؤدي إلى شبكة VPC الخاصة بالخادم بعد.
لنحاول حلّ هذه المشكلة. اخرج من جلسة SSH في الوقت الحالي.
إضافة مسار مخصّص في شبكة VPC الخاصة بالعميل
لأنّ شبكة VPC الخاصة بالعميل لا تتضمّن مسارًا يؤدي إلى بادئة ULA. لنضِفها الآن.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes create client-to-server1-route \
--project=$projectname \
--destination-range=$server_subnet1 \
--network=client-vpc \
--next-hop-instance=gateway-instance \
--next-hop-instance-zone=us-central1-a
العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى. (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا)
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
سيظلّ أمر curl هذا يتجاوز المهلة لأنّ شبكة VPC الخاصة بالخادم1 لا تتضمّن مسارًا للعودة إلى شبكة VPC الخاصة بالعميل من خلال مثيل البوابة بعد.
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
إضافة مسار مخصّص في شبكة VPC لخادم ULA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes create server1-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc1 \
--next-hop-instance=gateway-instance \
--next-hop-instance-zone=us-central1-a
العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
سينجح أمر curl هذا الآن، ما يوضّح أنّه يمكنك الوصول إلى الخادم من مثيل العميل. لا يمكن تحقيق هذا الاتصال حاليًا إلا من خلال استخدام مسارات IPv6 المخصّصة مع الجهاز الافتراضي للقفزة التالية كقفزات تالية.
مثال على الناتج
<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
8. إنشاء مسارات إلى مثيل البوابة واختبارها (باستخدام عنوان المثيل)
في هذا القسم، ستضيف مسارات إلى كلّ من شبكتَي VPC للعميل والخادم باستخدام عنوان IPv6 لجهاز البوابة الافتراضي كقفزة تالية.
حذف المسارات السابقة
لنستعد البيئة إلى ما كانت عليه قبل إضافة أي مسارات مخصّصة من خلال حذف المسارات المخصّصة التي تستخدم اسم المثيل.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes delete client-to-server1-route --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route --quiet --project=$projectname
تنفيذ أمر curl من العميل إلى مثيل خادم ULA
للتأكّد من أنّه تم حذف المسارات السابقة بنجاح، نفِّذ أمر curl من مثيل العميل إلى server-instance1.
داخل Cloud Shell، سجِّل الدخول إلى الجهاز الظاهري للعميل:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، نفِّذ عملية curl باستخدام عنوان ULA IPV6 الخاص بمثيل server1 (يضبط الأمر مهلة قصيرة تبلغ 5 ثوانٍ لتجنُّب انتظار curl لفترة طويلة جدًا).
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC الخاصة بالعميل لم تعُد تتضمّن مسارًا يؤدي إلى شبكة VPC الخاصة بالخادم.
الحصول على عناوين IPv6 الخاصة بمثيل البوابة
يجب الحصول على عناوين IPv6 الخاصة بالجهاز الافتراضي للبوابة قبل أن نتمكّن من كتابة مسارات تستخدم next-hop-address.
داخل Cloud Shell، اتّبِع الخطوات التالية:
export gateway_ula_address=$(gcloud compute instances \
describe gateway-instance \
--project $projectname \
--format='value(networkInterfaces[1].ipv6Address)')
export gateway_gua_address=$(gcloud compute instances \
describe gateway-instance \
--project $projectname \
--format='value(networkInterfaces[0].ipv6AccessConfigs[0].externalIpv6)')
إضافة مسار مخصّص في شبكة VPC الخاصة بالعميل
يمكننا الآن إعادة إضافة المسار في شبكة VPC الخاصة بالعميل إلى بادئة ULA ولكن باستخدام عنوان GUA الخاص بالبوابة كعنوان الوجهة التالية.
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes create client-to-server1-route \
--project=$projectname \
--destination-range=$server_subnet1 \
--network=client-vpc \
--next-hop-address=$gateway_gua_address
العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
وكما هو متوقّع، لا يزال أمر curl هذا ينتهي بانتهاء المهلة لأنّ شبكة VPC الخاصة بالخادم1 لا تتضمّن مسارًا للعودة إلى شبكة VPC الخاصة بالعميل من خلال مثيل البوابة حتى الآن.
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
إضافة مسار مخصّص في شبكة VPC لخادم ULA
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes create server1-to-client-route \
--project=$projectname \
--destination-range=$client_subnet \
--network=server-vpc1 \
--next-hop-address=$gateway_ula_address
العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، حاوِل إرسال طلب curl إلى مثيل الخادم مرة أخرى.
curl -m 5.0 -g -6 'http://[ULA-ipv6-address-of-server1]:80/'
سينجح أمر curl هذا الآن، ما يوضّح أنّه يمكنك الوصول إلى الخادم من مثيل العميل. لا يمكن تحقيق إمكانية الاتصال هذه الآن إلا من خلال استخدام مسارات IPv6 المخصّصة مع next-hop-address كقفزات تالية.
مثال على الناتج
<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[fd20:3df:8d5c:0:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server1!</h1></body></html>
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
9. إنشاء مسار إلى بوابة الإنترنت واختباره
أثناء إعداد هذا المختبر، لنختبر أيضًا وظيفة السمة الجديدة الخاصة بالقفزة التالية: next-hop-gateway.
تنفيذ أمر curl من العميل إلى مثيل خادم GUA
للاطّلاع على السلوك قبل إضافة أي مسارات جديدة نفِّذ أمر curl من مثيل العميل إلى عنوان IP الخاص بالخادم 2.
داخل Cloud Shell، سجِّل الدخول إلى مثيل العميل:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، نفِّذ عملية curl باتجاه نقطة نهاية IPv6
curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'
من المفترض أن تنتهي مهلة أمر curl هذا لأنّ شبكة VPC للعميل لا تتضمّن سوى مسار الشبكة الفرعية ومسارًا إلى شبكة VPC الخاصة بالخادم 1. للوصول إلى نطاق عنوان GUA الخاص بشبكة VPC للخادم 2، عليك استخدام بوابة الإنترنت التلقائية من خلال مسار مخصّص.
اخرج من جلسة SSH لمتابعة الدرس البرمجي.
إضافة مسار مدخل مخصّص في شبكة VPC الخاصة بالعميل
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes create client-to-server2-route \
--project=$projectname \
--destination-range=$server_subnet2 \
--network=client-vpc \
--next-hop-gateway=default-internet-gateway
العودة إلى مثيل العميل باستخدام بروتوكول النقل الآمن:
gcloud compute ssh client-instance \
--project=$projectname \
--zone=us-central1-a \
--tunnel-through-iap
داخل مثيل العميل، كرِّر الأمر curl نفسه
curl -m 5.0 -g -6 'http://[GUA-ipv6-address-of-server2]:80/'
من المفترض أن ينجح أمر curl هذا الآن في عرض رسالة الترحيب المخصّصة، ما يشير إلى أنّه يمكنك الوصول بنجاح إلى عنوان IPv6 الخاص بالخادم الآخر من خلال بوابة الإنترنت التلقائية.
مثال على الناتج:
<user id>@client-instance:~$ curl -m 5.0 -g -6 'http://[2600:1900:4000:71fd:0:0:0:0]:80/'
<!doctype html><html><body><h1>Hello World! From Server2!</h1></body></html>
اخرج من جلسة SSH للانتقال إلى قسم التنظيف في المختبر.
10. تَنظيم
تنظيف الأجهزة الافتراضية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute instances delete client-instance --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete server-instance1 --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete server-instance2 --zone us-central1-a --quiet --project=$projectname
gcloud compute instances delete gateway-instance --zone us-central1-a --quiet --project=$projectname
تنظيف الشبكات الفرعية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks subnets delete client-subnet --region=us-central1 --quiet --project=$projectname
gcloud compute networks subnets delete server-subnet1 --region=us-central1 --quiet --project=$projectname
gcloud compute networks subnets delete server-subnet2 --region=us-central1 --quiet --project=$projectname
تنظيف قواعد جدار الحماية
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute firewall-rules delete allow-iap-client --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server1 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-iap-server2 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-gateway-client --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server1 --quiet --project=$projectname
gcloud compute firewall-rules delete allow-client-server2 --quiet --project=$projectname
تنظيف المسارات المخصّصة
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute routes delete client-to-server1-route --quiet --project=$projectname
gcloud compute routes delete client-to-server2-route --quiet --project=$projectname
gcloud compute routes delete server1-to-client-route --quiet --project=$projectname
تنظيف السحابات الخاصة الافتراضية (VPC)
داخل Cloud Shell، اتّبِع الخطوات التالية:
gcloud compute networks delete client-vpc --quiet --project=$projectname
gcloud compute networks delete server-vpc1 --quiet --project=$projectname
gcloud compute networks delete server-vpc2 --quiet --project=$projectname
11. تهانينا
لقد استخدمت بنجاح مسارات IPv6 الثابتة المخصّصة مع ضبط القفزات التالية على next-hop-gateway وnext-hop-instance وnext-hop-address. لقد تحقّقت أيضًا من إمكانية التواصل عبر بروتوكول IPv6 بشكل تام بين الأطراف باستخدام هذه المسارات.
ما هي الخطوات التالية؟
اطّلِع على بعض دروس الترميز التطبيقية هذه...
- الوصول إلى Google APIs من المضيفين داخل المؤسسة باستخدام عناوين الإصدار السادس من بروتوكول الإنترنت (IPv6)
- خيارات تحديد عناوين IP باستخدام الإصدار الرابع من بروتوكول الإنترنت (IPv4) والإصدار السادس من بروتوكول الإنترنت (IPv6)